From e50ff0e16fb5a4a6b11b94cb31de8e01d73cb7ec Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Sun, 26 Apr 2026 19:34:03 +0800 Subject: [PATCH] chore: update static media asset paths --- .../{226.6548e7b4.css => 226.05f9240b.css} | 0 ...26.6548e7b4.css.gz => 226.05f9240b.css.gz} | Bin 1723 -> 1723 bytes .../{428.8044ed41.css => 428.09003661.css} | 0 ...28.8044ed41.css.gz => 428.09003661.css.gz} | Bin 4026 -> 4026 bytes .../css/{51.1dd65d6c.css => 51.9f054b72.css} | 0 ...{51.1dd65d6c.css.gz => 51.9f054b72.css.gz} | Bin 1796 -> 1796 bytes .../{577.953080b6.css => 577.e5953cea.css} | 0 ...77.953080b6.css.gz => 577.e5953cea.css.gz} | Bin 11335 -> 11335 bytes .../{604.6b8baf9e.css => 604.f98ea32d.css} | 0 ...04.6b8baf9e.css.gz => 604.f98ea32d.css.gz} | Bin 2503 -> 2503 bytes .../{718.d0974d1c.css => 718.8a9bac1a.css} | 0 ...18.d0974d1c.css.gz => 718.8a9bac1a.css.gz} | Bin 8627 -> 8627 bytes .../{728.6b8baf9e.css => 728.f98ea32d.css} | 0 ...28.6b8baf9e.css.gz => 728.f98ea32d.css.gz} | Bin 2503 -> 2503 bytes frontend-dist/css/740.a94dbb46.css.gz | Bin 5880 -> 5880 bytes .../css/{82.91351de4.css => 82.9088467b.css} | 0 ...{82.91351de4.css.gz => 82.9088467b.css.gz} | Bin 13153 -> 13153 bytes .../{833.95983fa6.css => 833.3c02d330.css} | 0 ...33.95983fa6.css.gz => 833.3c02d330.css.gz} | Bin 4320 -> 4320 bytes .../{862.d86e6635.css => 862.57a3b1c1.css} | 0 ...62.d86e6635.css.gz => 862.57a3b1c1.css.gz} | Bin 2233 -> 2233 bytes .../{916.129684a5.css => 916.6f089bea.css} | 0 ...16.129684a5.css.gz => 916.6f089bea.css.gz} | Bin 9241 -> 9241 bytes .../{917.8529ad1e.css => 917.939d7cec.css} | 0 ...17.8529ad1e.css.gz => 917.939d7cec.css.gz} | Bin 1836 -> 1836 bytes .../{app.75711fde.css => app.0cd6595e.css} | 0 ...pp.75711fde.css.gz => app.0cd6595e.css.gz} | Bin 3981 -> 3981 bytes .../css/chunk-vendors.f9cd4701.css.gz | Bin 9747 -> 9747 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 509 -> 520 bytes frontend-dist/js/226.ec43855c.js.gz | Bin 3448 -> 0 bytes frontend-dist/js/226.ec43855c.js.map | 1 - frontend-dist/js/226.ec43855c.js.map.gz | Bin 9256 -> 0 bytes .../js/{226.ec43855c.js => 226.f6040a84.js} | 2 +- frontend-dist/js/226.f6040a84.js.gz | Bin 0 -> 3449 bytes frontend-dist/js/226.f6040a84.js.map | 1 + frontend-dist/js/226.f6040a84.js.map.gz | Bin 0 -> 9207 bytes frontend-dist/js/309.b7dca603.js.gz | Bin 4310 -> 0 bytes frontend-dist/js/309.b7dca603.js.map | 1 - frontend-dist/js/309.b7dca603.js.map.gz | Bin 11806 -> 0 bytes .../js/{309.b7dca603.js => 309.bfaaa238.js} | 2 +- frontend-dist/js/309.bfaaa238.js.gz | Bin 0 -> 4310 bytes frontend-dist/js/309.bfaaa238.js.map | 1 + frontend-dist/js/309.bfaaa238.js.map.gz | Bin 0 -> 11744 bytes .../js/{51.6e7bf298.js => 51.0c776d33.js} | 2 +- frontend-dist/js/51.0c776d33.js.gz | Bin 0 -> 3363 bytes frontend-dist/js/51.0c776d33.js.map | 1 + frontend-dist/js/51.0c776d33.js.map.gz | Bin 0 -> 9212 bytes frontend-dist/js/51.6e7bf298.js.gz | Bin 3364 -> 0 bytes frontend-dist/js/51.6e7bf298.js.map | 1 - frontend-dist/js/51.6e7bf298.js.map.gz | Bin 9268 -> 0 bytes .../js/{577.b10c6bbc.js => 577.95699028.js} | 2 +- ...{577.b10c6bbc.js.gz => 577.95699028.js.gz} | Bin 24745 -> 24745 bytes frontend-dist/js/577.95699028.js.map | 1 + frontend-dist/js/577.95699028.js.map.gz | Bin 0 -> 67893 bytes frontend-dist/js/577.b10c6bbc.js.map | 1 - frontend-dist/js/577.b10c6bbc.js.map.gz | Bin 67955 -> 0 bytes frontend-dist/js/600.08192622.js.map | 1 - frontend-dist/js/600.08192622.js.map.gz | Bin 10858 -> 0 bytes .../js/{600.08192622.js => 600.1faa1202.js} | 2 +- ...{600.08192622.js.gz => 600.1faa1202.js.gz} | Bin 3864 -> 3863 bytes frontend-dist/js/600.1faa1202.js.map | 1 + frontend-dist/js/600.1faa1202.js.map.gz | Bin 0 -> 10794 bytes .../js/{604.b966c795.js => 604.ae4825a8.js} | 2 +- frontend-dist/js/604.ae4825a8.js.gz | Bin 0 -> 2574 bytes ...04.b966c795.js.map => 604.ae4825a8.js.map} | 2 +- frontend-dist/js/604.ae4825a8.js.map.gz | Bin 0 -> 6983 bytes frontend-dist/js/604.b966c795.js.gz | Bin 2575 -> 0 bytes frontend-dist/js/604.b966c795.js.map.gz | Bin 6984 -> 0 bytes frontend-dist/js/718.27080555.js.map.gz | Bin 163616 -> 0 bytes .../js/{718.27080555.js => 718.62a39893.js} | 2 +- ...{718.27080555.js.gz => 718.62a39893.js.gz} | Bin 47862 -> 47863 bytes ...18.27080555.js.map => 718.62a39893.js.map} | 2 +- frontend-dist/js/718.62a39893.js.map.gz | Bin 0 -> 163576 bytes frontend-dist/js/728.c37f6352.js.gz | Bin 2599 -> 0 bytes .../js/{728.c37f6352.js => 728.c60439c5.js} | 2 +- frontend-dist/js/728.c60439c5.js.gz | Bin 0 -> 2599 bytes ...28.c37f6352.js.map => 728.c60439c5.js.map} | 2 +- ...f6352.js.map.gz => 728.c60439c5.js.map.gz} | Bin 7228 -> 7228 bytes .../js/{82.ace43e99.js => 82.00af9bec.js} | 2 +- .../{82.ace43e99.js.gz => 82.00af9bec.js.gz} | Bin 57110 -> 57110 bytes ...{82.ace43e99.js.map => 82.00af9bec.js.map} | 2 +- frontend-dist/js/82.00af9bec.js.map.gz | Bin 0 -> 143120 bytes frontend-dist/js/82.ace43e99.js.map.gz | Bin 143229 -> 0 bytes .../js/{862.d9125cf7.js => 862.2df18983.js} | 2 +- frontend-dist/js/862.2df18983.js.gz | Bin 0 -> 2589 bytes ...62.d9125cf7.js.map => 862.2df18983.js.map} | 2 +- ...25cf7.js.map.gz => 862.2df18983.js.map.gz} | Bin 6541 -> 6541 bytes frontend-dist/js/862.d9125cf7.js.gz | Bin 2588 -> 0 bytes .../js/{916.9fe1890d.js => 916.bc5cc1d8.js} | 2 +- ...{916.9fe1890d.js.gz => 916.bc5cc1d8.js.gz} | Bin 93291 -> 93291 bytes ...16.9fe1890d.js.map => 916.bc5cc1d8.js.map} | 2 +- ...1890d.js.map.gz => 916.bc5cc1d8.js.map.gz} | Bin 334845 -> 334634 bytes .../js/{917.b77a6783.js => 917.6a48878d.js} | 2 +- ...{917.b77a6783.js.gz => 917.6a48878d.js.gz} | Bin 3588 -> 3588 bytes frontend-dist/js/917.6a48878d.js.map | 1 + frontend-dist/js/917.6a48878d.js.map.gz | Bin 0 -> 9501 bytes frontend-dist/js/917.b77a6783.js.map | 1 - frontend-dist/js/917.b77a6783.js.map.gz | Bin 9553 -> 0 bytes .../js/{app.dbe4b0ca.js => app.8f9301fc.js} | 4 ++-- frontend-dist/js/app.8f9301fc.js.gz | Bin 0 -> 22397 bytes frontend-dist/js/app.8f9301fc.js.map | 1 + frontend-dist/js/app.8f9301fc.js.map.gz | Bin 0 -> 16560 bytes frontend-dist/js/app.dbe4b0ca.js.gz | Bin 22381 -> 0 bytes frontend-dist/js/app.dbe4b0ca.js.map | 1 - frontend-dist/js/app.dbe4b0ca.js.map.gz | Bin 16625 -> 0 bytes frontend-dist/js/chunk-vendors.82c104b1.js.gz | Bin 793502 -> 793502 bytes .../js/chunk-vendors.82c104b1.js.map | 2 +- .../js/chunk-vendors.82c104b1.js.map.gz | Bin 2090469 -> 2090629 bytes frontend-dist/static/{ => media}/404.png | Bin frontend-dist/static/{ => media}/BlockImg.png | Bin .../static/{ => media}/WhiteListOn.png | Bin .../{ => static/media}/logo-dark.png | Bin frontend-dist/{ => static/media}/logo.png | Bin functions/file/fileTools.js | 8 ++++---- 115 files changed, 33 insertions(+), 33 deletions(-) rename frontend-dist/css/{226.6548e7b4.css => 226.05f9240b.css} (100%) rename frontend-dist/css/{226.6548e7b4.css.gz => 226.05f9240b.css.gz} (93%) rename frontend-dist/css/{428.8044ed41.css => 428.09003661.css} (100%) rename frontend-dist/css/{428.8044ed41.css.gz => 428.09003661.css.gz} (88%) rename frontend-dist/css/{51.1dd65d6c.css => 51.9f054b72.css} (100%) rename frontend-dist/css/{51.1dd65d6c.css.gz => 51.9f054b72.css.gz} (95%) rename frontend-dist/css/{577.953080b6.css => 577.e5953cea.css} (100%) rename frontend-dist/css/{577.953080b6.css.gz => 577.e5953cea.css.gz} (98%) rename frontend-dist/css/{604.6b8baf9e.css => 604.f98ea32d.css} (100%) rename frontend-dist/css/{604.6b8baf9e.css.gz => 604.f98ea32d.css.gz} (96%) rename frontend-dist/css/{718.d0974d1c.css => 718.8a9bac1a.css} (100%) rename frontend-dist/css/{718.d0974d1c.css.gz => 718.8a9bac1a.css.gz} (99%) rename frontend-dist/css/{728.6b8baf9e.css => 728.f98ea32d.css} (100%) rename frontend-dist/css/{728.6b8baf9e.css.gz => 728.f98ea32d.css.gz} (96%) rename frontend-dist/css/{82.91351de4.css => 82.9088467b.css} (100%) rename frontend-dist/css/{82.91351de4.css.gz => 82.9088467b.css.gz} (97%) rename frontend-dist/css/{833.95983fa6.css => 833.3c02d330.css} (100%) rename frontend-dist/css/{833.95983fa6.css.gz => 833.3c02d330.css.gz} (98%) rename frontend-dist/css/{862.d86e6635.css => 862.57a3b1c1.css} (100%) rename frontend-dist/css/{862.d86e6635.css.gz => 862.57a3b1c1.css.gz} (89%) rename frontend-dist/css/{916.129684a5.css => 916.6f089bea.css} (100%) rename frontend-dist/css/{916.129684a5.css.gz => 916.6f089bea.css.gz} (97%) rename frontend-dist/css/{917.8529ad1e.css => 917.939d7cec.css} (100%) rename frontend-dist/css/{917.8529ad1e.css.gz => 917.939d7cec.css.gz} (93%) rename frontend-dist/css/{app.75711fde.css => app.0cd6595e.css} (100%) rename frontend-dist/css/{app.75711fde.css.gz => app.0cd6595e.css.gz} (91%) delete mode 100644 frontend-dist/js/226.ec43855c.js.gz delete mode 100644 frontend-dist/js/226.ec43855c.js.map delete mode 100644 frontend-dist/js/226.ec43855c.js.map.gz rename frontend-dist/js/{226.ec43855c.js => 226.f6040a84.js} (99%) create mode 100644 frontend-dist/js/226.f6040a84.js.gz create mode 100644 frontend-dist/js/226.f6040a84.js.map create mode 100644 frontend-dist/js/226.f6040a84.js.map.gz delete mode 100644 frontend-dist/js/309.b7dca603.js.gz delete mode 100644 frontend-dist/js/309.b7dca603.js.map delete mode 100644 frontend-dist/js/309.b7dca603.js.map.gz rename frontend-dist/js/{309.b7dca603.js => 309.bfaaa238.js} (99%) create mode 100644 frontend-dist/js/309.bfaaa238.js.gz create mode 100644 frontend-dist/js/309.bfaaa238.js.map create mode 100644 frontend-dist/js/309.bfaaa238.js.map.gz rename frontend-dist/js/{51.6e7bf298.js => 51.0c776d33.js} (99%) create mode 100644 frontend-dist/js/51.0c776d33.js.gz create mode 100644 frontend-dist/js/51.0c776d33.js.map create mode 100644 frontend-dist/js/51.0c776d33.js.map.gz delete mode 100644 frontend-dist/js/51.6e7bf298.js.gz delete mode 100644 frontend-dist/js/51.6e7bf298.js.map delete mode 100644 frontend-dist/js/51.6e7bf298.js.map.gz rename frontend-dist/js/{577.b10c6bbc.js => 577.95699028.js} (99%) rename frontend-dist/js/{577.b10c6bbc.js.gz => 577.95699028.js.gz} (90%) create mode 100644 frontend-dist/js/577.95699028.js.map create mode 100644 frontend-dist/js/577.95699028.js.map.gz delete mode 100644 frontend-dist/js/577.b10c6bbc.js.map delete mode 100644 frontend-dist/js/577.b10c6bbc.js.map.gz delete mode 100644 frontend-dist/js/600.08192622.js.map delete mode 100644 frontend-dist/js/600.08192622.js.map.gz rename frontend-dist/js/{600.08192622.js => 600.1faa1202.js} (99%) rename frontend-dist/js/{600.08192622.js.gz => 600.1faa1202.js.gz} (90%) create mode 100644 frontend-dist/js/600.1faa1202.js.map create mode 100644 frontend-dist/js/600.1faa1202.js.map.gz rename frontend-dist/js/{604.b966c795.js => 604.ae4825a8.js} (99%) create mode 100644 frontend-dist/js/604.ae4825a8.js.gz rename frontend-dist/js/{604.b966c795.js.map => 604.ae4825a8.js.map} (99%) create mode 100644 frontend-dist/js/604.ae4825a8.js.map.gz delete mode 100644 frontend-dist/js/604.b966c795.js.gz delete mode 100644 frontend-dist/js/604.b966c795.js.map.gz delete mode 100644 frontend-dist/js/718.27080555.js.map.gz rename frontend-dist/js/{718.27080555.js => 718.62a39893.js} (99%) rename frontend-dist/js/{718.27080555.js.gz => 718.62a39893.js.gz} (99%) rename frontend-dist/js/{718.27080555.js.map => 718.62a39893.js.map} (81%) create mode 100644 frontend-dist/js/718.62a39893.js.map.gz delete mode 100644 frontend-dist/js/728.c37f6352.js.gz rename frontend-dist/js/{728.c37f6352.js => 728.c60439c5.js} (99%) create mode 100644 frontend-dist/js/728.c60439c5.js.gz rename frontend-dist/js/{728.c37f6352.js.map => 728.c60439c5.js.map} (99%) rename frontend-dist/js/{728.c37f6352.js.map.gz => 728.c60439c5.js.map.gz} (96%) rename frontend-dist/js/{82.ace43e99.js => 82.00af9bec.js} (99%) rename frontend-dist/js/{82.ace43e99.js.gz => 82.00af9bec.js.gz} (99%) rename frontend-dist/js/{82.ace43e99.js.map => 82.00af9bec.js.map} (53%) create mode 100644 frontend-dist/js/82.00af9bec.js.map.gz delete mode 100644 frontend-dist/js/82.ace43e99.js.map.gz rename frontend-dist/js/{862.d9125cf7.js => 862.2df18983.js} (99%) create mode 100644 frontend-dist/js/862.2df18983.js.gz rename frontend-dist/js/{862.d9125cf7.js.map => 862.2df18983.js.map} (99%) rename frontend-dist/js/{862.d9125cf7.js.map.gz => 862.2df18983.js.map.gz} (96%) delete mode 100644 frontend-dist/js/862.d9125cf7.js.gz rename frontend-dist/js/{916.9fe1890d.js => 916.bc5cc1d8.js} (99%) rename frontend-dist/js/{916.9fe1890d.js.gz => 916.bc5cc1d8.js.gz} (99%) rename frontend-dist/js/{916.9fe1890d.js.map => 916.bc5cc1d8.js.map} (79%) rename frontend-dist/js/{916.9fe1890d.js.map.gz => 916.bc5cc1d8.js.map.gz} (79%) rename frontend-dist/js/{917.b77a6783.js => 917.6a48878d.js} (99%) rename frontend-dist/js/{917.b77a6783.js.gz => 917.6a48878d.js.gz} (95%) create mode 100644 frontend-dist/js/917.6a48878d.js.map create mode 100644 frontend-dist/js/917.6a48878d.js.map.gz delete mode 100644 frontend-dist/js/917.b77a6783.js.map delete mode 100644 frontend-dist/js/917.b77a6783.js.map.gz rename frontend-dist/js/{app.dbe4b0ca.js => app.8f9301fc.js} (86%) create mode 100644 frontend-dist/js/app.8f9301fc.js.gz create mode 100644 frontend-dist/js/app.8f9301fc.js.map create mode 100644 frontend-dist/js/app.8f9301fc.js.map.gz delete mode 100644 frontend-dist/js/app.dbe4b0ca.js.gz delete mode 100644 frontend-dist/js/app.dbe4b0ca.js.map delete mode 100644 frontend-dist/js/app.dbe4b0ca.js.map.gz rename frontend-dist/static/{ => media}/404.png (100%) rename frontend-dist/static/{ => media}/BlockImg.png (100%) rename frontend-dist/static/{ => media}/WhiteListOn.png (100%) rename frontend-dist/{ => static/media}/logo-dark.png (100%) rename frontend-dist/{ => static/media}/logo.png (100%) diff --git a/frontend-dist/css/226.6548e7b4.css b/frontend-dist/css/226.05f9240b.css similarity index 100% rename from frontend-dist/css/226.6548e7b4.css rename to frontend-dist/css/226.05f9240b.css diff --git a/frontend-dist/css/226.6548e7b4.css.gz b/frontend-dist/css/226.05f9240b.css.gz similarity index 93% rename from frontend-dist/css/226.6548e7b4.css.gz rename to frontend-dist/css/226.05f9240b.css.gz index 31721599f6a8524ffd5981af9675ed2cb2b2e792..1890701de9e062d78c2a705c8e62ffc65ae2caf8 100644 GIT binary patch delta 19 YcmdnZyPKCwzMF#q1ek<3a&2S-04jw8)Bpeg delta 19 YcmdnZyPKCwzMF#q1emxsa&2S-04i7m%K!iX diff --git a/frontend-dist/css/428.8044ed41.css b/frontend-dist/css/428.09003661.css similarity index 100% rename from frontend-dist/css/428.8044ed41.css rename to frontend-dist/css/428.09003661.css diff --git a/frontend-dist/css/428.8044ed41.css.gz b/frontend-dist/css/428.09003661.css.gz similarity index 88% rename from frontend-dist/css/428.8044ed41.css.gz rename to frontend-dist/css/428.09003661.css.gz index cda74beef54dcede37fc52c1b25366080dd93948..deed95b7c3554bf5ccfcb8a68929a69c5ca3b0d2 100644 GIT binary patch delta 19 Ycmdlbze}D=zMF#q1ek<3a&6!T04&S{{r~^~ delta 19 Ycmdlbze}D=zMF#q1emxsa&6!T04$#a^#A|> diff --git a/frontend-dist/css/51.1dd65d6c.css b/frontend-dist/css/51.9f054b72.css similarity index 100% rename from frontend-dist/css/51.1dd65d6c.css rename to frontend-dist/css/51.9f054b72.css diff --git a/frontend-dist/css/51.1dd65d6c.css.gz b/frontend-dist/css/51.9f054b72.css.gz similarity index 95% rename from frontend-dist/css/51.1dd65d6c.css.gz rename to frontend-dist/css/51.9f054b72.css.gz index 2f23a2ec57de58aef8713da11f8025c5b2675b14..a29a7bcafe4438fc09b5cd4488748f586ceb87c4 100644 GIT binary patch delta 19 XcmZqSYvJRP@8)0t0Vd&%T))@=BYgw0 delta 19 XcmZqSYvJRP@8)0t0Vb}ET))@=BTxgV diff --git a/frontend-dist/css/577.953080b6.css b/frontend-dist/css/577.e5953cea.css similarity index 100% rename from frontend-dist/css/577.953080b6.css rename to frontend-dist/css/577.e5953cea.css diff --git a/frontend-dist/css/577.953080b6.css.gz b/frontend-dist/css/577.e5953cea.css.gz similarity index 98% rename from frontend-dist/css/577.953080b6.css.gz rename to frontend-dist/css/577.e5953cea.css.gz index 2186d3d5f1f4380de8f53b51e6021e939462551d..ea0d43815749385848c40939fdb8ed87a75548c3 100644 GIT binary patch delta 19 YcmX>eaXf-czMF#q1ek<3a@pzt05xd@Gynhq delta 19 YcmX>eaXf-czMF#q1emxsa@pzt05v=WD*ylh diff --git a/frontend-dist/css/604.6b8baf9e.css b/frontend-dist/css/604.f98ea32d.css similarity index 100% rename from frontend-dist/css/604.6b8baf9e.css rename to frontend-dist/css/604.f98ea32d.css diff --git a/frontend-dist/css/604.6b8baf9e.css.gz b/frontend-dist/css/604.f98ea32d.css.gz similarity index 96% rename from frontend-dist/css/604.6b8baf9e.css.gz rename to frontend-dist/css/604.f98ea32d.css.gz index ea25342200c2a4fe04ec172e783f3e2f003a711e..bc55a51433e55c8fff5611a415931cf54bbad596 100644 GIT binary patch delta 19 YcmX>ud|a4IzMF#q1ek<3a_!{=04*E@2LJ#7 delta 19 YcmX>ud|a4IzMF#q1emxsa_!{=04(nV{r~^~ diff --git a/frontend-dist/css/718.d0974d1c.css b/frontend-dist/css/718.8a9bac1a.css similarity index 100% rename from frontend-dist/css/718.d0974d1c.css rename to frontend-dist/css/718.8a9bac1a.css diff --git a/frontend-dist/css/718.d0974d1c.css.gz b/frontend-dist/css/718.8a9bac1a.css.gz similarity index 99% rename from frontend-dist/css/718.d0974d1c.css.gz rename to frontend-dist/css/718.8a9bac1a.css.gz index be76d36c9eb6272dab6b2a83d99aa65196885584..a3e2b08a7bf7d3fc5849d36fcbcd0210cb871bd9 100644 GIT binary patch delta 19 Ycmdn&yxEyczMF#q1ek<3a;;PZ05F^cLjV8( delta 19 Ycmdn&yxEyczMF#q1emxsa;;PZ05ER^IsgCw diff --git a/frontend-dist/css/728.6b8baf9e.css b/frontend-dist/css/728.f98ea32d.css similarity index 100% rename from frontend-dist/css/728.6b8baf9e.css rename to frontend-dist/css/728.f98ea32d.css diff --git a/frontend-dist/css/728.6b8baf9e.css.gz b/frontend-dist/css/728.f98ea32d.css.gz similarity index 96% rename from frontend-dist/css/728.6b8baf9e.css.gz rename to frontend-dist/css/728.f98ea32d.css.gz index ea25342200c2a4fe04ec172e783f3e2f003a711e..bc55a51433e55c8fff5611a415931cf54bbad596 100644 GIT binary patch delta 19 YcmX>ud|a4IzMF#q1ek<3a_!{=04*E@2LJ#7 delta 19 YcmX>ud|a4IzMF#q1emxsa_!{=04(nV{r~^~ diff --git a/frontend-dist/css/740.a94dbb46.css.gz b/frontend-dist/css/740.a94dbb46.css.gz index 257345c088743fc03b9451207f70c043ba499602..a2d2204f379d5452bc6e033cc88525f7ecdef0a0 100644 GIT binary patch delta 19 YcmeyN`$LyYzMF#q1ek<3a=jA+05{_V+W-In delta 19 YcmeyN`$LyYzMF#q1emxsa=jA+05`S-(f|Me diff --git a/frontend-dist/css/82.91351de4.css b/frontend-dist/css/82.9088467b.css similarity index 100% rename from frontend-dist/css/82.91351de4.css rename to frontend-dist/css/82.9088467b.css diff --git a/frontend-dist/css/82.91351de4.css.gz b/frontend-dist/css/82.9088467b.css.gz similarity index 97% rename from frontend-dist/css/82.91351de4.css.gz rename to frontend-dist/css/82.9088467b.css.gz index 4b37d2bd0c30923bbfb5e4e01262fe9d1b4eebfc..e1248c7520a1d9658bf7406bfe5f38c6ad219659 100644 GIT binary patch delta 19 YcmaEu_Arf0zMF#q1ek<3a)lcM06QoIr2qf` delta 19 YcmaEu_Arf0zMF#q1emxsa)lcM06O~woB#j- diff --git a/frontend-dist/css/833.95983fa6.css b/frontend-dist/css/833.3c02d330.css similarity index 100% rename from frontend-dist/css/833.95983fa6.css rename to frontend-dist/css/833.3c02d330.css diff --git a/frontend-dist/css/833.95983fa6.css.gz b/frontend-dist/css/833.3c02d330.css.gz similarity index 98% rename from frontend-dist/css/833.95983fa6.css.gz rename to frontend-dist/css/833.3c02d330.css.gz index 74901a976f04ed35fc71ae18b9f66669532af851..1731d57bd0e5fb214c87f361947d36b0504fd4d3 100644 GIT binary patch delta 19 YcmaE$_&||MzMF#q1ek<3a$OSu05Y`%bpQYW delta 19 YcmaE$_&||MzMF#q1emxsa$OSu05XUKYybcN diff --git a/frontend-dist/css/862.d86e6635.css b/frontend-dist/css/862.57a3b1c1.css similarity index 100% rename from frontend-dist/css/862.d86e6635.css rename to frontend-dist/css/862.57a3b1c1.css diff --git a/frontend-dist/css/862.d86e6635.css.gz b/frontend-dist/css/862.57a3b1c1.css.gz similarity index 89% rename from frontend-dist/css/862.d86e6635.css.gz rename to frontend-dist/css/862.57a3b1c1.css.gz index 99f4d7c42fa02f779a32f8a7730bce78f84c7bff..4c977e1eecd5f6b37359f7a257b012e9b74b2422 100644 GIT binary patch delta 19 YcmdlfxKofzzMF#q1ek<3a;@h804l=+*Z=?k delta 19 YcmdlfxKofzzMF#q1emxsa;@h804kOP&j0`b diff --git a/frontend-dist/css/916.129684a5.css b/frontend-dist/css/916.6f089bea.css similarity index 100% rename from frontend-dist/css/916.129684a5.css rename to frontend-dist/css/916.6f089bea.css diff --git a/frontend-dist/css/916.129684a5.css.gz b/frontend-dist/css/916.6f089bea.css.gz similarity index 97% rename from frontend-dist/css/916.129684a5.css.gz rename to frontend-dist/css/916.6f089bea.css.gz index e2c484c7c7df146f1f16c1d7984df656263a91ca..872657046c57589bb1d6addf57ef36debc2b65f0 100644 GIT binary patch delta 19 YcmbQ~G1G%fzMF#q1ek<3a`CGG04!|-f&c&j delta 19 YcmbQ~G1G%fzMF#q1emxsa`CGG04zWQc>n+a diff --git a/frontend-dist/css/917.8529ad1e.css b/frontend-dist/css/917.939d7cec.css similarity index 100% rename from frontend-dist/css/917.8529ad1e.css rename to frontend-dist/css/917.939d7cec.css diff --git a/frontend-dist/css/917.8529ad1e.css.gz b/frontend-dist/css/917.939d7cec.css.gz similarity index 93% rename from frontend-dist/css/917.8529ad1e.css.gz rename to frontend-dist/css/917.939d7cec.css.gz index 553a3a52bba2ec4be1155bf5c7eae5d33fd8257c..2e7f0923b04eac6fac2ed92d2ae2442350b916cb 100644 GIT binary patch delta 19 YcmZ3(w}y{PzMF#q1ek<3aw)L`04Ht(DgXcg delta 19 YcmZ3(w}y{PzMF#q1emxsaw)L`04G5MApigX diff --git a/frontend-dist/css/app.75711fde.css b/frontend-dist/css/app.0cd6595e.css similarity index 100% rename from frontend-dist/css/app.75711fde.css rename to frontend-dist/css/app.0cd6595e.css diff --git a/frontend-dist/css/app.75711fde.css.gz b/frontend-dist/css/app.0cd6595e.css.gz similarity index 91% rename from frontend-dist/css/app.75711fde.css.gz rename to frontend-dist/css/app.0cd6595e.css.gz index f9bfb5a73c688fbeb12fb2d08753fbc8dfbb82a0..8c67d127eb2258e748b650ddffea4f5c3a599ef1 100644 GIT binary patch delta 19 XcmeB`@0I70@8)0t0Vd&%T+RFdCLRNK delta 19 XcmeB`@0I70@8)0t0Vb}ET+RFdCGi7p diff --git a/frontend-dist/css/chunk-vendors.f9cd4701.css.gz b/frontend-dist/css/chunk-vendors.f9cd4701.css.gz index 4e504129fde5618f98bba28ce438fc5799380cd0..273b9df0735bee2240fcc0db8962f843088f9cfa 100644 GIT binary patch delta 19 YcmbR2GuekrzMF#q1ek<3a&f8w04x&&dH?_b delta 19 YcmbR2GuekrzMF#q1emxsa&f8w04wGLaR2}S diff --git a/frontend-dist/index.html b/frontend-dist/index.html index f124a610..a4e618ed 100644 --- a/frontend-dist/index.html +++ b/frontend-dist/index.html @@ -1 +1 @@ -
PgAj83d1dP*x7R z<`wup4rG)Nu%(pI!Va(o&r)k&R!*X95V^r#1-YS^DpMF3=?EY&ui#YBl`I&aQFIvT zQi__6lypFm``QG6?{-e zPFv~S5q;K`Mp6k5orOjWYzoZ4NyK+PC3SlEx+3qwzPSow+N;K6>NiTu>R~GGWg56p zXuL*b K!?F> l72_*FOnOOO#PKJ(>6|!#lLFeQ-8isUbBM3O5=-5m2`f@SHtmLiVNp?; zcu;7H9C#aw8GnHipO%O`SX398|IDJ-8HP?s&ha$041=;dgSLNS6rBY;tFuZ5;>ZE) zdpt|YLS#-hZ<=8hDuxvhg)AunZF!MeEYAbW6JR@wipyH`?<$+v5SZ!;PC0c3g1&Br zHpyi`9g9j4Nf{r*-pgp;C#09;j0{gJ3Ocyl7=$WCrJ{0e52!BnneJdsXNtPfQLy!> zA&wHz5N|ruP$DCP#iF)G4ceL!>ao)f70(>?l;{^Npb9+n%f95)6$L%}aU_b+2Iz*= zgUTU%8%2F1y|n5GwVKRq9YbBWl@azvCp-oTBVoMM!!)* }L2fhf|%@@Aam_ zv%q04apYjQD!oAEn%!Lmao&xLq58mcW*VdX38)+!;K7Hrd|b}-D)xZi`UsDwJ14=b zDL^@pnjXq<+B)uO>mX<=Z;iqhF@s8hQ&jm`g-NaWqB6|hSlk4{G;yX)ybQ#w1jM)! zbp)BB+BNV?$}PPQxuySea!aHCr^|-nl>z4S<{PY{RD-ReT(=0Y57Pz1Vo(FBxVCu- z;4 B?N1u8~K;mN==f7EwV}AS{ELMU}?$899A&!eiW! zk@C%H2<`z`(<6B)gCBh+I=YeKY67EoAYs}0_|c2}=reJnkI31S6Qw;chORWA$EA5t zR!aaXowC#jAq_zVked&I%0S{_R5sE9iSKn)qZW_g*afvgB%kS~D}prOc0hd=14v83 zxFg-I;NpOFIxxWE*V2GLdYPhP EOAji0hC$ aiA4k@(#Y)pHqS7`Y%OKOi2jq;W;up8)ws?;0}^G>>9Ugqet*ab<;T41u&1!bNZ z!HVMAsB}r;jntfi-enAnPI`^ 5xKYlDtASH)#_r@XH=MM7dc~+|Vg)DBXcH z17x12D|-_{R?d_L=4hRvxMZkc$I$u>xJeT=45YaR&mN)c^5p@D(bOSkIQiU?>gATa zh$0P(_mQAuN`n(V#2ND?3aU$GQ3RhX2vDXTgn6M3Ng1hpM0Lmu$l3A$m8=Q@CQJQQ z6*+xGb;~htrsh?y-2iPj5A8Bs`4O&vmMedOmY1P?kSiae K`+m zS%wuI;uteOz~%ID+HFEkpFmVFdLN)qC|oy5#PD5U{DC?YBI^5yOdr9ZhPXC+WSTxh z7X2tsKBBIIiI!=L C8UlbvSwuOgHS3F5LHap8?JMI^ z>5ziD9-{hqNVz6_-6|d#r(nlr_2`g0f_ij`ab{VGs@!py#i(4FeJR(7tR77=xSFgE zX$|#8r;`fUo=oLp^-*K9N;}~bW2FY86m&%>&^QW)_C q8 zt2TfY9W5mHaSD;scDJuFFwgW4_2wip;6!9pOrS&XP{yvKGoA*><3sEjwv0ewRcD~6 zdS=R>;TjDbC?^l9$NgbnnBJ9rBXl &5R z9xJA~lUaZ36}KMflz=h83LZurWIc<^Ldr+*?l7HZG4nZqdxjkuZqv{Ur6`z1%ntx3 zM=&Bw<9;meB_nr$X74^S(I^_8@{DX3!jBA0RArk9Rj+r=y&qC) &j{OpzEFSvPVL5z zTkE&BF25lR1GTJf>&n{Z{dcw=e7L!BmR9fF`gZ4okNrN^U$4FO(e@8N)c$&5`-k=V zUvKZ6eX#xGUugdh_<{fH<%(%J!Ye{qt7M4d5X% ~ zk|Vr=aD=?(XsvDTn;=-ksal5rE(p`QQJBz5rDIx!SXm=amimNF$*<2 {qUCgFd9NT@bAXtPg6rrI>X$BW{&>UJ$MbL2 z&i#4on~%1xzg}OvRsZ0TH?+^%vQ{AW7%5junnPkS`J-PV2>+v(3xb~SpA@GH$w^Vj zl{DLiHxFXF4j`dUD>?m>qT =S9uQ6*(K<(IITz_)G2b|Eb^ma{K&O z^|f2IhnJ{-ahq^vz11L#C$*9!n5FzltrVEs;JYsUtA6u*?dDqT?8B{_AJ%XGqkiT4 z+NEoo8&_)gzS??l$@5g(kKUyAr2gJ__45~N-+x_y@E1BPb#XpieMVrz3cu^`XCn(w zKTWNCoTF Ntuj!LTwE;6dDhk$f36x zB+Jsi`Z$_y5Nni_NX{{>ee?yv(D=r;>ig)fRUK2ch~|)ViIhR{gMHfq>czdCX`)|c zvuZdb&zpTvjJMY6XJ4& 27`m5!MZu%05}HGl>p3O=e7sj2k#`XxOa>uWvs1 zZs*F``khy6=P%Yb&h5PaNhIt71&eTr1|R`V%9V&_d7(_B9wFXPJid6lcJXUEJWu}P zhZi !K6HhzfD9{_C}pCNFGGS(tx zbAjxIv1Q^E&AiRq3Kr_af6p|OX>d>$yCa_)$TYxX)36=EhMH_%=oeZzQ&^^prFN{f zTY?ticX=~c1tm@th{N<*S d+hvXQjW7^%iUtUoz)mCrR9^8+v0Jw&KsDSAdUO6&0JjC!mBX}lU zXcx9Wd$oS)uTd*kTmQcH{#qEG$9}4IKKosR-0Hy&kc|o-Uqv}?mPlezvy9f3`ptjQ z@V$QXeEr?k5Gp~{rqOwbcL4`q|Hs+-ho9E3-KkyvjCu6i*J?M{nlKHKZ6xoO=|Zxl z4HjihT6DF9C-3fvQdtVqg`^P1hiW9$G@kc*xxlk#x{#zZ9`Oy9 +HnsayuoTcB%WCJ6pQRG&L9^1I7frg1PlnoPZzqH#uJ`( zpeiE#7j&$zUWJD)0iuobKh{=Z`fT61w{>fM^U()1)4#cKyLRDR?eZ7fkKW(Be}nmj z)vLA3cebvq#VGK;ViU#zUV&!xf*XAEso+!I{5u`hs3?H`ewyiSiAyTj#Hm&kmItpu z9-KO?pzDdz`ZEG4*#w7_ElXQY=r;aF5NHFf4HqU##3(pL;rBwaAy%rlPl0%;nq^jP zQsVFnL;WQ%26i^ac~mzFB@)7%VH^T@s`K=o@r^T{4RK&CL&G;6X)h}b>Z=9N6`}Tz zSGVqO&^@3Sr?^k0;t8RdF559JlE~|J1#*3@Ei=T)6_wy_O r>)ztyTG|>ce5efknQCobA*1kAFnmf z3l^EL>K18j`9p_h+r;4yTO?*H;Kun5eN8*GmtePrc5A5J4JF5;`=pYiM dHwc3wr;I+v62TqK{K8!XcvTjp*`88 zmAgIGFLeG!mJuwcSu_`2wTdxDpd-X~WJ51&uq8BLX=M`cOZL&UDSwy=W2Y8^9nUo1 zm JrWBHD)w1Zu4`h6U6Z>~@mal3l1@vcJ=jSm4&<7ZX z+rvh7e1|UVkZc@?MdECjgpI16g_YWW3yt{^huFAP@~qcBBK=5)>fdKCQ_r(=`%3-m zcmI9%FOMHy-(LS`{k_j2_we^GYWLrL{O|%;DYbL%_)jGm -rhY zr#l>)BgUmh>lkptYZq%juGb!XxBcitp|`VaLoN~>bN$;(+n=x2-e0S~^%f<)zVTK4 z!@t#5?+U4rVPSLQElA!W<7)T5s^9pge)Vp^auR1uFB7xs#QUTGV;XrQjQA+yZ+ugK z=hNEFwVhiKC~Q8wwsYfL{obwGxle;|gKt3N?ei1_Jt|XMzfe23w*A=~TQ{!OF24i$ z#+z%k`|oaUyuI__+RlS(Kro7)rn_tRKdb%l*PR>RfezgHqW<1T+n>L&{rUO&)!Vf% zUki>FrCA6&VqRgm7$wy1j3gwxIy=Lw!QRfjc%hKkceiPKScL3-c@*8o{f(QdxK*cT ztYRyfx$=qL)k^JYr5oJ>{eRs8{YPv>v+4i8ZbI@0cN!ht=JxVK=XGMwKJWF+(SA=I zHBY+0`R{!uE~AH*>eqhU`sDuOhpV-X&-g=2j~||IwqvN5%OtOB4)Hb$`BPE5orG$_ zUwR(O2Oqb~_v>t`csPYb8affSEA8&)L?Id3d-CnJe+(63XgI*y(x_?dGTdu|v!kUY z; )s%!7O>e`)GT|Ymsy4o6I z{h#0!+aw7qXH*p-rhD`L{uHty=k}{8u}qG&{rl5`pNya@ohLzXZ|BnRSTuhE;qk*& zdMuw~Mv=S7;SGw0-GX?ZVY~EBvb+R{7s{A|?I^_%C}T<%##Q<4%y_NsrBqi}h=F zcxF-w({mkk6&E_#^7!GZw*sME;55jk_n0#N@MZ097kOQyIk8y!|MaIQF>sQ Q;)Sf-*4W3hi4xI{^vj6zIB1lP--fF!)G`=P2km^Ki(6o z1HWmZY~5O~tzTz*P8gE<7VNJVHaFhh+&H_r@vqRqIDa7vOHo{##xH&Mw5)B?m0REj z(B6LMUhUG=`qjH^BHj7EcK-@*d!KlF%pi+sw|>3-u>hevAF~g7>sRkKB#te~vgN`q ztJ`e3&~$+doW)(vkl^8@DP6VPzuaU&%yF(+V(#|&+K=bhDQEhz^7@7P>gC$ycc?X> zsV^EVg>8a2W-~Hq@QD4XW{1_6Esm-3?iR;Hvu<2w5s;?ny7KYTjC|xr4cva?qbJA_ z&_ETigp{X1k%VJp>;I$-VfdU|g`>ltzr9;r#giXUq9(gf{?SNRd2641x&6(j;3seV zedp}i+Unh1EoJb$9G&KVWVIV$8s@dM{c5&%HwHGDGR;ES5W_r%gaTR`m&Am!+?Oi9 zfm6e=A7*)po?Y5;A8`4rEj}Tzmu;KQy(LUL8^wh 39)?+Qa0FDE|vj@8i6!s%mxq-H^M##sM`&CB|9VCilkI& zFX_fy!#+{@&sX)_T(A?nUS+0gAOeC#j6AVgr*fe3Q#mbHB$Dt{#WE|lBs_&@%Ov3` zxPC Fnj-PWU+0=|_I8)jpvCT4>(sP*ZicH1UNfFw$vv%#!Zc=P}E*2sw zO;H_b0Ev{C4!IE6Jr({0Yi*O_CR6LAnAaC3MTz5|B%F$|Fn-Hd+%z_)!YrQlG+1)K zk74tuPXNv)8eKg?Kiy@w%pBs7>58BoLdKtzyP@q*Lcb+#636IxGCeLc`b AAT+ zPbCrs^N3j{tU9M#xe|fSUJqMe!Ge-z(b _ilZAcXQ+8&HHaaN0+s9oMdp=WaD8gjYrKBJ7?(?*RQg%h5B1x)^DGO z?AdE;+v|^Z-do?g{yN2|cInRcpMR*``)d2+FKVkF?Y#fVzt6r}zwu4&^2Pe<)%x|< z>hFDrDM (A@ z-wW$u#qkTUUb8H7u^nzX+NS_|0|Mx6E`ZIAxArZ7y<4SZr*D=H2hcjaPwRl;CtQ!g zS%uB-Kipp5sK2&W|MS<|pS}9{;r0E_?quVjOXIL8T4V;0nAH|EYM%NQOg-P)*%nn4 zMqkhdqX}+JBodlcuu(NaQyIQ}3l(|I+rnDwht&~(y$?-u^( Z#Ossrv+y_MY?|>mrP;-4Q?v3RCVS<-6sH|62lf>13yb6P z!2n4I8}XUlg89M6^$#BX{Cw^TAl22F&lZ`nh+RAedk8$Ax$<9%&lbs>5$+xe5OS!Y z7O&o`U%g8s3y!<)|NLkt$e3go2arp=v`&iulh+sA`xPg-_>Z{X+fPo4c)w`-LVIsd z_d(Kipy&6EI@v|7LInKVo{aC=k=GaY)W7Q|_V50Q{d<05|K4W(@h`{^#rNE#amLT@ zO^P|wBJHzwN7>9*OT_LVc0$9ClPgubn3%OOy|wF=v3{G##k{Q99~$1=+wxq@RkMa5 z7+RV12`%m&x-B?UD3CtkR0PavDSQQMqYGHQ3s&iUtL}ZQp2PPSF|BQWFyf_|cW!;Z zbpwuj!13^#=eMrE-qYE`zAOvg(HY(N>*?%CRNzba=iJmQy)i6w>zjAyTl5wcqj|2l zg?cY#E?dSMW)m@q#}>&=)nfwvIUk4UMR4BzrI^u NM_#v`4%+hwDOK>Ea)8S6t5dYfo|+Q+g^p+bYijD)_=)t?)H5BS z(ON0Bl5px&3zb!iM1N09r&^|_5c@0`NipOGCdJdI+klLajpfFMTgk!N;`Qs$U6jP= zj+rQlaXVztHZtQwh3-8*0D>84`Y*FHy9~|exV|u3L`n3GGd5s*-a*)bByLO }QeMHMBH-iazoqIb(F+)5vJlnsesJ96|nxFyHN2=B>>k{I2T11?az z4?a2eaz~(vH_I?2f1cfa5ATkOk{Ev@A&g0FFi=Qu3lt^MJuoFoV(`e6+X@Eakq3;S zlDnx L1^V7ib*y4j6uFks2S@-Aeg ze}|bUiT<@^SQqu0q9g`BlNKeh@%O9&9rLs^dgF*FiFmsUjA^@1)FHX;8{A0YR>xkB z;8upO834`2TT4Kc?A{WbNyG@xX5enj2k)S_78{&Xu9z=BQ4a2hKVFk4qWr}R$Of2r zfFJi+KWYPpNf?zDIOSp=9gC8<;#wNhGXdTQ%nU%}i*YJMpi`7Yw 64b{1y10zZ7qg#CTKhQ#3X( 8(%FIq%`y|7QD9vN&ku6P1g zhpl*kUK&w?NUJu?cNX~~Xq@IbS3SMC5OVx_!7wc{q}%XMk$C?+$qCbR#6D3x^M3)N K8%O+Ug#ZASyCDPs diff --git a/frontend-dist/js/226.ec43855c.js b/frontend-dist/js/226.f6040a84.js similarity index 99% rename from frontend-dist/js/226.ec43855c.js rename to frontend-dist/js/226.f6040a84.js index af65b040..d6846b51 100644 --- a/frontend-dist/js/226.ec43855c.js +++ b/frontend-dist/js/226.f6040a84.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[226],{7835:function(e,t,a){e.exports=a.p+"img/background-light.f17603bc.jpg"},10732:function(e,t,a){e.exports=a.p+"img/background.ea1b7ee7.jpg"},48903:function(e,t,a){var n=a(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,n.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n \n
\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const a=document.createElement("img");a.id="bg2",a.className="background-image2",a.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(a,e.firstChild)},initializeBackground(e,t=".login",a=!1,n=!1){this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:a,autoCreateElements:n};const s=document.querySelector(t);this.prepareBackgroundContainer(s),n&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):a&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,a){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,a),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,a,n){this.loadBackgroundImage(e,a[this.customWallPaperIndex],n),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,a)},this.bkInterval)},setupSingleCustomWallpaper(e,t,a){this.loadBackgroundImage(e,t,a)},setupDefaultWallpaper(e,t){const n=this.useDarkMode,s=a(n?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,a){e.style.zIndex=-1,e.style.opacity=0;const n=document.querySelector(a);this.prepareBackgroundContainer(n);const s=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity})})},i=new Image;i.onload=()=>{e.src=t,s()},i.onerror=()=>{e.src=t,s()},i.src=t},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const a=0!=e.style.opacity,n=a?e:t,s=a?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;n.style.zIndex=-2,s.style.zIndex=-1;const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,setTimeout(()=>{n.style.opacity=0},1200)},50)},o.src=i},switchCustomWallpaper(e,t,a){const n=0!=e.style.opacity,s=n?e:t,i=n?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%a.length;const o=a[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1;const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,setTimeout(()=>{s.style.opacity=0},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),a=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out")},50)),a&&(a.style.transition="none",a.style.opacity=0,a.src="",setTimeout(()=>{a&&(a.style.transition="opacity 1.2s ease-in-out")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),a&&(a.style.opacity=0,setTimeout(()=>{a&&(a.src="")},1200)))},smoothThemeTransition(e,t=".login",n=!1,s=!1){const i=this.userConfig?.[e];if(!n||void 0!==i)return void this.reinitializeBackground(e,t,n,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,n,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,d=this.useDarkMode,u=a(d?10732:7835),g=new Image;g.onload=()=>{c.src=u,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,n,s)},g.src=u},reinitializeBackground(e,t=".login",a=!1,n=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,a,n)},100)}}}},68226:function(e,t,a){a.r(t),a.d(t,{default:function(){return B}});var n=a(80047),s=(a(85331),a(99648),a(56768));const i={class:"not-found-container"},o=["innerHTML"],r={class:"not-found-content"},l={class:"back-button-wrapper"},c={class:"error-animation"},d={class:"error-image"},u=["src"],g={class:"error-info"},m={class:"error-actions"},p={class:"help-links"},h={class:"quick-links"};function k(e,t,a,k,b,y){const I=(0,s.g2)("font-awesome-icon"),f=n.S2;return(0,s.uX)(),(0,s.CE)("div",i,[(0,s.Lk)("div",{class:"background-wrapper",innerHTML:e.backgroundImagesTemplate},null,8,o),(0,s.Lk)("div",r,[(0,s.Lk)("div",l,[(0,s.bF)(f,{class:"back-button",onClick:y.goHome,circle:"",size:"large"},{default:(0,s.k6)(()=>[(0,s.bF)(I,{icon:"home"})]),_:1},8,["onClick"])]),(0,s.Lk)("div",c,[t[3]||(t[3]=(0,s.Lk)("div",{class:"error-number"},[(0,s.Lk)("span",{class:"four"},"4"),(0,s.Lk)("span",{class:"zero"},"0"),(0,s.Lk)("span",{class:"four"},"4")],-1)),(0,s.Lk)("div",d,[(0,s.Lk)("img",{src:y.errorImage,alt:"404",class:"floating-image"},null,8,u)])]),(0,s.Lk)("div",g,[t[10]||(t[10]=(0,s.Lk)("h1",{class:"error-title"},"页面走丢了",-1)),t[11]||(t[11]=(0,s.Lk)("p",{class:"error-description"}," 抱歉,您访问的页面可能已被删除、更名或暂时不可用 ",-1)),(0,s.Lk)("div",m,[(0,s.bF)(f,{type:"primary",size:"large",class:"action-btn primary-btn",onClick:y.goHome},{default:(0,s.k6)(()=>[(0,s.bF)(I,{icon:"home",class:"btn-icon"}),t[4]||(t[4]=(0,s.eW)(" 返回首页 ",-1))]),_:1},8,["onClick"]),(0,s.bF)(f,{size:"large",class:"action-btn secondary-btn",onClick:y.goBack},{default:(0,s.k6)(()=>[(0,s.bF)(I,{icon:"arrow-left",class:"btn-icon"}),t[5]||(t[5]=(0,s.eW)(" 返回上页 ",-1))]),_:1},8,["onClick"])]),(0,s.Lk)("div",p,[t[9]||(t[9]=(0,s.Lk)("p",{class:"help-text"},"也许您想要:",-1)),(0,s.Lk)("div",h,[(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[0]||(t[0]=(...e)=>y.goHome&&y.goHome(...e)),class:"quick-link"},[(0,s.bF)(I,{icon:"cloud-upload-alt"}),t[6]||(t[6]=(0,s.eW)(" 图片上传 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[1]||(t[1]=(...e)=>y.goDashboard&&y.goDashboard(...e)),class:"quick-link"},[(0,s.bF)(I,{icon:"tachometer-alt"}),t[7]||(t[7]=(0,s.eW)(" 管理面板 ",-1))]),(0,s.Lk)("a",{href:"javascript:void(0)",onClick:t[2]||(t[2]=(...e)=>y.refreshPage&&y.refreshPage(...e)),class:"quick-link"},[(0,s.bF)(I,{icon:"redo"}),t[8]||(t[8]=(0,s.eW)(" 刷新页面 ",-1))])])])])]),t[12]||(t[12]=(0,s.Fv)('
',1))])}a(44114);var b=a(60782),y=a(48903),I={name:"NotFound",mixins:[y.A],computed:{...(0,b.L8)(["useDarkMode","userConfig"]),errorImage(){return a(96682)}},mounted(){this.initializeBackground("uploadBkImg",".not-found-container",!1,!0)},beforeUnmount(){this.clearBackgroundInterval()},methods:{goHome(){this.$router.push("/")},goBack(){window.history.length>1?this.$router.go(-1):this.$router.push("/")},goDashboard(){this.$router.push("/dashboard")},refreshPage(){window.location.reload()}}},f=a(71241);const v=(0,f.A)(I,[["render",k],["__scopeId","data-v-5437e264"]]);var B=v},96682:function(e,t,a){e.exports=a.p+"img/404.8ed11fb3.png"}}]); -//# sourceMappingURL=226.ec43855c.js.map \ No newline at end of file +//# sourceMappingURL=226.f6040a84.js.map \ No newline at end of file diff --git a/frontend-dist/js/226.f6040a84.js.gz b/frontend-dist/js/226.f6040a84.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..edd31f2cd278bc070682ab4c5e42ab9d484215e4 GIT binary patch literal 3449 zcmV-<4Tka`iwFP!000026YW~9p0jOrK)h>Q_7@r@zlB5;s7`~e_? z-h~cwcYB JZxdDf0an&=B)$)WbLI8g#=zu))&sjQcez zFyBMIO+(+G8z KL=8Vb}bGB$aUdQVZ?Ck!_5V=GgtlX5W8IP?fugC!P zaBv+DhCUKFBk6Rh(Jc15*Igsr)35A(U%n^mIxP^((ac}a=1dlm0tDgs-h zjN*B+v4t1K6CBZ0$7G3Sne{-!D8N-ht1J{y>k?mJuGP%-cw&x3JZWoti0jqrBBIrJ z8fqOb6{a`{bjvVu6rvUOsQ<$re?NPGD1!S)xP5z+3q>-j8Y8^sIHFQfp` ZO!SS4F8G;{&*IjX;EA{v!6VD;Qs~R_cPg zDD=fFjI3CWLcw-8Mgl+W 8O1c{M6iRqjN_N6+K?_^ z&LWkH>tn>T7+ 314K~| z^J<_LfhOtdYaVk$iHF(4B7tW6;F_mnBc&mnY>k^oPzQ<*khz$64u--M_=ebFRA4Hc zMa^?T9A*Uj7 fn zB-!pU;%SmQ^Rc;)IMu=Q*Z)0z|Mt {}Cuo3+@;DS`asEv>p))ukGtKZ2t>UES zi#b7T5*lDGw$-uH1;l2T@IWXpFczoL{B#5fC4wNI+{_tIhBOD5KI;(*Aad3$NS!sS z;Haii!5L*y$;NOg`q%;%MHw5xnvr bO;w-+$8q?TIFDfw4!4t{eJG1| zoj?YKVPEAO9hf9ge|2tDD%|uj?TP+nE4OziYcSOA9mH7}U|&(;#dIvmKB1MP^dg}> zA1~0;3FNI>TM|M^I#!Dlx6H2-Mg$AgN&2TalLvxvY %A0Ni|o6?30}Q znZ8Dp(8>BJL#BJU(qIZFNE4)rRYI`>MNMTJ(kGLC(crPYmNiJkFZPnWkxQ(hh!*>f zDhA_YL$hO(mWnWNkWR0}jlH}kNa9#An?RvoF2V?#DpQ*`6>3h^g6T+7DLb`hDoRNt zMQ2A+YGmP9;mz@@Ar8b tujgDD-rEg(og8r;A4_f>ym&Ga`6Vez2HJYN(Q6lAgi>8w3tjHXsh2*`O#Y zCRQk#l6FAzs556(fNcg#0Fx4cc@AJc2XK7W*b-vod;kZl0p>B62rhPbv%A0222wvy z2U(D7 jYCfXXB&BXpJohCPSEj8ln Ndy`f3du2i|yoZ@< zg=7~5gPh?>acL~`3muPD`7Y}|GFQ+iHxgx?7o;#SvSWOPWAVr7DcE?t#-CIKUq&r9 zkLnd>bLbXLaGODIx$p@cq TxFXOx^tucnRazoml!IXM6fqsJ H16 z_wIr0l4&KLlDE=KUdx=n?JkXfk97f7kkxCjJl7PQxcE}9L_b;W%O_S6;wXX}TlM >01}q*DV7g{nDk4#+LkY zabt61E7yUK)Fp}yC==DLx 4 z534?*yK=an4Zj)^cQ+kxrm$+eiGg-u2Ogwx>zbq2U|{y@h7P)niYnU20UO{daTx^$ z>^jtZvEGagqLzmLX6Ob~Uw581bl{Oa010fVk>_^PkvwF{4OWU6%%HciS@uvZg6iSn z7Gw#t8EL-6%uhx-&lq|a7FY{FMt6MT?%D@tk3Gu<7`lYJKDK4jA~&%Oe8iPyGJjMQ zcQ*{>_A~m|;7DR)gFYKz5E*R)zHD0&+=4BTFad2jx*($qTcWkz9*=eT$0>m;HZ~0h z9pzd%MS~%tvvpk-%6ZTLc}DYVZelJyN%a D!hUHiaPk}8`) z @#Y7GEWsy;)4&|c>5i7i8;2$`Nl#;V28ShYMheQOaKL4+?Ug7`A) ?@bTyOh0;k`m6stdhp)leRY2Z3Sk_~ zd#E@VVjB!O86bWz?|~_X@qw>)1l5vt^82zQpVwnk`W->zLmo-g8Zl^%1T*|oLkHT) zqYq@B``w+>Prpj^D)x4m*X;~t0_-yC6{;h1$vM y@J$Uyl zrIsCaC>`}uO!QKTcd3{xAKFN-I{MRpo!oygef_iP8~=OqyPtjc@S|ey=;sd^0&vvl zxNCz~&>o7t)Rx7XUNdHRiB@u8 oTD?@d2`^tWhJkBQgw+Hl gm v)`5Aoz4VS$XZDU%_7)V(zcJM| z;4C@Ms%fNO+Su5t7e1mdsOCW&2DW#v$)pd=qDmUBS#YgZ_9(x!QOP}QPr_9CEQPaB zU>?6l2QJ92JkAQbF-mS_`$Rr(IaqjXly2-Xy=obDIk8zJDQ4-V^KyCqsAdBA%vHs` z$+5&omyHhWI!NEN>J2OHK=$Mj>zY^P@olvL$JCQ}?Y3bHy!>+DvLU|a0SFd+2(;U= zt86=a5mfeioEQHZwT8KcJ \n \n `\n },\n // 提供背景图片的CSS样式\n backgroundImagesStyles() {\n return `\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n `\n }\n },\n\n watch: {\n // 监听深色模式切换\n useDarkMode(newVal, oldVal) {\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\n if (newVal !== oldVal && this.backgroundInitParams) {\n this.$nextTick(() => {\n this.smoothThemeTransition(\n this.backgroundInitParams.configKey,\n this.backgroundInitParams.containerSelector,\n this.backgroundInitParams.useDefaultBackground,\n this.backgroundInitParams.autoCreateElements\n )\n })\n }\n }\n },\n\n mounted() {\n // 动态注入背景图片的CSS样式\n this.injectBackgroundStyles()\n },\n\n beforeUnmount() {\n // 组件销毁前清除定时器\n if (this.backgroundInterval) {\n clearInterval(this.backgroundInterval)\n }\n // 立即清除背景图片,不使用过渡效果\n this.clearBackgroundImages(true)\n // 移除动态注入的样式\n this.removeBackgroundStyles()\n },\n\n methods: {\n /**\n * 动态注入背景图片样式\n */\n injectBackgroundStyles() {\n const styleId = 'background-manager-styles'\n if (!document.getElementById(styleId)) {\n const style = document.createElement('style')\n style.id = styleId\n style.textContent = this.backgroundImagesStyles\n document.head.appendChild(style)\n }\n },\n\n /**\n * 移除动态注入的样式\n */\n removeBackgroundStyles() {\n const styleId = 'background-manager-styles'\n const existingStyle = document.getElementById(styleId)\n if (existingStyle) {\n existingStyle.remove()\n }\n },\n\n /**\n * 动态创建背景图片元素\n * @param {HTMLElement} container - 要插入背景图片的容器元素\n */\n createBackgroundElements(container) {\n if (!container) {\n console.warn('未提供有效的容器元素')\n return\n }\n\n // 检查是否已经存在背景图片元素\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\n return\n }\n\n // 创建 bg1 元素\n const bg1 = document.createElement('img')\n bg1.id = 'bg1'\n bg1.className = 'background-image1'\n bg1.alt = 'Background Image'\n \n // 创建 bg2 元素\n const bg2 = document.createElement('img')\n bg2.id = 'bg2'\n bg2.className = 'background-image2'\n bg2.alt = 'Background Image'\n\n // 将元素插入到容器的开头\n container.insertBefore(bg1, container.firstChild)\n container.insertBefore(bg2, container.firstChild)\n },\n /**\n * 初始化背景图\n * @param {string} configKey - 用户配置中的背景图配置键名\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\n */\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n // 保存初始化参数,用于主题切换时重新初始化\n this.backgroundInitParams = {\n configKey,\n containerSelector,\n useDefaultBackground,\n autoCreateElements\n }\n\n // 如果需要自动创建元素且元素不存在,则创建\n const container = document.querySelector(containerSelector)\n this.prepareBackgroundContainer(container)\n\n if (autoCreateElements) {\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\n this.createBackgroundElements(container)\n }\n }\n\n const bg1 = document.getElementById('bg1')\n const bg2 = document.getElementById('bg2')\n \n if (!bg1 || !bg2) {\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\n return\n }\n\n const backgroundConfig = this.userConfig?.[configKey]\n\n if (backgroundConfig === 'bing') {\n this.setupBingWallpaper(bg1, bg2, containerSelector)\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\n } else if (useDefaultBackground) {\n this.setupDefaultWallpaper(bg1, containerSelector)\n }\n },\n\n /**\n * 设置 Bing 壁纸轮播\n */\n setupBingWallpaper(bg1, bg2, containerSelector) {\n this.$store.dispatch('fetchBingWallPapers').then(() => {\n if (this.bingWallPapers.length === 0) return\n\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector)\n \n this.backgroundInterval = setInterval(() => {\n this.switchBingWallpaper(bg1, bg2)\n }, this.bkInterval)\n })\n },\n\n /**\n * 设置自定义壁纸轮播\n */\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\n \n this.backgroundInterval = setInterval(() => {\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\n }, this.bkInterval)\n },\n\n /**\n * 设置单张自定义壁纸\n */\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\n },\n\n /**\n * 设置默认壁纸\n */\n setupDefaultWallpaper(bg1, containerSelector) {\n // 根据当前深色模式状态选择背景图\n const isDark = this.useDarkMode\n const defaultImage = isDark \n ? require('@/assets/background.jpg') \n : require('@/assets/background-light.jpg')\n \n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\n },\n\n /**\n * 加载背景图片\n */\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\n // 确保初始化时层级正确\n imgElement.style.zIndex = -1\n imgElement.style.opacity = 0\n const container = document.querySelector(containerSelector)\n this.prepareBackgroundContainer(container)\n\n const showImage = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n imgElement.style.opacity = this.bkOpacity\n })\n })\n }\n\n const preload = new Image()\n preload.onload = () => {\n imgElement.src = imageSrc\n showImage()\n }\n preload.onerror = () => {\n imgElement.src = imageSrc\n showImage()\n }\n preload.src = imageSrc\n },\n \n prepareBackgroundContainer(container) {\n if (!container) return\n\n const computedStyle = window.getComputedStyle(container)\n if (computedStyle.position === 'static') {\n container.style.position = 'relative'\n }\n\n if (computedStyle.zIndex === 'auto') {\n container.style.zIndex = '0'\n }\n\n container.style.isolation = 'isolate'\n },\n\n /**\n * 切换 Bing 壁纸\n */\n switchBingWallpaper(bg1, bg2) {\n if (this.bingWallPapers.length === 0) return\n\n const isBg1Current = bg1.style.opacity != 0\n const curBg = isBg1Current ? bg1 : bg2\n const nextBg = isBg1Current ? bg2 : bg1\n \n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\n\n // 【层级魔法】:让旧图垫底,新图置顶\n curBg.style.zIndex = -2\n nextBg.style.zIndex = -1\n\n const preload = new Image()\n preload.onload = () => {\n nextBg.src = nextUrl\n \n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\n setTimeout(() => {\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\n \n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\n setTimeout(() => { \n curBg.style.opacity = 0 \n }, 1200)\n }, 50)\n }\n preload.src = nextUrl\n },\n\n /**\n * 切换自定义壁纸\n */\n switchCustomWallpaper(bg1, bg2, wallpapers) {\n const isBg1Current = bg1.style.opacity != 0\n const curBg = isBg1Current ? bg1 : bg2\n const nextBg = isBg1Current ? bg2 : bg1\n \n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\n const nextUrl = wallpapers[this.customWallPaperIndex]\n\n // 旧图垫底,新图置顶\n curBg.style.zIndex = -2\n nextBg.style.zIndex = -1\n\n const preload = new Image()\n preload.onload = () => {\n nextBg.src = nextUrl\n \n setTimeout(() => {\n nextBg.style.opacity = this.bkOpacity\n \n setTimeout(() => { \n curBg.style.opacity = 0 \n }, 1200)\n }, 50)\n }\n preload.src = nextUrl\n },\n\n /**\n * 清除背景轮播定时器\n */\n clearBackgroundInterval() {\n if (this.backgroundInterval) {\n clearInterval(this.backgroundInterval)\n this.backgroundInterval = null\n }\n },\n\n /**\n * 清除背景图片显示(带过渡效果)\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\n */\n clearBackgroundImages(immediate = false) {\n const bg1 = document.getElementById('bg1')\n const bg2 = document.getElementById('bg2')\n \n if (immediate) {\n // 立即清除,不使用过渡效果\n if (bg1) {\n bg1.style.transition = 'none'\n bg1.style.opacity = 0\n bg1.src = ''\n // 恢复过渡效果\n setTimeout(() => {\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out'\n }, 50)\n }\n if (bg2) {\n bg2.style.transition = 'none'\n bg2.style.opacity = 0\n bg2.src = ''\n // 恢复过渡效果\n setTimeout(() => {\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out'\n }, 50)\n }\n } else {\n // 使用过渡效果淡出\n if (bg1) {\n bg1.style.opacity = 0\n setTimeout(() => {\n if (bg1) bg1.src = ''\n }, 1200)\n }\n if (bg2) {\n bg2.style.opacity = 0\n setTimeout(() => {\n if (bg2) bg2.src = ''\n }, 1200)\n }\n }\n },\n\n /**\n * 平滑主题切换(用于响应主题模式变化)\n * @param {string} configKey - 用户配置中的背景图配置键名\n * @param {string} containerSelector - 容器选择器\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\n */\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n const backgroundConfig = this.userConfig?.[configKey]\n \n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\n if (!useDefaultBackground || backgroundConfig !== undefined) {\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\n return\n }\n\n // 对于默认背景,执行平滑过渡\n const bg1 = document.getElementById('bg1')\n const bg2 = document.getElementById('bg2')\n \n if (!bg1 || !bg2) {\n // 如果背景元素不存在,直接重新初始化\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\n return\n }\n\n // 确定当前显示的背景和下一个背景\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\n\n // 获取新主题对应的背景图\n const isDark = this.useDarkMode\n const newThemeImage = isDark \n ? require('@/assets/background.jpg') \n : require('@/assets/background-light.jpg')\n\n // 预加载新背景图\n const preloadImg = new Image()\n preloadImg.onload = () => {\n // 设置下一个背景的图片源\n nextBg.src = newThemeImage\n \n // 等待图片加载完成后执行淡入淡出过渡\n nextBg.onload = () => {\n // 淡出当前背景\n currentBg.style.opacity = 0\n \n // 稍微延迟后淡入新背景,确保过渡效果平滑\n setTimeout(() => {\n nextBg.style.opacity = this.bkOpacity\n }, 50) // 50ms 延迟,让淡出效果先开始\n }\n }\n \n preloadImg.onerror = () => {\n // 如果预加载失败,回退到直接重新初始化\n console.warn('主题背景图预加载失败,回退到直接切换')\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\n }\n \n preloadImg.src = newThemeImage\n },\n\n /**\n * 重新初始化背景图(用于响应配置变化)\n */\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\n this.clearBackgroundInterval()\n this.clearBackgroundImages(true) // 使用立即清除\n this.bingWallPaperIndex = 0\n this.customWallPaperIndex = 0\n \n // 延迟一小段时间确保清理完成\n setTimeout(() => {\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\n }, 100)\n }\n }\n}\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"not-found-container\"\n};\nconst _hoisted_2 = [\"innerHTML\"];\nconst _hoisted_3 = {\n class: \"not-found-content\"\n};\nconst _hoisted_4 = {\n class: \"back-button-wrapper\"\n};\nconst _hoisted_5 = {\n class: \"error-animation\"\n};\nconst _hoisted_6 = {\n class: \"error-image\"\n};\nconst _hoisted_7 = [\"src\"];\nconst _hoisted_8 = {\n class: \"error-info\"\n};\nconst _hoisted_9 = {\n class: \"error-actions\"\n};\nconst _hoisted_10 = {\n class: \"help-links\"\n};\nconst _hoisted_11 = {\n class: \"quick-links\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"background-wrapper\",\n innerHTML: _ctx.backgroundImagesTemplate\n }, null, 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"back-button\",\n onClick: $options.goHome,\n circle: \"\",\n size: \"large\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_cache[3] || (_cache[3] = _createElementVNode(\"div\", {\n class: \"error-number\"\n }, [_createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\"), _createElementVNode(\"span\", {\n class: \"zero\"\n }, \"0\"), _createElementVNode(\"span\", {\n class: \"four\"\n }, \"4\")], -1)), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"img\", {\n src: $options.errorImage,\n alt: \"404\",\n class: \"floating-image\"\n }, null, 8, _hoisted_7)])]), _createElementVNode(\"div\", _hoisted_8, [_cache[10] || (_cache[10] = _createElementVNode(\"h1\", {\n class: \"error-title\"\n }, \"页面走丢了\", -1)), _cache[11] || (_cache[11] = _createElementVNode(\"p\", {\n class: \"error-description\"\n }, \" 抱歉,您访问的页面可能已被删除、更名或暂时不可用 \", -1)), _createElementVNode(\"div\", _hoisted_9, [_createVNode(_component_el_button, {\n type: \"primary\",\n size: \"large\",\n class: \"action-btn primary-btn\",\n onClick: $options.goHome\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"home\",\n class: \"btn-icon\"\n }), _cache[4] || (_cache[4] = _createTextVNode(\" 返回首页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n size: \"large\",\n class: \"action-btn secondary-btn\",\n onClick: $options.goBack\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"arrow-left\",\n class: \"btn-icon\"\n }), _cache[5] || (_cache[5] = _createTextVNode(\" 返回上页 \", -1))]),\n _: 1\n }, 8, [\"onClick\"])]), _createElementVNode(\"div\", _hoisted_10, [_cache[9] || (_cache[9] = _createElementVNode(\"p\", {\n class: \"help-text\"\n }, \"也许您想要:\", -1)), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.goHome && $options.goHome(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload-alt\"\n }), _cache[6] || (_cache[6] = _createTextVNode(\" 图片上传 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.goDashboard && $options.goDashboard(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"tachometer-alt\"\n }), _cache[7] || (_cache[7] = _createTextVNode(\" 管理面板 \", -1))]), _createElementVNode(\"a\", {\n href: \"javascript:void(0)\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.refreshPage && $options.refreshPage(...args)),\n class: \"quick-link\"\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n }), _cache[8] || (_cache[8] = _createTextVNode(\" 刷新页面 \", -1))])])])])]), _cache[12] || (_cache[12] = _createStaticVNode(\"
\", 1))]);\n}","import \"core-js/modules/es.array.push.js\";\nimport { mapGetters } from 'vuex';\nimport backgroundManager from '@/mixins/backgroundManager';\nexport default {\n name: 'NotFound',\n mixins: [backgroundManager],\n computed: {\n ...mapGetters(['useDarkMode', 'userConfig']),\n errorImage() {\n // 使用项目中已有的404图片\n return require('@/assets/404.png');\n }\n },\n mounted() {\n // 初始化背景图\n this.initializeBackground('uploadBkImg', '.not-found-container', false, true);\n },\n beforeUnmount() {\n // 清理背景轮播定时器\n this.clearBackgroundInterval();\n },\n methods: {\n goHome() {\n this.$router.push('/');\n },\n goBack() {\n if (window.history.length > 1) {\n this.$router.go(-1);\n } else {\n this.$router.push('/');\n }\n },\n goDashboard() {\n this.$router.push('/dashboard');\n },\n refreshPage() {\n window.location.reload();\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./NotFound.vue?vue&type=template&id=5437e264&scoped=true\"\nimport script from \"./NotFound.vue?vue&type=script&lang=js\"\nexport * from \"./NotFound.vue?vue&type=script&lang=js\"\n\nimport \"./NotFound.vue?vue&type=style&index=0&id=5437e264&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5437e264\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","zIndex","opacity","showImage","requestAnimationFrame","preload","Image","onload","src","onerror","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","transition","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","innerHTML","onClick","goHome","circle","size","default","icon","_","errorImage","type","goBack","href","args","goDashboard","refreshPage","name","mixins","backgroundManager","$router","push","history","go","location","reload","__exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/226.f6040a84.js.map.gz b/frontend-dist/js/226.f6040a84.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..bed5faaf3529c0e630c327cc19e68a07b651da77 GIT binary patch literal 9207 zcmVBa0PMr6ltJwDZ%&pcB~_MHNt5Ngq${#KuSi8jRy$Qy zn(*lumE}=Y8j|H9ReC{|Ul@eHd1zZwafmDo!9x#n(5f^k%Np>p0MHp(l@^r{lZT#@ zbK|Vh4mWl!D{`+gE@kEHpy~=GGmLm;88~ k52PQ_4)>@jO1xl~qRh zDB~-WnMJsw0)kMFF}^jod1Ow(_F>6{=9(hqWjSBw9%e0N2!B-+sYdmkl`}nxL1D}w z;^VSBCaH4n*l<|3BO@TU38`0+)sg~o8$xRtQzatHWDsQtnzK;uBUu#lAcAC(DrpQF z)9`#G1K>l$U=hzF z0&_Zh5>cXQgGq#O<`I6z$BBdI26>z)wOpFRIgD}~1#8ougYQE}@X2xM1zB~}6I?SA zG<1|TPqNv5Tvh=&6XqGEgal6FUlXaEz`0ig$%Eg>0u zO>$sIT+G;0idscrBT#ie{z3-{a6Z^E?{YFmGJFX*oBG=+O=; z%3;^Ng4`#7jWQy(lnQ#-K?d+N_4XCzB ;<1Lre_ z0V7jRQ`eD}4k)sGKq+vj&>zez=(1ER-HcI3Tk7NSst3~yrI}`mm_=k`6b5Gz#W aH}}v#D5=3`^x `=$S7s}FzoOzLfhQ~iZ$9MSg z57CK5$2S$6mNcuFSOI1-OX?zyKiNa)!~vWX0H^lgz+THCz6GCH>i%3 k*(ui=RC7bx=?iO54Gb& rp63J`3hpQcB3m#5nd|M*lu3y&z|0__m^8fXk0Vs!~#_DhGQ&b-B;>1Y5e&G>ndc zuSW}Ulz@eJ)0w6cSs6SQ^)+hH*NoDLopGpo=4qtFxM%@a5TRf6HK(p97}<{_Q-lIw z7*Y=^hw#@J+8gPkO-HELWNzyi+PbZbvR`z E%0&C^HQP?A9(I{|=D!-^QsTW^VM%XWwH-R!uoN1FU0y8TC zHLf%Vf^13c9{e@+mf45iGXFlkWibBJWy8qIAd7itVpdVA!B$ajSOnaM>4IS~XaO}` z+q?jHnRB+%`%DZ=>U;(le-@-rY>~ojWj;gK$fMv(oOIZVsG_QnmO;y+O7r=woH;q^ z32xX(`|dP^_W-Qvk-fCRk3QQxx{>Bu0;6{#W4SZYqnG&6XQM_Rm2+vQnfJgLx)Q^W z%kz+|mH|~JZK+L+#G(oicP4}?3x$U<*~kPmzSmWaS~`Mb7uA?dKHEcA1R0?1fci8h zkd}gZN2W)?#R2PdV36gn Zk+xjbQILI#yh@dnk}rA@NLFL&$^m1bFSQ>Tof z^aRQbP L+>}}7ERPJlGYYHcZ9CXmj@w7Q-_)3 Oug9x-S5HIuxX2C|0X;gDJY`qHD`B2;gdAVUY4N zBCEsQX$m}#40swwB6Ou$mmr!EDvuFaJ}!Gwa>>T8s;sWKq9K5IjAfKVTC2WD6_lSd zGrln%l@2Lr>mja>hm32|x2@8V35s??R*w$5BdAB0m}HifW|KP(vlxvlyD#G!mDQsu zhF6o-VJ+5fbULX(?5T7<(jGN7tF#k7Ggf-2nS<^o4m6H~;eBzS{X01b&8V{CyV6{% z8Re?J ftJ8T(& z!K%(+N%h>6Kf^VeI8aF*RFC_^J~y+g_(th$=1E@~od4;h7ZorZLW^kd3zUGFcPYCM z>MOqu^*W_~PH}(H{hj?%Kei|0^Ri6jSQk`Lq^^^)T*G8$j!3FhQB^BTx20^wjV9_* z)%DJ@O7~c?%$>^lTd%nFK&J$Z3109p(je 4VXLEJO!%yOHCUMfY= zEMk2CBsq#1SqArGaW652C^Bp_ae0t>Ic%?H+)Y6h(-*md^ER_|1Ys9*e2NP7U%Hcw zpyRl>F43xcR~jLg2EF}-lv`G3NH8-%4(F7fTqOF8!_dQi?olMfh=SC7LI83YA*+;- zUUygLIIik)(xiHrW_C0+>c;p<^9`ye`Ug7AAq0Dhb#cfYR|cg~Q4(#lX61=3_MZ|L z$xKzt&-ZtB+M2OkBhz}NSgOr*COd5_-&xU@bi?kP(em>}%d8oN5zWww#G;%1t@|$M zWYO+CYC40^F}YA9&!%Qmsh`mArwr9M+f@)xd#tLa;Sj?Cjys=vYRV9v61M+*vGLyB z`pqA<)^BfJc}*ArUa@8C>e}Xmx3(UBu(@%LHtyX1X6OBn{2n)6t-tZ%_V?e{-@ds0 z{d(i=J3HqdZvXHX=-oMGOc{EmYFdu)l2FmAS>iavvW2t4tYubpcMB>;#lAy9$L zYPGT>yfkG9LP2x1ws!hm5G>- =f#EuGe2#qs-LTZ#3Thw*KCl+tX{WufAXZ?9KYcYxT>o zG~T)Q 7&NG-|oDAsd4R|2OLF!?i|xBtzt70D9Bm(IEz2> zW~EwlNTJ{5KABAV!fZR0sM*9)O=DIsCL|#dkc YBO!irWT_Bg3j%bG(XDEOoMTM+(7uM`EnFfb*~6jM{8 zkS}Yt4Zl2W9Xg utxV%Ud<|Ei{~JGyD~3$ywXDLlisIcBwA=n6b4lUXPHY*8;brG6pR z)%D+j=Ov;SOHM?CIWtG{PRFe7^b2`&fmngol@6Uw j><~-nO7_r(01DdJFDz(QTSrG&q8+qZ z5@sx5*dVsumTGV3Fr00nkM94kkKaxoe+)Tc_*~SSe97~{ot?tg&A-&I{BPs_7uy%U zY^>d`Ke|l4J_X>MZks_CPikdJFw2FLTA7=d5KS)svvKP}{nlFj+@q~qA2ja#y>a!s z`sM4J8&~W1zubCw*^3?9k6)*Lpz-dvjSH9R-+k41_!l}P4LUAXeO6#Y3cni|V5168 zK1n@sROo5vjSZomFvyZKuIK05+S-MI-v^BmA?%82I;HUvsgQ9`b!|MD5I A5Nl>E`&vBk&3xM zT8pqkoRV3v{h5wQGW_>ctj73(Fz-ca#^{Taq-ofWV8ioVK^PDcoXe`v Yha4WB5{~iD$BV-8^hEdn9kfF!hqm)&GR o3qZpsPR&v(~n~NrlRzzIwC%@IiC#?1BBE3T{n!>B#uVFr)LV;JH?zL)iZG z<;LZ=n>|u}{k!^mYe8&G%+!>8F}sek&BMzvi3S|iKqYIINpexMjJ8DM)<0?T+qiY1 z@y=?91m09>cFReL3$Km8pKE;ZN#pw6`jt;vJiT+herqjOL`YzqHWM?&RH7Z0EiE9r z6Tu1Ciae?>VWyZ8f>cl|gXi&cR<9I&G0YTGbhaXm{8L<#9Mvi$WZyLH4}fZAn97Op z62*gwqP#nX^6tG;-tAG|o#3Cgq&x^3PdQKXz1JwM)WYkl_ozvMZ9O_y|M+W;2Wp>5 z-LQ$}C>U1TW{N3^Yn#Aza;X)rV45X#2vkZt=Poqf{73!0HLupOz5W9r zJa@Tq{Vh656WSTmEECN*D?}w>LWe+SCJp~P53g^pe;m)QhpRa!^Du3{{?GawYXLVH z<+5}`cXX|+uW)Xw&Cf|Aq%a^Pl4Y}~8wn|zmjPi`E89ehqK>r%Gyl!U?}IP;S#_k? zyj2(odDf `{rc5CO>x$RG1<`qL#0xKN$ I~S)9667oH1KKJ^dCc-5dI6gHCC^| zmu>;#|Aimwt1u G*`x+K%m*7D*O#y9za}w!|!P@+Bp>Z_u7}O2lZc{`fV506ed$u6A#dg#=bMwL)ki zPYI8}c&hms?&F+(Hd(XEtt9L_qlf^>b} o+#PyRe(acb}SzZkxRaJBZbWkA*5BYCEmvOo~lU_9lH!_R;e?$f_^wI6btI ze*Mxr^+z9ubPy%|7LLZFWg^-#_bvE|Ru fKv!eA_tpGF=yh({>h4bsMVSTo84O;z2OB^NXSo2Hal0MLa85 kc9PM2)IfiY$kb1YGrwS@~Vn zMN=hjtpF9?FJ9St@LA)|-?whBd-;loI!Wt!D>$!(0ih!m3*&Cg3 h0|2AdOumR2EAzJAYuEhWNS58K=3yPb{OCI~W9wFuaNFd!IYk=8H# z;vZ{Fng)Yuj?5fsRvu;%GZ?OL>x!$XsK^gMEDIOBztjj(eccKO{ktbyh_5Mzvk%uq z={X9wWV@&v1#=NrH7ef{v8tjgJq{-6ZpYFD-*z-d&nLo59ainJLp_9qMar6^FZgw} zv%zIVa4dIT!bq^RX+4fNixXXmXiE!#>$X|eT)OBFm#i2!h7}1uLk)+SRyk8pXZz11 z-JqfrQ) ?V z>1kNe{I?J U%m6MbAS2q(T(l(e>C3x3|8WQ z`@H_(ogW`vgksZ8Oek)D>z}H!lwwn`@I*(278OkXt!~a82Av3#N>t_#fpG0o{fG7X z!*91Ae<1XARcxrPVQ_4Gb9wu-)%tsDjW^z)tTr~jY<%$7`szI)Jvt(6ZoC2IDHK%w z{+ErLUpKDZ {azhCsdf==#ph^Nstr z>*qh=vGU)6w>uYTcX~*ozJ9TOer@~H*S2n6t6zBwDrvXY>JQ%8+<0^6;q{$|*MU(~ zF)i2DAADN>{_UNc--531e%^TZ!|l&r+y3lA OubE?#C&Yrx=E+y84G z PsgQ!MImFwB;!nG@KH(B8NqWk~N8P-K^lO*(Jz4^43!UxR zg tYQNHpw zI;!x0%Xx(8!?eHVfrOv9``LUh2>1LqH!d}<-{l2JHA;8*>53
~x$)1yK_`F72g^2G$3-s@_pktL(a~E9a^!Bmb-#Z3TI1S1HbL%wSATGo_n|*& zBgP<$=!JfZofwX}osZaSg^g?XVi;nJnp~yWavhkf6k99>L5{d@7E&*q2&C(Q2UlVj zj+~_83Q%`0)PFe7PMOlzB-bxCR (fHhpx~TnREc;$R)ASJNgHoPA$%Df|>;IraV3eF+g~Obm zy&0eB_zVY(BzE7!Kg#BsW&PtXw!i)aqS?*A?VLMTU%j`BmkXYJqEpt-c6LKc6R$-3 zZ{jsu2`zRiL?@FW@pu9VrIa*RXi6r%Q~kgB>CMR3QoPbfODOK;6@L}OFQ9kdQs~-C zDX=RlH^V8jxpA(3?{Z`P8#q?_?$@j!zHxr*%4^g+xjkCVVD?7RuV8%=yqL(pPIPw4 zI6GyClIXo!9ynco@~BxLf@TZT&5tF)BDPsxAh6?S8c=Bk!0 r9>0p2qgXbiUt!(iM~NieI#P|9Y09s#^xQjk?2BH}T7$$m;)sF5l0nJI&Y z&FPY<+YTvAr`#jLc*?$Cm=X=s>6pc^>?v+aoHEWf_k|Sl)Rd?j2C?8xk}2_YGf>Yi z0}#WBLEqcd6H Engy%@I=)ztF|OOfhUY4;R(39K@y%Yt4K8Sn{52NJISVJO~aYi7Kv?E z$h4lvLQ&IHY?~4Ru7kmK0Nj*FU)pWLNXpaHMq)6LGP5BU1A8ytpI~k6Qq*K>n-UB9 z!jvd+@{@#95gx{ee90~Aawg2OUeAIh_iY3=kNO3WY%=a@1NxdGyQ$(3M@)AU*&$;5 zNx2)@{v`AvDM*x{quKPN%=j}6wXEmo`#qCL7R@7Og|OzlZsp4aI(t2AeFYzsHH*$Z zWSot~PGR+X-j{`^SaO>zP2zSZ^6 lvpw=Y#=zJ<6V<6-A`|*IEw;5H6=1$ro__# zv`4A;p)6sxoa#9ZtLQfW*MP7uGot>$s8wdD3q;alRBBf>BMQf?S@Zi&iM>-|EGKa& zR)}SCD7t Z#SdGJAGJX2yroy&xXQ*B8gG2jxN`yOSFfyXuRq>-cYW)|tCXVp<-6N|{=R ^4 z*lPW>x+z}o!_r(k%a_esp`%uX3QUJqb_ML)(}4gh2jc9B7A4`F+oKP8dlG&T`G$f` zEBU51yEJ2JRv{#0@A &fNi`y5r?+ zky(q_rDIU#=jF^j|Fz_7k%HMI-9rIJ4#isW>ix#Gdo;7)r0f3gXFEZ`q`EnTT;Zi{ zO8lRKzTn>CHpS(C#C_9wYD&br2|E@#`g(f~lI{b&zmMx=m$WJo@NY*dx@TuWU)WRs z?w{Ge=V$is{h9syTJ^`jpg&aKGgHP{zrHsm=1q%q%-Nk4vrsD&yOY>S4PPd$*6dPp z&c^cAt`|-EFin?uGO$0y-tw7vCi;>}L#vQ}A>rP)nZTJsk@O3vn$Voy^M#Jyg^l$7 zM)!V4FW~!&n6}WZ0`%y@?eDg3!l4Q{ynO4z){R$tyLtm}9l5oS=Iy!OuHIx7-dKL7 z=_<;|TdZR4sfe!-CusCi=5rOiu`(G^cuYucK^{xx&-gUNUvWii*ey;iwl3RqV}$R3 zVj;fiMOw?OImALUY)f?d5|i9+Fi!X^Bzy0qq{C~t%Pn8Xb_Xb$Z5=89rn=_yP%X&` zobaJ^`N4D-o(e8t6LWl|;E*ux%4Qy`tx399)D|=*C@zYU*!h%DGpglUQ8zjkYNW%9 z8n#f-ZEdDZ3c^#J-o&QGN58P04Bm6QP$N&mif+JR<+3OB!hq{&p0x93l@tcRnjqLP zq%^GVhLA!%S=Nl=z#P^_nJ;*1|2@5-TXcdg(I@eC#euFkCMeFl9Yjj$@^?2}@{*m& zWT#;k$h7N2LEfMlVs#dD+v%h|kC1W|?=%LitiC!;o9yXnVL<47>c6I^k4>D&Oiw@6 z85*sPaw`d^P9> 1PH5G9e` 3+Bo{vB&H=YM z@}+pUG5oSQST5c@0jgxTPvA@ 46{Uj(FL* z6wWQV7D_`coeOHH&3)YzSz@nv;&=ZgBlMM)QbZ2}XK~n<30J^u^FLzp`jYqF2>?Cv z?#DZAiM+>Hw0As-dO80Pi7%L31seSlkUORLhu!>-9{xu!|D%upae)7EkpFRr|8Y1l zcvs+83R#2r29NX35`Mq}6AT?UMbYA6D!>;OwcNEfLdUO@gUw#86x{>cE=23V0st5R z=BOYZ+)e`(>MO*zWa!Ayg17V551_c^DnSgO9Pp18nFV)c6>WU%WsAtLm-dM?B7?8S z6;HtHuoVyROEXGPY0ZZD&N5#_jnh2unx{7xLV;f|8m2{tbsPTK0`H$PIANNO*e{A_ N{|_5ZXR?)n003ryDWU)X literal 0 HcmV?d00001 diff --git a/frontend-dist/js/309.b7dca603.js.gz b/frontend-dist/js/309.b7dca603.js.gz deleted file mode 100644 index db2315786c086fcb28ef8d3ee00c6b3c3d26a893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4310 zcmV;{5Gn5;iwFP!000023hi3$k0ZBv|K7hsOWT_vOwG+mT1h+VcyYH*fJ4t|+B?@p zRN+F+P$OC+QsHp+#nJ!)lAxEuZT+DQ>N+VBqXB{zjZ+{+lQwbw8SmNtlz*WhId6L1 z+n`3jbU&=5A^E)Xd47C2AWcXkk%9&i46KC2lOeby;{^_8=hKwU63nhs@|4b_X*vcY z|JE6+)o=vuMVd^l;jrzTj?l8@w!KNp0!cZu2$G1wCA0b`?Y0XMv)ohH>A(zi+HSv^ z2bUS@_1h;~D~V067F@{0XZGS%K GqsM zUN}ANcKVe&kQzGeIcjPD)Y*361r`nLGpp xd6hx+iEyt8aZ{axp z8eS0bkcH&Rb5M{blFzpuSB8DaBoP-l_E;LnYtO0t8Wwn-=#eZ#0iQ2YNkVUF+qUH( zY(MHlYY5VWh;z;+Gy({$36TJ#MqkHb_683L7(q0i6%0$k8*)k$yP|StSCdw&Hfd*Q zJp1DX4ye37xG0~qTDe(WkvWb?@`TJ6F_xqx@TI?Cjr{Kq={#!C& zE{^_@H8HZ;9GiR-=u^f+ti( zlGm8fD-sUsW0EhthO_o4CKI{&?2?9Z>NQ-)d1dYSl&I~$V}Os}CV^~DsPq~EzaV05 z^qnTvaoA|OgLO%%@_Un95GE6^!8jx9WQ~V6#ghWFLdSec!?jyUgW!ZTDQognqQ->A zl8A<5x6QyB2{Y(5F0ing%}t9o%`j?=g;JQ2B(YowYZS5r{%HNbKmPCh0kRBTVi`=m zWi1t{tO}Rp$oJ*(u}&qsGG9LQG9y>=2@PhJ1^w5S`dKpPTuz@%$(%eXwYBzAvICu^ z{)k+ogL5RNjEKi1CV}MQz+9yZncy^*RT?=k9jB6?3xXy2a!lsRn=pe}hUPqFl7tpC zT2ZFLq@q|PoeYi1gbVT}(+i5}+g0TFIEV=rWscu74H{AP+y@(p&N_1PVL|5ng6xuJ zPUMt_iMQM*@G{^mkqxqzedn0rh=^vQCxHQ-SVtibQe_W2A~HA4gX@Q(MPNZg`sJLU zZb1uZIzZK88u|oDTaqhz&Y2`k`kR{9k~k^}P6-ZeyjTzxo=<5UT2eV>pWZK`6sn24 zrP4qJdu~=`Mx#%~sE7@Vz@;({fqAjL;52L~?mQ;;B^JyA&wubQ&;RzlPd@(O`47JL z{O_NA`j6ka`Pr{--v8;%cfbAVFMb4|vhF@fbfJZ-)q(LAfI0KQZEm3RsBnTNjHInA z?^p4h?5g8P+Pmv-&WYW^iP=SkN9+(MJ-(Y0A~t0S5%PiFR+dD>o=}lU9R+Z6n5_?I zh%zcEj_Er!=c$zD13TssWdJe%$VJ#ca(8UiA}jdIGAnrmZDk)%qFq_WV`w{@csR?g zmsHmKW=h0$LCunIpe0!dvcRGy_<6zDN+80=$JSADFf?2MkB<+B&T3`y%f9$dAk4+3 z{$Wmt`-fTSEJ9bSBYt4BeD>{kpTGan%?BTw-O+ey9J!6>&%Up|v>IwFeedI&XFvbl zuiyRbqyPN$$3Oezw?F*+$N%y94?q0mm;ZM2?ssqA``6EY`~D~Y^?_Ob{Mq+!-uvj& zzx!!p+Yz8pO!!*}c}PYB4bXw_`{K;hF(T8&gB-Lk6lk|7;z&a8z7Y7@riuQv1Ux<# zc1&0#r?0uSwddslL$5x^f~N_IH5IX&j;q+`v}%+dQx?T!gPui^7&;?Gh~?#2PtL=# zK2O37?NBE_KbcCNNG^yS(qy3^fdwW+2Ga-YXBKG7DPgA8I|?D_{j)YF7ykIz6u6k< zaHEVVw%hB5+t2igY; XJvL} $QRrBt)T zc&N4@cNuU1ES*LZ9%Dnrd?g@5`?jT0!SN4ely&u(?;QCXPC(daXT*~#EYGAz276M9 zZ|xa))rGI@7oaSQcg|h|yb;+glx)U&PMz0chOfm;qC E!0=4?qcBHlVt z?1p~qHt0vrEU7R+Zj7q!;RDqwQ74TJGpQ#c@B!Ge=srUG`X|8H8X}d_*j@?PmIQ2{ z1p5fxCIR%;tWa^ x^MF~GfB)Ki*7{mi(0BG>){a8z6oitR >3arN9i{334Laz zb>M@dT3(6P@=Bn66QW@4X?&|+gToL*r;`jt>*!(qaP`SA|NHX~|Dil$eg5HhZvN^= zpZ(@HH~;+apZ($|zx(yOHy`}d=imC)&9k3>`oS-r|IJTsp8e(Xzy1)EO{RnPRJ^rj zsx5Q(WB1 5D6X=4~$bOIRi** QugCMvpU^wyRTBilHob=z@wbO<5HdK{*5MIpH??P z?@XKLUj+rMe3`m^X2)8Mtkx-AQ?F_zng~h0K0O130WT*uupGqgtH;nHDmGB;Gppye zI&R_MK)Efp??X$V;SdPILM0*{p&@wsGzs{EJPZK>>V~p;(RBJJ-CpQmFdCVNN&O&0 z-Co~4J#dHGb9$$D3P`R3l3AUO>vpQhY@M7qJ*bayZuitZfrFT+B5>pmaB|IpMj4@8 zZ{}qNm%8;A5~emz;seTpI1P0{S1ns25?@_{mcOzRu;WWiWka_WG~~|%xY2RkBi~nb z4$CxIt>|iHQU6HA%Y8fG^Ep)wWg_o~bIKm^C?erQ2GEfUQDWaW_xs=;&POQ&(4J6+ z +scM>KsMm8_{X=)p>gHeBx8FH&4%lB`NFN&S_uGfYPrH5Rpd9)VUwzS$ zP~CyoUQ#&iweFUb&exKXN@>RRCO@g;s?|Ah+m7n&F{{;SwOduoY)L~8NChU|z{yPe z0;uR8g5U}u5L^QU1Q?;fAL`H49~SVap6SZ;ib50>du^_^O!5MmE~zqIVlrJwF951! zd!o1U;rtfaQ_R9RpR4B`AMbdWXF8L+5}muKO&*{;3n|%}6Rbji&O_n>p30^+$}%)v z6i=_4b)k;KVW>KNspMzYrY3J)Kx>YcGji?eLv~XU1jwYxfQld{%_)v2%|r@5t8%8E zt8IidRPdI@d mjJfcDxh~Y(q^WJyG s69Oe9ylpP>7y8q?kG%4 z^9OEAv(um3^pP^62T~DRFRf<{Sn&?(oTEKVqdhJ|#SMGO+VR{B4OQ_Owv69eBfsWX z6${F7t`YiLeFAjV%73;z(5|@%9bDMjSlPOLX~%Bmi_JH+{KW2d3<3S^R_=Yf-OVL8 zU$qRUcCT-!n6I~z$w}lwwDYyCTNk!AR<>SzX{CKG?z;L$ojd4nmTsu8nN&nZ8cC*b zgj!IA`BTr$;K%^Ws6dk@ kS4{vI^x`} zHN{&7d4 AYeFP NQ0T zycCvGU-XNS1>><_W-B~SK!&c@9yCM27a_l7sshbGRw1BCdDassE)Y;~7y+TwpV>hd zh5pQbc#R@|W`}Q~xxYYDAKUkD1xVw1d0RgmnzQIZz!ckpOaw`$uj6Do=2(Qs$J@_# zz@;ER>czJDP_F_M$Yp}fivUSg42Bv}fub6bx1a?Y;8hJUE}lXwwza5=3Pf&MwG^KS zEjc^q^Eqar7Z*qlkF`o@msdc3er5QAM*5OMnc&Z8LdP*VpJEn~lF;k {#6!vcLe!hyPmd4k8g;bUs>nWK)v+6=YzdlBiD zqd@MI5>C#sh$w67SIJaeUtCpSr@OdPpmC48OfR4m;t3un_Jqdd4gFG%>goZQ`%$N5 zXk`17Hnf1r3&3=8$~S25U K%*g`cyn*oo$C~GMCcd$lsok%jjyDeIkE!Iff z!4d(FzOa}uGCd|zQWhn*S)r6IMaxpHJ2`csTCiVafWK)ttSM6aJRoQ-J74d}qF{{G zYvc8FhK1mls$o`e(0R1Xg#dw#qz39~b6)#CMQhb-yJe_>(^>=RVS%7tuiF5ih2V?C zTb9x3E#>usc#ox^EGqS{=O^<5J!krLsii(8RH)2bpv{J#hwc0Im+s5LP<8$)>P7dj z+ARif+?t)Xa>ol(+T7V2JMV?*Z0-&3faFEkWvHmNFJ_D)<-dToRYts3A(Jx7?N-OW zTetx(RZCXYU|SG1UA_3QUc=Qp4n}vuQ%Qtr`hDZx%S)1dqny1_sMVsa>&*4nMS#5n ztEtP&{5{D>G?6wALkkElu_VoOp}bHV%- BBlWo$LXp9pX5ho?Eqo z&;5%m8^OUJ+`IQuBjKqC$QyXEpe%axPapYh=hPne!T@)jw*7Wu&++1a0Lp!F07EqZ E0EdowtN;K2 diff --git a/frontend-dist/js/309.b7dca603.js.map b/frontend-dist/js/309.b7dca603.js.map deleted file mode 100644 index 2608c77a..00000000 --- a/frontend-dist/js/309.b7dca603.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/309.b7dca603.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/mixins/backgroundManager.js","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?0caa","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue","webpack://sanyue_imghub/./src/components/LanguageSwitcher.vue?90ec","webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue?bba2","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue","webpack://sanyue_imghub/./src/components/dashboard/AdminToggleDark.vue?7379","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?4056","webpack://sanyue_imghub/./src/components/DashboardTabs.vue","webpack://sanyue_imghub/./src/components/DashboardTabs.vue?1414"],"sourcesContent":["/**\r\n * 背景图管理 Mixin\r\n * 用于统一管理页面背景图的加载和轮播逻辑\r\n */\r\n\r\nimport { mapGetters } from 'vuex'\r\n\r\nexport default {\r\n data() {\r\n return {\r\n bingWallPaperIndex: 0,\r\n customWallPaperIndex: 0,\r\n backgroundInterval: null, // 存储轮播定时器\r\n // 存储初始化参数,用于主题切换时重新初始化\r\n backgroundInitParams: null,\r\n }\r\n },\r\n computed: {\r\n ...mapGetters(['userConfig', 'bingWallPapers', 'useDarkMode']),\r\n bkInterval() {\r\n return this.userConfig?.bkInterval || 3000\r\n },\r\n bkOpacity() {\r\n return this.userConfig?.bkOpacity || 1\r\n },\r\n // 提供背景图片元素的模板\r\n backgroundImagesTemplate() {\r\n return `\r\n \r\n
\r\n `\r\n },\r\n // 提供背景图片的CSS样式\r\n backgroundImagesStyles() {\r\n return `\r\n .background-image1 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n .background-image2 {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n z-index: -1;\r\n pointer-events: none;\r\n opacity: 0;\r\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\r\n filter: var(--background-image-filter, brightness(1));\r\n }\r\n `\r\n }\r\n },\r\n\r\n watch: {\r\n // 监听深色模式切换\r\n useDarkMode(newVal, oldVal) {\r\n // 只有在值真正改变且已经初始化过背景时才平滑切换主题\r\n if (newVal !== oldVal && this.backgroundInitParams) {\r\n this.$nextTick(() => {\r\n this.smoothThemeTransition(\r\n this.backgroundInitParams.configKey,\r\n this.backgroundInitParams.containerSelector,\r\n this.backgroundInitParams.useDefaultBackground,\r\n this.backgroundInitParams.autoCreateElements\r\n )\r\n })\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n // 动态注入背景图片的CSS样式\r\n this.injectBackgroundStyles()\r\n },\r\n\r\n beforeUnmount() {\r\n // 组件销毁前清除定时器\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n }\r\n // 立即清除背景图片,不使用过渡效果\r\n this.clearBackgroundImages(true)\r\n // 移除动态注入的样式\r\n this.removeBackgroundStyles()\r\n },\r\n\r\n methods: {\r\n /**\r\n * 动态注入背景图片样式\r\n */\r\n injectBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n if (!document.getElementById(styleId)) {\r\n const style = document.createElement('style')\r\n style.id = styleId\r\n style.textContent = this.backgroundImagesStyles\r\n document.head.appendChild(style)\r\n }\r\n },\r\n\r\n /**\r\n * 移除动态注入的样式\r\n */\r\n removeBackgroundStyles() {\r\n const styleId = 'background-manager-styles'\r\n const existingStyle = document.getElementById(styleId)\r\n if (existingStyle) {\r\n existingStyle.remove()\r\n }\r\n },\r\n\r\n /**\r\n * 动态创建背景图片元素\r\n * @param {HTMLElement} container - 要插入背景图片的容器元素\r\n */\r\n createBackgroundElements(container) {\r\n if (!container) {\r\n console.warn('未提供有效的容器元素')\r\n return\r\n }\r\n\r\n // 检查是否已经存在背景图片元素\r\n if (document.getElementById('bg1') || document.getElementById('bg2')) {\r\n return\r\n }\r\n\r\n // 创建 bg1 元素\r\n const bg1 = document.createElement('img')\r\n bg1.id = 'bg1'\r\n bg1.className = 'background-image1'\r\n bg1.alt = 'Background Image'\r\n \r\n // 创建 bg2 元素\r\n const bg2 = document.createElement('img')\r\n bg2.id = 'bg2'\r\n bg2.className = 'background-image2'\r\n bg2.alt = 'Background Image'\r\n\r\n // 将元素插入到容器的开头\r\n container.insertBefore(bg1, container.firstChild)\r\n container.insertBefore(bg2, container.firstChild)\r\n },\r\n /**\r\n * 初始化背景图\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器,用于设置透明背景\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n initializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n // 保存初始化参数,用于主题切换时重新初始化\r\n this.backgroundInitParams = {\r\n configKey,\r\n containerSelector,\r\n useDefaultBackground,\r\n autoCreateElements\r\n }\r\n\r\n // 如果需要自动创建元素且元素不存在,则创建\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n if (autoCreateElements) {\r\n if (container && (!document.getElementById('bg1') || !document.getElementById('bg2'))) {\r\n this.createBackgroundElements(container)\r\n }\r\n }\r\n\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n console.warn('背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements')\r\n return\r\n }\r\n\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n\r\n if (backgroundConfig === 'bing') {\r\n this.setupBingWallpaper(bg1, bg2, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length > 1) {\r\n this.setupCustomWallpaperCarousel(bg1, bg2, backgroundConfig, containerSelector)\r\n } else if (Array.isArray(backgroundConfig) && backgroundConfig.length === 1) {\r\n this.setupSingleCustomWallpaper(bg1, backgroundConfig[0], containerSelector)\r\n } else if (useDefaultBackground) {\r\n this.setupDefaultWallpaper(bg1, containerSelector)\r\n }\r\n },\r\n\r\n /**\r\n * 设置 Bing 壁纸轮播\r\n */\r\n setupBingWallpaper(bg1, bg2, containerSelector) {\r\n this.$store.dispatch('fetchBingWallPapers').then(() => {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n this.loadBackgroundImage(bg1, this.bingWallPapers[this.bingWallPaperIndex]?.url, containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchBingWallpaper(bg1, bg2)\r\n }, this.bkInterval)\r\n })\r\n },\r\n\r\n /**\r\n * 设置自定义壁纸轮播\r\n */\r\n setupCustomWallpaperCarousel(bg1, bg2, wallpapers, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpapers[this.customWallPaperIndex], containerSelector)\r\n \r\n this.backgroundInterval = setInterval(() => {\r\n this.switchCustomWallpaper(bg1, bg2, wallpapers)\r\n }, this.bkInterval)\r\n },\r\n\r\n /**\r\n * 设置单张自定义壁纸\r\n */\r\n setupSingleCustomWallpaper(bg1, wallpaperUrl, containerSelector) {\r\n this.loadBackgroundImage(bg1, wallpaperUrl, containerSelector)\r\n },\r\n\r\n /**\r\n * 设置默认壁纸\r\n */\r\n setupDefaultWallpaper(bg1, containerSelector) {\r\n // 根据当前深色模式状态选择背景图\r\n const isDark = this.useDarkMode\r\n const defaultImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n \r\n this.loadBackgroundImage(bg1, defaultImage, containerSelector)\r\n },\r\n\r\n /**\r\n * 加载背景图片\r\n */\r\n loadBackgroundImage(imgElement, imageSrc, containerSelector) {\r\n // 确保初始化时层级正确\r\n imgElement.style.zIndex = -1\r\n imgElement.style.opacity = 0\r\n const container = document.querySelector(containerSelector)\r\n this.prepareBackgroundContainer(container)\r\n\r\n const showImage = () => {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(() => {\r\n imgElement.style.opacity = this.bkOpacity\r\n })\r\n })\r\n }\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.onerror = () => {\r\n imgElement.src = imageSrc\r\n showImage()\r\n }\r\n preload.src = imageSrc\r\n },\r\n \r\n prepareBackgroundContainer(container) {\r\n if (!container) return\r\n\r\n const computedStyle = window.getComputedStyle(container)\r\n if (computedStyle.position === 'static') {\r\n container.style.position = 'relative'\r\n }\r\n\r\n if (computedStyle.zIndex === 'auto') {\r\n container.style.zIndex = '0'\r\n }\r\n\r\n container.style.isolation = 'isolate'\r\n },\r\n\r\n /**\r\n * 切换 Bing 壁纸\r\n */\r\n switchBingWallpaper(bg1, bg2) {\r\n if (this.bingWallPapers.length === 0) return\r\n\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.bingWallPaperIndex = (this.bingWallPaperIndex + 1) % this.bingWallPapers.length\r\n const nextUrl = this.bingWallPapers[this.bingWallPaperIndex]?.url\r\n\r\n // 【层级魔法】:让旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n // 稍微延迟 50ms,确保浏览器把新图渲染到 DOM 上且层级已更新\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity // 新图直接在顶层优雅淡入\r\n \r\n // 等新图 1.2s 完全覆盖后,在底下默默把旧图透明度归零,毫无视觉断层\r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 切换自定义壁纸\r\n */\r\n switchCustomWallpaper(bg1, bg2, wallpapers) {\r\n const isBg1Current = bg1.style.opacity != 0\r\n const curBg = isBg1Current ? bg1 : bg2\r\n const nextBg = isBg1Current ? bg2 : bg1\r\n \r\n this.customWallPaperIndex = (this.customWallPaperIndex + 1) % wallpapers.length\r\n const nextUrl = wallpapers[this.customWallPaperIndex]\r\n\r\n // 旧图垫底,新图置顶\r\n curBg.style.zIndex = -2\r\n nextBg.style.zIndex = -1\r\n\r\n const preload = new Image()\r\n preload.onload = () => {\r\n nextBg.src = nextUrl\r\n \r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n \r\n setTimeout(() => { \r\n curBg.style.opacity = 0 \r\n }, 1200)\r\n }, 50)\r\n }\r\n preload.src = nextUrl\r\n },\r\n\r\n /**\r\n * 清除背景轮播定时器\r\n */\r\n clearBackgroundInterval() {\r\n if (this.backgroundInterval) {\r\n clearInterval(this.backgroundInterval)\r\n this.backgroundInterval = null\r\n }\r\n },\r\n\r\n /**\r\n * 清除背景图片显示(带过渡效果)\r\n * @param {boolean} immediate - 是否立即清除,不使用过渡效果\r\n */\r\n clearBackgroundImages(immediate = false) {\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (immediate) {\r\n // 立即清除,不使用过渡效果\r\n if (bg1) {\r\n bg1.style.transition = 'none'\r\n bg1.style.opacity = 0\r\n bg1.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg1) bg1.style.transition = 'opacity 1.2s ease-in-out'\r\n }, 50)\r\n }\r\n if (bg2) {\r\n bg2.style.transition = 'none'\r\n bg2.style.opacity = 0\r\n bg2.src = ''\r\n // 恢复过渡效果\r\n setTimeout(() => {\r\n if (bg2) bg2.style.transition = 'opacity 1.2s ease-in-out'\r\n }, 50)\r\n }\r\n } else {\r\n // 使用过渡效果淡出\r\n if (bg1) {\r\n bg1.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg1) bg1.src = ''\r\n }, 1200)\r\n }\r\n if (bg2) {\r\n bg2.style.opacity = 0\r\n setTimeout(() => {\r\n if (bg2) bg2.src = ''\r\n }, 1200)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * 平滑主题切换(用于响应主题模式变化)\r\n * @param {string} configKey - 用户配置中的背景图配置键名\r\n * @param {string} containerSelector - 容器选择器\r\n * @param {boolean} useDefaultBackground - 是否使用默认背景图\r\n * @param {boolean} autoCreateElements - 是否自动创建背景元素\r\n */\r\n smoothThemeTransition(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n const backgroundConfig = this.userConfig?.[configKey]\r\n \r\n // 如果不是默认背景配置,则直接重新初始化(自定义背景不受主题影响)\r\n if (!useDefaultBackground || backgroundConfig !== undefined) {\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 对于默认背景,执行平滑过渡\r\n const bg1 = document.getElementById('bg1')\r\n const bg2 = document.getElementById('bg2')\r\n \r\n if (!bg1 || !bg2) {\r\n // 如果背景元素不存在,直接重新初始化\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n return\r\n }\r\n\r\n // 确定当前显示的背景和下一个背景\r\n const currentBg = bg1.style.opacity != 0 ? bg1 : bg2\r\n const nextBg = bg1.style.opacity != 0 ? bg2 : bg1\r\n\r\n // 获取新主题对应的背景图\r\n const isDark = this.useDarkMode\r\n const newThemeImage = isDark \r\n ? require('@/assets/background.jpg') \r\n : require('@/assets/background-light.jpg')\r\n\r\n // 预加载新背景图\r\n const preloadImg = new Image()\r\n preloadImg.onload = () => {\r\n // 设置下一个背景的图片源\r\n nextBg.src = newThemeImage\r\n \r\n // 等待图片加载完成后执行淡入淡出过渡\r\n nextBg.onload = () => {\r\n // 淡出当前背景\r\n currentBg.style.opacity = 0\r\n \r\n // 稍微延迟后淡入新背景,确保过渡效果平滑\r\n setTimeout(() => {\r\n nextBg.style.opacity = this.bkOpacity\r\n }, 50) // 50ms 延迟,让淡出效果先开始\r\n }\r\n }\r\n \r\n preloadImg.onerror = () => {\r\n // 如果预加载失败,回退到直接重新初始化\r\n console.warn('主题背景图预加载失败,回退到直接切换')\r\n this.reinitializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }\r\n \r\n preloadImg.src = newThemeImage\r\n },\r\n\r\n /**\r\n * 重新初始化背景图(用于响应配置变化)\r\n */\r\n reinitializeBackground(configKey, containerSelector = '.login', useDefaultBackground = false, autoCreateElements = false) {\r\n this.clearBackgroundInterval()\r\n this.clearBackgroundImages(true) // 使用立即清除\r\n this.bingWallPaperIndex = 0\r\n this.customWallPaperIndex = 0\r\n \r\n // 延迟一小段时间确保清理完成\r\n setTimeout(() => {\r\n this.initializeBackground(configKey, containerSelector, useDefaultBackground, autoCreateElements)\r\n }, 100)\r\n }\r\n }\r\n}\r\n","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = [\"title\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"span\", {\n class: \"language-switcher\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleLocale && $options.toggleLocale(...args)),\n role: \"button\",\n title: _ctx.$t('language.switchTo')\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"globe\",\n class: \"lang-icon\"\n })], 8, _hoisted_1);\n}","import { setLocale } from '@/locales';\nexport default {\n name: 'LanguageSwitcher',\n computed: {\n isZh() {\n return this.$i18n.locale === 'zh-CN';\n }\n },\n methods: {\n toggleLocale() {\n const next = this.isZh ? 'en' : 'zh-CN';\n setLocale(next);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./LanguageSwitcher.vue?vue&type=template&id=08567d0a&scoped=true\"\nimport script from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\nexport * from \"./LanguageSwitcher.vue?vue&type=script&lang=js\"\n\nimport \"./LanguageSwitcher.vue?vue&type=style&index=0&id=08567d0a&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-08567d0a\"]])\n\nexport default __exports__","import store from '@/store'\r\nimport router from '@/router'\r\n\r\nlet isRedirecting = false;\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n // 确保包含凭据(HttpOnly Cookie 会自动携带)\r\n options.credentials = 'include';\r\n\r\n options.headers = {\r\n ...options.headers,\r\n };\r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401 && !isRedirecting) {\r\n isRedirecting = true;\r\n store.commit('setAdminLoggedIn', false);\r\n // 静默跳转登录页,不弹出错误提示(路由守卫负责认证 UX)\r\n router.push('/adminLogin').finally(() => {\r\n isRedirecting = false;\r\n });\r\n }\r\n\r\n return response;\r\n}\r\n","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode } from \"vue\";\nconst _hoisted_1 = {\n id: \"themeMaskAdmin\"\n};\nconst _hoisted_2 = [\"cx\", \"cy\", \"r\"];\nconst _hoisted_3 = [\"r\"];\nconst _hoisted_4 = [\"opacity\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n return _openBlock(), _createElementBlock(\"div\", {\n id: \"themeToggle\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.handleToggleClick && $options.handleToggleClick(...args))\n }, [_createVNode(_Transition, {\n name: \"icon-fade\",\n mode: \"out-in\"\n }, {\n default: _withCtx(() => [!$data.isAuto ? (_openBlock(), _createElementBlock(\"svg\", {\n key: \"sun-moon\",\n class: _normalizeClass([\"theme_toggle_svg\", {\n 'dark': $data.isDark\n }]),\n width: \"1.3em\",\n height: \"1.3em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: \"currentColor\"\n }, [_createElementVNode(\"mask\", _hoisted_1, [_cache[1] || (_cache[1] = _createElementVNode(\"rect\", {\n x: \"0\",\n y: \"0\",\n width: \"100%\",\n height: \"100%\",\n fill: \"white\"\n }, null, -1)), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle1\",\n fill: \"black\",\n cx: $data.isDark ? '50%' : '100%',\n cy: $data.isDark ? '23%' : '0%',\n r: $data.isDark ? '9' : '5'\n }, null, 8, _hoisted_2)]), _createElementVNode(\"circle\", {\n class: \"theme_toggle_circle2\",\n cx: \"12\",\n cy: \"12\",\n r: $data.isDark ? '9' : '5',\n mask: \"url(#themeMaskAdmin)\"\n }, null, 8, _hoisted_3), _createElementVNode(\"g\", {\n class: \"theme_toggle_g\",\n stroke: \"currentColor\",\n opacity: $data.isDark ? 0 : 1\n }, [...(_cache[2] || (_cache[2] = [_createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"1\",\n x2: \"12\",\n y2: \"3\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"12\",\n y1: \"21\",\n x2: \"12\",\n y2: \"23\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"4.22\",\n x2: \"5.64\",\n y2: \"5.64\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"18.36\",\n x2: \"19.78\",\n y2: \"19.78\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"1\",\n y1: \"12\",\n x2: \"3\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"21\",\n y1: \"12\",\n x2: \"23\",\n y2: \"12\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"4.22\",\n y1: \"19.78\",\n x2: \"5.64\",\n y2: \"18.36\"\n }, null, -1), _createElementVNode(\"line\", {\n x1: \"18.36\",\n y1: \"5.64\",\n x2: \"19.78\",\n y2: \"4.22\"\n }, null, -1)]))], 8, _hoisted_4)], 2)) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: \"auto-mode\",\n icon: \"circle-half-stroke\",\n class: \"auto-icon\",\n style: {\n \"font-size\": \"1.3em\",\n \"color\": \"var(--admin-theme-toggle-color)\"\n }\n }))]),\n _: 1\n })]);\n}","export default {\n name: 'ToggleDark',\n data() {\n return {\n isDark: this.$store.getters.useDarkMode,\n isAuto: !this.$store.getters.cusDarkMode\n };\n },\n methods: {\n handleToggleClick() {\n // 三种状态循环:亮色 -> 暗色 -> 跟随系统 -> 亮色\n if (this.isAuto) {\n // 当前是自动模式,切换到亮色\n this.isDark = false;\n this.isAuto = false;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (!this.isDark) {\n // 当前是亮色,切换到暗色\n this.isDark = true;\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 当前是暗色,切换到跟随系统\n this.isAuto = true;\n this.$store.commit('setCusDarkMode', false);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./AdminToggleDark.vue?vue&type=template&id=5c149ed5&scoped=true\"\nimport script from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\nexport * from \"./AdminToggleDark.vue?vue&type=script&lang=js\"\n\nimport \"./AdminToggleDark.vue?vue&type=style&index=0&id=5c149ed5&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c149ed5\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"tabs\"\n};\nconst _hoisted_2 = {\n class: \"tabs-dropdown-link\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_AdminToggleDark = _resolveComponent(\"AdminToggleDark\");\n const _component_LanguageSwitcher = _resolveComponent(\"LanguageSwitcher\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"span\", {\n class: \"title\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.refreshDashboard && $options.refreshDashboard(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: $options.iconName,\n class: \"fa-images\"\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.titleName), 1)]), _createVNode(_component_el_dropdown, {\n onCommand: $options.handleTabClick,\n class: \"tabs-dropdown\",\n role: \"navigation\",\n onVisibleChange: $options.handleDropdownVisible,\n \"popper-class\": \"tabs-dropdown-popper\"\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [$props.activeTab !== 'dashboard' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 0,\n command: \"dashboard\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"images\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.fileManagement')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.activeTab !== 'customerConfig' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 1,\n command: \"customerConfig\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"user-cog\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.userManagement')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), $props.activeTab !== 'systemConfig' ? (_openBlock(), _createBlock(_component_el_dropdown_item, {\n key: 2,\n command: \"systemConfig\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cogs\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.systemSettings')), 1)]),\n _: 1\n })) : _createCommentVNode(\"\", true), _createVNode(_component_el_dropdown_item, {\n command: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"upload\",\n style: {\n \"margin-right\": \"5px\",\n \"width\": \"16px\"\n }\n }), _createTextVNode(\" \" + _toDisplayString(_ctx.$t('dashboardTabs.fileUpload')), 1)]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"span\", _hoisted_2, [_createVNode(_component_font_awesome_icon, {\n icon: \"bars\",\n class: \"tabs-arrow\"\n })])]),\n _: 1\n }, 8, [\"onCommand\", \"onVisibleChange\"]), _createVNode(_component_AdminToggleDark), _createVNode(_component_LanguageSwitcher, {\n class: \"tabs-language-switcher\"\n })]);\n}","import \"core-js/modules/es.array.push.js\";\nimport AdminToggleDark from './dashboard/AdminToggleDark.vue';\nimport LanguageSwitcher from '@/components/LanguageSwitcher.vue';\nexport default {\n name: 'DashboardTabs',\n props: {\n activeTab: {\n type: String,\n default: 'dashboard'\n }\n },\n components: {\n AdminToggleDark,\n LanguageSwitcher\n },\n computed: {\n titleName() {\n if (this.activeTab === 'dashboard') {\n return this.$t('dashboardTabs.fileManagement');\n } else if (this.activeTab === 'customerConfig') {\n return this.$t('dashboardTabs.userManagement');\n } else if (this.activeTab === 'systemConfig') {\n return this.$t('dashboardTabs.systemSettings');\n } else {\n return this.$t('dashboardTabs.fileUpload');\n }\n },\n iconName() {\n if (this.activeTab === 'dashboard') {\n return 'images';\n } else if (this.activeTab === 'customerConfig') {\n return 'user-cog';\n } else if (this.activeTab === 'systemConfig') {\n return 'cogs';\n } else {\n return 'upload';\n }\n }\n },\n methods: {\n refreshDashboard() {\n location.reload();\n },\n handleTabClick(tab) {\n this.$router.push(`/${tab}`);\n },\n handleDropdownVisible(isVisible) {\n const arrow = document.querySelector('.tabs-dropdown-link');\n if (isVisible) {\n arrow.classList.add('rotate-up'); // 添加旋转类\n } else {\n arrow.classList.remove('rotate-up'); // 移除旋转类\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DashboardTabs.vue?vue&type=template&id=4e00471a&scoped=true\"\nimport script from \"./DashboardTabs.vue?vue&type=script&lang=js\"\nexport * from \"./DashboardTabs.vue?vue&type=script&lang=js\"\n\nimport \"./DashboardTabs.vue?vue&type=style&index=0&id=4e00471a&scoped=true&lang=css\"\nimport \"./DashboardTabs.vue?vue&type=style&index=1&id=4e00471a&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4e00471a\"]])\n\nexport default __exports__"],"names":["data","bingWallPaperIndex","customWallPaperIndex","backgroundInterval","backgroundInitParams","computed","mapGetters","bkInterval","this","userConfig","bkOpacity","backgroundImagesTemplate","backgroundImagesStyles","watch","useDarkMode","newVal","oldVal","$nextTick","smoothThemeTransition","configKey","containerSelector","useDefaultBackground","autoCreateElements","mounted","injectBackgroundStyles","beforeUnmount","clearInterval","clearBackgroundImages","removeBackgroundStyles","methods","styleId","document","getElementById","style","createElement","id","textContent","head","appendChild","existingStyle","remove","createBackgroundElements","container","console","warn","bg1","className","alt","bg2","insertBefore","firstChild","initializeBackground","querySelector","prepareBackgroundContainer","backgroundConfig","setupBingWallpaper","Array","isArray","length","setupCustomWallpaperCarousel","setupSingleCustomWallpaper","setupDefaultWallpaper","$store","dispatch","then","bingWallPapers","loadBackgroundImage","url","setInterval","switchBingWallpaper","wallpapers","switchCustomWallpaper","wallpaperUrl","isDark","defaultImage","require","imgElement","imageSrc","zIndex","opacity","showImage","requestAnimationFrame","preload","Image","onload","src","onerror","computedStyle","window","getComputedStyle","position","isolation","isBg1Current","curBg","nextBg","nextUrl","setTimeout","clearBackgroundInterval","immediate","transition","undefined","reinitializeBackground","currentBg","newThemeImage","preloadImg","_hoisted_1","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","class","onClick","args","toggleLocale","role","title","$t","icon","name","isZh","$i18n","locale","next","__exports__","isRedirecting","async","fetchWithAuth","options","credentials","headers","response","fetch","status","store","commit","router","push","finally","_hoisted_2","_hoisted_3","_hoisted_4","handleToggleClick","mode","default","isAuto","key","width","height","viewBox","fill","stroke","x","y","cx","cy","r","mask","x1","y1","x2","y2","_","getters","cusDarkMode","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_AdminToggleDark","_component_LanguageSwitcher","refreshDashboard","iconName","titleName","onCommand","handleTabClick","onVisibleChange","handleDropdownVisible","dropdown","activeTab","command","props","type","String","components","AdminToggleDark","LanguageSwitcher","location","reload","tab","$router","isVisible","arrow","classList","add"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/frontend-dist/js/309.b7dca603.js.map.gz b/frontend-dist/js/309.b7dca603.js.map.gz deleted file mode 100644 index 1b25cec6c2d9cec853cb6b06da102b52ee6675a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11806 zcmV+(F5%H1iwFP!000023hjM;cN@jk_*Yp}ifmZRwruCc`MGp=B+J5f9LIK?7w4F@ zw3gOh?JBz~zl7$T(3X-wLee%sNN6FHLfSrYpimN$03YVDWcx3^!gKDO+1=R}$#N1X z?fG#Iv36eW+_$-N@15D%R}w3#WoxF980-@hi<+(`1`|tmcVExJ)WZH^LD|>Sms+wD zVxpo{tC~@=6N8D>Wm%e##8HW4B{45ak|gFNk`>1#X+k6t86#pvmLyXavl6MwL_8x) zl8sM}?A47*S*~tW%JyOliHK8@Gy~Abh?qs_^xwQB&5A^lh^R
Mt9j@$Im!*DrTFgngVd63+JBDy22`D&$giR7LCuNHnBn*B_Ge;4RmjEUikn{L7 z1*9QA7N)Ua2CGMov9`d#GqNhqNTgRj9w;oy;<60ICj-Tr3_nP(ybvf}#^StA80Hg< zu55M@+m&Qs1UbU!R^00GB^m3-L=&oOvRII$g3cA@EO`{4DzaFk^3F-wKG~pc%pl-N zNtzOgls_^S=I!`6@NGuymnBk`fp4RzEmK5PB}pAd9)jd7 M#e!eU&4Uv@U}{$O@$w+Ga<@6H `uKg`2KuH`cv%rWHS1ZbP`68s(=!IDYwghU*2l&eOBMh~;< zSvK1zB?7=1GtbCnL~s`WH4)1hoO?CkJlKsKv;zI?&K0@&QA2U}$|?*@VZxsp{bS26 zOVR2{CypciXXsogqXf?qIt}*`F)d3{T0Rb=49Ha(O{ockO6u{D{AM%30y2 ov+xHP2o|71z|=A=i=(%X8DTra)+dkyTEm*m*gPtclYnlwyhagR&!C)+ zh*MH_O=ej4WKf??*`jDzgl~J6Hag V#jeQGM#B_kfW9m1`O5`9F_d0c4C^TLp za#HrJj9PdG?a|ay7J-g~*(mlSjA4M0(PUUV$TZkONgS85Ct1_*`1|Pi4nO_@I G2^dL; Wo7tBxf>9EyJip7SZ<4PT^t!zsZuE13z*Y`%dO5 zS%}QB)=hJ)f}mRgUdWmp(3a!WVtFgDGz+$~EW515^_{SZ4UVZM R6V`NXpDK_FhN(J}aJ(auWPHE8_xJm `lK&8a#qHbeG-XMX#-q_$bR_% zK24#%sROiXgj!8zwvM2#+wuf^q7xpSgo!X- &!)t-Lh~Tf`hH1x``<2Nfo@;;ZsFdt!bQ2-C!wHhU6?IU5k;+2}%$ zE0gr_k14n89^{sNdUDI+`cK1#@w3Bh%{$X1iXsM!qTFQ>U>~Fb!)j0iY8cy`0JzLJ zTbVsNhGnvx#o*5Z7m5WbOjnk(G)A5PTjFHGT0{j^1-A@pRtfdzb5i!$tjD-9BjcOX z5Zrwb(<6BqgCBh{I=YeJY67EoBVqY7@uQdd(HG-JpOEqyCrW!@3{7rAk4y8YM05a^ z%~&KtNK;S& CNJ~b)Bikoq zaKJk48)p8iKJ1TPp{UpxwT|jED57XQNm!DjVaeKFM=oIljaj_2QC(Ga&dBu c zwEa>{d#YDx`EqNdUygct>*&}G4?tCBnYww$TsJRw_yz2Oq~$FzS!6{%Lycfnc5PHv zmw6+#EaU1jjYY@2Mnx=_W~^*Tp>n;vLbWz&v&`|!A2~p|smreGlr`kOK$-zEPYc!d zgpikV`tUNXGh~+x0(K0o->{oBAz>h`HF#-+#^vk7;G>Z-W;prW67h0No=1^|;C&*v zFlAv8KEN6CH3}+Cm>0n(3j&mp{V*@cn3xl5S>mWKA!jSYRI-?)oRWx}i=hN$-R#I@ z )sj&iK?QBvPf4j0R87p>B)=4TmZGljuw+04axBfB_$lryOBZhDc;T znWQ}@C35%(#Y~k54v2<}921GCl9M!5rpdH*MV826YlLQgiA0WKTG<})@@e~I@NXU2 z7@?8-2;&qk?_k@9%Q-i3NRB|XD6J0r**FaCCmh pUtX1prB4uy8aQ=%xv)5({+@ zNKP7E%ScQyFl#*{WgX9fnWT;lIX=t^rlj1WpYzaUy4Y8 IX8%Ts>NeVj%#EE>fO0^w5fEXU3$0wV!)s9RoO;6|nVk~|IqIW7{> zoF;v;gy`*;-DyIWWCvZ9JY-L@QaZ;?pi#Q&(WS4K&OWb-6#3^_cdj`<$YgUjHV#4r zg4h-$@=|GdFSAV}%n~gT_nF$5{TLMY<^1^su#h_gGGo9Ai5y;Kb7cn14v|QPrI1kT z(L*2-OGlw^Jtd{HGaeO+LHt>|lr!o23V_E37+@gYowFw-a%5@P-_ZeGRA5psK-rYI zN~ERXeR3R=mWIs{3Vas4BBn!=s1hhFw*Ld!R21?gb)g-|E@#W~KDLcAiS`Wb+@wT~ zvVDOQ5}9VIF(Hw|pnN6F`IKdMM`#iqrDe=J!h<0*FeSFhK-tWUC|%-DAZodYD3Ok! z#a+t1fULyK*a-LYFvWYq$9qB|M}12=M(am?kgmDwgRLg4tfB8ud>fiaeLF~87U9Z2 z&VcvHXK>FW-yKsAN(GS$;72nKUcKv2t}w|%lQYP6HH6tpW HsC3vHBnH{X z#VjX{pC#zmRb}ef9e-@cZc==KkfYR%;hdOBcgf0*aHSG0wPh(w_n^@n9eD!ZWGPe2 zuw{G{!e DxS*0x3Fmbn bCMK@pa2&m;v;&< z=$t>OXD9u5Z;f~RC~@QHUZLYRD`lr6-0sQp(V<2pX&HTVXLuj;kH#fJ{DmH!ntr-L zVZmmnPv RL1&%Ask=M%F(TW}Hm zcPb>D8=yu~=g`lNN&Zh=Zibg@3j+o+fNWom<28$)DzcQFu4L!{IeJXUHCPx*(bx}R zftL&ngWtqwUf+modHZEJl|e*>7{fGg!UhDjIJ__8vj-2;z#%y@ox>&sk#d+C6{Ork zjZm9NByx qL}XVmj!=+=ZGuh89yeWMVPO8e F5sY4dI`rZxoPZ4$ax@E1xbbO@v2E wMwa6Tj)-8 z+g72wqOEC$-Myd`mP?jdGm7Jip_EjM9y4v-w_sMPrlA^+-94rlrJ7Pwr&cwmP*$zf zN=<#Sr=TcL3gn5AIM|~Wb_G&%G~MoARGmV3R&&Zy%_;AZ0Y$|wFPMr|?3RiZ&6qYz zC0)%Z)-ocou%M)$8nmZ}*8aZz2loOk<3gKO7Hovj-!ri9i6A`L@V))L{fX0_x)alI zRKo$S?|%OIIcv@ko)@-%bE)y(-TKXMw>EBVUHzRf4jRwuwyxdYeDK!R!w)v^pQqJ3 zxBj*Br;q$TH-1}x mYON^xpkUN=T@<>zh5DWA^ hGHr+($vjkiDh{?R4M!Oi;*cRspazwmnF@<)w#zuI~I za^s!PyvFfJXwDJEQYtn>!) RgFEe`tJNTpIfn>$V=Yqn|;(^%9>Nl{1! zIAudg%|?wMH;ZcWbf-7a!m`T N!#y!d+kwcl)g`Qg@$-!^XFYW(RtZ)l&j6{V!w(`u!v zD~=kA$;*C;ApAeAQWCV{&|G4n)H|0D3c6z3@Z>@4(f}mXDY`Q>myo?00SB8)bpN6m z#B>XY={6z0+$L+bZv2)^O*KBeSATS+8DFNHbzQZ0=SnI U)e6<0 z?b4_b=;}Qb##;kL?owC4styW ZI+kL%RI^4xZz^pIs$#2Mn$cy}98p-* zbVs#>o>U*L2mzthgTjhpb#!%w`P@aTMPb1L;tkcdJ9;}i12E3DlvMivOX{a6sh49- zJpH|@IE6B2 VmDNmQxiaPBHwIkS2Xg+MJfUC`@x-RaikE3XYYE7xST5wEj4}C!})W7kq z`X0I~HOC~DsyJ#^S1X|S!M>dV_2Qn+wa~AMSu-59$eVpoj5lsK&cE9D;&%PDzwWk< zAi|mfQ`slWT}+|_E~ty9rOp^QaA?@Ahriu?_|?v}^NqW&)-PUe+<$H7y^kYq7bsYS zOVj}gXi`B}70YvFn)L|rhT`#$H|v+bpu_XzfB)#x=Kaf?-+Z@q?e_L}uQ%@BYP@}+ z@#psgtiWOA(Bj(RST(hiAL7%8KpV$ra9pB{wbY8aqPD}>it3cjqRrb1=IX m_Ezv`C zY7|LX(-{e|^N$l(SUhbg1SgwjYVpLfp`Fw<&2}`SG!^D|6JZ5q8|WR9W1x;{cgJ3N zMY&YJaI^mKK{Nv38ve2hrc-!jWO{sz;eAf ##KoricASl}Cf zIp6r;uZ`<>>sLQvEBc-5_4jYLU>YLZOy0?bQg5;og0dDZ(#i1T-5pUXOJSkZD}?c( z8VNPc=e<@b@vK=W_0k!S_y)@{ J_=V zMa{AuG>V;VbWQKll?!r%=D_n(UA2xe0k&glMhRy>b^3%Z$Z|C<+}nBW^42#SoA>W* z-T18sffnvu+o)f?+!|WY9Td6*%CnvG7aMQ>t^VF^FBi1E@hyNnf2DE#EjmsN;04pv zRmC_b#5s#Xmq6z-bwPF>Uf c<(PGd0y( zcPZ(J(AF7ZTh&slip41baeHtJV2}z}RiZ?P)(L3j zZxXGC#1p$b#Ui`QVi1dc+(Lui1PlnoFOE2|e p|>ek#M`Gpyoh3%HCxp={K8Ow42*%D&2gU6jFPT~ zFlQKt0G{eO-8Q~)# >j%Rz&a=U~qM^Zj~mTY%rfQ5JC#^%=- z+tG*Jr}L^?XSby#O{L_+p~8vV@Z4qYwQ!2sl?o@5czX~enHNEG`Rp!}`sKIlk3I}Z zrkPAym@5ynnRqRJ3~|h~o)5dzM!oyiB(-b(LLPME!>=2cH|pQ~5t6LjKEl=;Up3CZ zN+XwOSiu%;&4%3tZmD)R8^R6QUOqBM7;^jZTJxe{sb^}MrFJBL*{#^N>hK3{QcG1> z#`z9|Ejx7Su-ihrHP!B>lH<{RT*=WR5qx$fMsjf&Xq6K4qeKB?_$jN TS`=-5whfdVV5d1j}ib%~e;eVvG^! zh-y2Mp;Z*v5*oIYiW 1^6DF=|sh}akkYK2*G*iPTNLh8t zG+3)RpMXQuD!|-hDiuh5yG)Etzw!gAmW84G4?R*m1V8KJ{%uQdTIFBkydhVu>8Tnw z@x7`UMROHmGs4%zMu{|f bRw?m2Vf8>*M*p?ouX~ zdP&W)=*ACZe1jAFnK;W=v*Z%4XI$qOF#|9N7>3)!Ms|FMG DWDmmn2)6P=q|U-4)3EV&d}m^emK7RE1KKY;mkheLD3xYR6;fkpWC<@&c9^@m?= zfA@hf&{MG?7l{jV<6l>{KfO?Y?{?#jHz?_i`~Pfw@W=Xv&xFjxxUhNu4M^T0 Km8puif7M F}H3-XQc->yG+d-MLAI}fk#JiHDB zqv&b6yZ+#l`Zs^rx%n07z} da?1&o%-j$4vrS3SqLx0yuxrkN~qmA zQRq$g^n|0qfu43&p^(^jw`pwzA?=4p(QVwHxT%VZIz3|*Tgl9oPxP) Zox6^wA8r%?bgQ+ zzJGL~e*Y8x(9-vhF1Fe+)G8IVs40%>Z4~mSqINq8)q=nDJd_VUZkO-hv#H|Y6cTCZ zMA)vhyPFfG-pJmQZ@2wpsNh4x0oG)*rm 6eCB;~R9vg1yW;Yp9p` bo(~7bvp t6lJJB@cfV-xA_*YyY2 zc-#Bf+hc~higxSYw?7sjbmt@XLT}@p&zcg)Lb80Nv`ciGuasH_xWHN5 K{Euj(|F wTRel1ehGSpM@)A9}wBugj@}n(2 zA<)jYO;39X)1GF2Ax^K&`{(PQU1@Cm3l28F`z70Cxc}PL)!$Le=J#nm=h-`ZKZ<^e z@ak{)H9P!+|0KkOcS(e$+NQpu68B~cL9vDTaG}WFzBzW-EUMUodlm(=sv5Fx7M8Kf zdvbfZ?wQvjrkGt&F_&1WsdI@#a|T`f=F6sLJ8E$r+{9CJ2}g5ubuMxGkav5 7!>9bI=euo%Vsyo%q2wH#59Pm6_y7Xm8W`6gG<}tKMe^TsZ>g_N;ayYOKr-* z8&}56f}*Q%1U0t8>)OeNvrJtDgcfR!0~E4i6b0bmtfiiHI+8BF>`2 I=qZ7- eRP|a(GrCr4 zYL|c4jZoBVWkFYq!t>pn-GJ%l&)Zb|jYlgr^*Lv~st!5q3Xtct;!w|lfqnanJ<4-- z!K|vqA+YlxNe0|5SX$L-7cg!89H_+5k_}*(FrR;X2p%eJbO!(JIlMGssHYim6n4Q5 z0;hQTme)l$)tyRp8)i|Rub9P}uG-xo4{$D2tGlS#PB-m2qUu$=91EZ_8#Yg??D=_N zNa%k4XY=z%W{zg(=b!Hmjn+Y_7KKx%l2n#Sk^Vg`o=VQoBlh`XQk+YG&Fos~atWJD zoIc$NWP~OSH?}|X@SwFf )amRYPJ0!iUTY&|Hv3~-)(rDo~p zUOp7?0KEf+_~J+X^*fEr8{a>=Fyc7X2}55Oh-ofss<8R!22Ig5u0E*W|Ah1VTpM1n z)S_yDcVXiRA)}zzifS@2n%fp$pN4CpLa$w=QmIf2|0bjW9I9-VYFACehCo_bRWyh4 zJHY48KsU(1xSdjPG^=JK%ldnIVL5sxAnWjZN+CUfX>}<0S~(o)FPN2z25+US4qh@g zW|m57F%MoXbx{w6f|;E^y$4yVdtYpS^FLefJ* juWwwaU;fATmmh3@`4`A|-F;P 8_h^| zrWQ3r(e?GFsq>~f@1JNq6!7jsmvy;JJ{0Tn1>BIZOUD R^fa75 zw<$3zaTxK%;@ Hw{(8na$IrQ){5Y{I1mwzEA}#K zCm8N?(LQPF>=xF*FPuvh*6Cl1I=-RCeYA0WWk0QC>4pC;$GNDjaDFq#UV5?Mle^1h z#VG0w8iEM;%#m8(agO(Uc{O85Qx|hC0UYRBREj>*6|;ynX3go+TsPP2$JV<+Pe++0 zIrR+630^#_Ii~QU(9u=|vQpw0DG1BzIt*>sjIN5wdHkLO9gi5z0CuO >3$*I&s8sK zx(;=)gUuDsC2Yqsm(?yDaV`N((sA{=W~c?FN?Ty?-K^D;34)4iMjJs5%S#edH!UjE zfTr-qw_`3*QS4=4q;E{HDe7%+K#O}pi{pX7G7^vmWfh0sdbq%sLQl`n 8CJux~;*}KhWs0nh<7o3sqp!`hj#IG-NAP zpoB#6INce}8TLa#y0cRlY~nT1=eE+9o(~0S`Y!P0IK PR~o5 zXO{O|=V>?1+9G}G-||ft9`AbT;N{XTZ_vIE2Hw&y(aV+jeSM#o=;#g#&%|{o)NJn{ zfSbf vrvmi8gSIIs9z!C-F zS_}r7)IJ-@n-HIENfGlbox69M;qJBeQ!UYpCZ6FCZc02Qk|&$8w;9 ~1<9rVh?z2r4x(|o&R zGMgk5_mI1My4&G21LuWU%7Wb@ofvK0RkX}%(Ofkkd9mzv{YfVWBM?=6-lbw*bJR)` zfU52j3(eYsS5b{x8}Oi6JMeY~)f7s|Of`WNYSk24cssKRxNx(_Ptb<4S8?8dvojFv zxW|(waxHbyQth($$(BGKH(a?}8n^x93*Hd$2p5Njk1;GN^zu;K%kO%*mQyq-JeS~d zNS>+dm`ezA3E_o^q3rNabO7gI%uZ40 I? zB<3C+F_aapgqIg^!aSzg+Jdf z9nF}x!4@ {V}#iw@`oy! z$Y51xgK>depmS5?_pa-~pw`uAF>n|*60cHORul^yQv6^8mE}NnEz}p ~-5wD?fmCq~o=NAMZ!kje=SF zkG30>c~hzbhc@h|q!;b1P7x7v68-UKcokyV|8)C5gH-G;L$1oN;EH!+a}zh%kKDw^ zlZY#g1;w)ClFH~ZDVAlfdb#n=(=i!d*A?~rL3$7+ LEO`=fSUF!basb&!)&mzJo5733hXD|QqtRY0 z!l%@|M7Y1^4F&z=KzcZEoO)NEEiUsMH(1C4+rx-qFQDBK155fI#tW}5Et1f?v&uDZ zk(9CMhp$gZUP&4cB%h){lCBe(d}=&Tg71;soux^-x+UXN?XlZRk?aCDKD-bBA#aMl zIo9DF%NGM%QY_-`aFhkEGZim?#`NXxXJ2uYg>x^*!wCh{9h%L4MP4hwg`xQ!qsde> zeaPt&-s%zqTcB|1XH>>C+es Ynd=J%Cm|;MyEU)@drvtCJMhilm@4|^H2B&!+`dnNy8D?4F+sm%nGh57JC+GC z;eDABz9t`c{Rk4l-lC+xgRfDtF~aXrCd5SaMM~fT{X!$SlCdA;1Dg16D#DQb9c1ov z_>I 3wj`c`a0 zOazvlgqUc42XR2hJnf8rB_bgv@QWNUrtSWscObg$n|wvUt&Y9W-mMH@4G)@&d-otp z_N@t=NvaW^&A{E5OUglSEjBo(Trs!xq8!}I8oee_MET3|kqt2M06*?3cGL#E(*lF3 z5~p13qUeN}IO|#((=!3yrPB;R ?gjQ^#$_;jc{^tE`keRfs{=Xm=Eu9K2WfAj(cZNb z)XMqS1Ne-|SD@10GedB&ra)=IS;IfD;RVWtksxXrs2}`bD}}q6f~}jU4BYvOY)3B> zX026%0{+!gK!VP7jOAbe)CLN|ppu0*P@x81c13MwJ%Pu7NAL&%|B4d~3UBU#UEp8Y zL*;Vm;NEXzCXFh(`>vDQ8BHU+T82O9 J z%ORP}o;f($v!2d*Q4vlu3r(39zd%{B2wtC7GE7UwvcXfQ#e{9vtb%&fG@Zm?B605j M02}~Fd6=;P0GALy0ssI2 diff --git a/frontend-dist/js/309.b7dca603.js b/frontend-dist/js/309.bfaaa238.js similarity index 99% rename from frontend-dist/js/309.b7dca603.js rename to frontend-dist/js/309.bfaaa238.js index 750891f2..dc8f6fe2 100644 --- a/frontend-dist/js/309.b7dca603.js +++ b/frontend-dist/js/309.bfaaa238.js @@ -1,2 +1,2 @@ "use strict";(self["webpackChunksanyue_imghub"]=self["webpackChunksanyue_imghub"]||[]).push([[309],{213:function(e,t,n){n(85331),n(19104)},4318:function(){},7835:function(e,t,n){e.exports=n.p+"img/background-light.f17603bc.jpg"},10456:function(e,t,n){n(85331)},10732:function(e,t,n){e.exports=n.p+"img/background.ea1b7ee7.jpg"},18785:function(e,t,n){n(85331)},19104:function(e,t,n){n(85331)},23597:function(e,t,n){n(85331)},30694:function(e,t,n){n(85331)},38736:function(e,t,n){n(85331)},40670:function(e,t,n){n(85331),n(99648),n(19104),n(85970)},48903:function(e,t,n){var a=n(60782);t.A={data(){return{bingWallPaperIndex:0,customWallPaperIndex:0,backgroundInterval:null,backgroundInitParams:null}},computed:{...(0,a.L8)(["userConfig","bingWallPapers","useDarkMode"]),bkInterval(){return this.userConfig?.bkInterval||3e3},bkOpacity(){return this.userConfig?.bkOpacity||1},backgroundImagesTemplate(){return'\n \n
\n '},backgroundImagesStyles(){return"\n .background-image1 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n .background-image2 {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n z-index: -1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 1.2s ease-in-out, filter 0.3s ease;\n filter: var(--background-image-filter, brightness(1));\n }\n "}},watch:{useDarkMode(e,t){e!==t&&this.backgroundInitParams&&this.$nextTick(()=>{this.smoothThemeTransition(this.backgroundInitParams.configKey,this.backgroundInitParams.containerSelector,this.backgroundInitParams.useDefaultBackground,this.backgroundInitParams.autoCreateElements)})}},mounted(){this.injectBackgroundStyles()},beforeUnmount(){this.backgroundInterval&&clearInterval(this.backgroundInterval),this.clearBackgroundImages(!0),this.removeBackgroundStyles()},methods:{injectBackgroundStyles(){const e="background-manager-styles";if(!document.getElementById(e)){const t=document.createElement("style");t.id=e,t.textContent=this.backgroundImagesStyles,document.head.appendChild(t)}},removeBackgroundStyles(){const e="background-manager-styles",t=document.getElementById(e);t&&t.remove()},createBackgroundElements(e){if(!e)return void console.warn("未提供有效的容器元素");if(document.getElementById("bg1")||document.getElementById("bg2"))return;const t=document.createElement("img");t.id="bg1",t.className="background-image1",t.alt="Background Image";const n=document.createElement("img");n.id="bg2",n.className="background-image2",n.alt="Background Image",e.insertBefore(t,e.firstChild),e.insertBefore(n,e.firstChild)},initializeBackground(e,t=".login",n=!1,a=!1){this.backgroundInitParams={configKey:e,containerSelector:t,useDefaultBackground:n,autoCreateElements:a};const s=document.querySelector(t);this.prepareBackgroundContainer(s),a&&(!s||document.getElementById("bg1")&&document.getElementById("bg2")||this.createBackgroundElements(s));const i=document.getElementById("bg1"),o=document.getElementById("bg2");if(!i||!o)return void console.warn("背景图元素 #bg1 或 #bg2 未找到,请确保页面中包含这些元素或启用 autoCreateElements");const r=this.userConfig?.[e];"bing"===r?this.setupBingWallpaper(i,o,t):Array.isArray(r)&&r.length>1?this.setupCustomWallpaperCarousel(i,o,r,t):Array.isArray(r)&&1===r.length?this.setupSingleCustomWallpaper(i,r[0],t):n&&this.setupDefaultWallpaper(i,t)},setupBingWallpaper(e,t,n){this.$store.dispatch("fetchBingWallPapers").then(()=>{0!==this.bingWallPapers.length&&(this.loadBackgroundImage(e,this.bingWallPapers[this.bingWallPaperIndex]?.url,n),this.backgroundInterval=setInterval(()=>{this.switchBingWallpaper(e,t)},this.bkInterval))})},setupCustomWallpaperCarousel(e,t,n,a){this.loadBackgroundImage(e,n[this.customWallPaperIndex],a),this.backgroundInterval=setInterval(()=>{this.switchCustomWallpaper(e,t,n)},this.bkInterval)},setupSingleCustomWallpaper(e,t,n){this.loadBackgroundImage(e,t,n)},setupDefaultWallpaper(e,t){const a=this.useDarkMode,s=n(a?10732:7835);this.loadBackgroundImage(e,s,t)},loadBackgroundImage(e,t,n){e.style.zIndex=-1,e.style.opacity=0;const a=document.querySelector(n);this.prepareBackgroundContainer(a);const s=()=>{requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.style.opacity=this.bkOpacity})})},i=new Image;i.onload=()=>{e.src=t,s()},i.onerror=()=>{e.src=t,s()},i.src=t},prepareBackgroundContainer(e){if(!e)return;const t=window.getComputedStyle(e);"static"===t.position&&(e.style.position="relative"),"auto"===t.zIndex&&(e.style.zIndex="0"),e.style.isolation="isolate"},switchBingWallpaper(e,t){if(0===this.bingWallPapers.length)return;const n=0!=e.style.opacity,a=n?e:t,s=n?t:e;this.bingWallPaperIndex=(this.bingWallPaperIndex+1)%this.bingWallPapers.length;const i=this.bingWallPapers[this.bingWallPaperIndex]?.url;a.style.zIndex=-2,s.style.zIndex=-1;const o=new Image;o.onload=()=>{s.src=i,setTimeout(()=>{s.style.opacity=this.bkOpacity,setTimeout(()=>{a.style.opacity=0},1200)},50)},o.src=i},switchCustomWallpaper(e,t,n){const a=0!=e.style.opacity,s=a?e:t,i=a?t:e;this.customWallPaperIndex=(this.customWallPaperIndex+1)%n.length;const o=n[this.customWallPaperIndex];s.style.zIndex=-2,i.style.zIndex=-1;const r=new Image;r.onload=()=>{i.src=o,setTimeout(()=>{i.style.opacity=this.bkOpacity,setTimeout(()=>{s.style.opacity=0},1200)},50)},r.src=o},clearBackgroundInterval(){this.backgroundInterval&&(clearInterval(this.backgroundInterval),this.backgroundInterval=null)},clearBackgroundImages(e=!1){const t=document.getElementById("bg1"),n=document.getElementById("bg2");e?(t&&(t.style.transition="none",t.style.opacity=0,t.src="",setTimeout(()=>{t&&(t.style.transition="opacity 1.2s ease-in-out")},50)),n&&(n.style.transition="none",n.style.opacity=0,n.src="",setTimeout(()=>{n&&(n.style.transition="opacity 1.2s ease-in-out")},50))):(t&&(t.style.opacity=0,setTimeout(()=>{t&&(t.src="")},1200)),n&&(n.style.opacity=0,setTimeout(()=>{n&&(n.src="")},1200)))},smoothThemeTransition(e,t=".login",a=!1,s=!1){const i=this.userConfig?.[e];if(!a||void 0!==i)return void this.reinitializeBackground(e,t,a,s);const o=document.getElementById("bg1"),r=document.getElementById("bg2");if(!o||!r)return void this.reinitializeBackground(e,t,a,s);const l=0!=o.style.opacity?o:r,c=0!=o.style.opacity?r:o,u=this.useDarkMode,d=n(u?10732:7835),g=new Image;g.onload=()=>{c.src=d,c.onload=()=>{l.style.opacity=0,setTimeout(()=>{c.style.opacity=this.bkOpacity},50)}},g.onerror=()=>{console.warn("主题背景图预加载失败,回退到直接切换"),this.reinitializeBackground(e,t,a,s)},g.src=d},reinitializeBackground(e,t=".login",n=!1,a=!1){this.clearBackgroundInterval(),this.clearBackgroundImages(!0),this.bingWallPaperIndex=0,this.customWallPaperIndex=0,setTimeout(()=>{this.initializeBackground(e,t,n,a)},100)}}}},54047:function(e,t,n){n.d(t,{A:function(){return u}});var a=n(56768);const s=["title"];function i(e,t,n,i,o,r){const l=(0,a.g2)("font-awesome-icon");return(0,a.uX)(),(0,a.CE)("span",{class:"language-switcher",onClick:t[0]||(t[0]=(...e)=>r.toggleLocale&&r.toggleLocale(...e)),role:"button",title:e.$t("language.switchTo")},[(0,a.bF)(l,{icon:"globe",class:"lang-icon"})],8,s)}var o=n(46638),r={name:"LanguageSwitcher",computed:{isZh(){return"zh-CN"===this.$i18n.locale}},methods:{toggleLocale(){const e=this.isZh?"en":"zh-CN";(0,o.xS)(e)}}},l=n(71241);const c=(0,l.A)(r,[["render",i],["__scopeId","data-v-08567d0a"]]);var u=c},67819:function(e,t,n){n(85331)},70797:function(e,t,n){n.d(t,{A:function(){return o}});n(44114);var a=n(25507),s=n(16915);let i=!1;async function o(e,t={}){t.credentials="include",t.headers={...t.headers};const n=await fetch(e,t);return 401!==n.status||i||(i=!0,a.A.commit("setAdminLoggedIn",!1),s.A.push("/adminLogin").finally(()=>{i=!1})),n}},77128:function(e,t,n){n(85331),n(4318)},78450:function(e,t,n){n(85331)},85970:function(e,t,n){n(85331)},88830:function(e,t,n){n(85331)},96808:function(e,t,n){n(85331),n(18785),n(67819),n(85970),n(19104)},97247:function(e,t,n){n.d(t,{A:function(){return C}});var a=n(54047),s=n(56768),i=n(45130),o=n(24232);const r={id:"themeMaskAdmin"},l=["cx","cy","r"],c=["r"],u=["opacity"];function d(e,t,n,a,d,g){const m=(0,s.g2)("font-awesome-icon");return(0,s.uX)(),(0,s.CE)("div",{id:"themeToggle",onClick:t[0]||(t[0]=(...e)=>g.handleToggleClick&&g.handleToggleClick(...e))},[(0,s.bF)(i.eB,{name:"icon-fade",mode:"out-in"},{default:(0,s.k6)(()=>[d.isAuto?((0,s.uX)(),(0,s.Wv)(m,{key:"auto-mode",icon:"circle-half-stroke",class:"auto-icon",style:{"font-size":"1.3em",color:"var(--admin-theme-toggle-color)"}})):((0,s.uX)(),(0,s.CE)("svg",{key:"sun-moon",class:(0,o.C4)(["theme_toggle_svg",{dark:d.isDark}]),width:"1.3em",height:"1.3em",viewBox:"0 0 24 24",fill:"none","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round",stroke:"currentColor"},[(0,s.Lk)("mask",r,[t[1]||(t[1]=(0,s.Lk)("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:"white"},null,-1)),(0,s.Lk)("circle",{class:"theme_toggle_circle1",fill:"black",cx:d.isDark?"50%":"100%",cy:d.isDark?"23%":"0%",r:d.isDark?"9":"5"},null,8,l)]),(0,s.Lk)("circle",{class:"theme_toggle_circle2",cx:"12",cy:"12",r:d.isDark?"9":"5",mask:"url(#themeMaskAdmin)"},null,8,c),(0,s.Lk)("g",{class:"theme_toggle_g",stroke:"currentColor",opacity:d.isDark?0:1},[...t[2]||(t[2]=[(0,s.Lk)("line",{x1:"12",y1:"1",x2:"12",y2:"3"},null,-1),(0,s.Lk)("line",{x1:"12",y1:"21",x2:"12",y2:"23"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"},null,-1),(0,s.Lk)("line",{x1:"1",y1:"12",x2:"3",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"21",y1:"12",x2:"23",y2:"12"},null,-1),(0,s.Lk)("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"},null,-1),(0,s.Lk)("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"},null,-1)])],8,u)],2))]),_:1})])}var g={name:"ToggleDark",data(){return{isDark:this.$store.getters.useDarkMode,isAuto:!this.$store.getters.cusDarkMode}},methods:{handleToggleClick(){this.isAuto?(this.isDark=!1,this.isAuto=!1,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):this.isDark?(this.isAuto=!0,this.$store.commit("setCusDarkMode",!1)):(this.isDark=!0,this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0))}}},m=n(71241);const h=(0,m.A)(g,[["render",d],["__scopeId","data-v-5c149ed5"]]);var p=h,k=n(62086);n(85331),n(40670),n(88830),n(23597);const b={class:"tabs"},y={class:"tabs-dropdown-link"};function f(e,t,n,i,r,l){const c=(0,s.g2)("font-awesome-icon"),u=k.c6,d=k.Iy,g=k.dW,m=p,h=a.A;return(0,s.uX)(),(0,s.CE)("div",b,[(0,s.Lk)("span",{class:"title",onClick:t[0]||(t[0]=(...e)=>l.refreshDashboard&&l.refreshDashboard(...e))},[(0,s.bF)(c,{icon:l.iconName,class:"fa-images"},null,8,["icon"]),(0,s.eW)(" "+(0,o.v_)(l.titleName),1)]),(0,s.bF)(g,{onCommand:l.handleTabClick,class:"tabs-dropdown",role:"navigation",onVisibleChange:l.handleDropdownVisible,"popper-class":"tabs-dropdown-popper"},{dropdown:(0,s.k6)(()=>[(0,s.bF)(d,null,{default:(0,s.k6)(()=>["dashboard"!==n.activeTab?((0,s.uX)(),(0,s.Wv)(u,{key:0,command:"dashboard"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"images",style:{"margin-right":"5px",width:"16px"}}),(0,s.eW)(" "+(0,o.v_)(e.$t("dashboardTabs.fileManagement")),1)]),_:1})):(0,s.Q3)("",!0),"customerConfig"!==n.activeTab?((0,s.uX)(),(0,s.Wv)(u,{key:1,command:"customerConfig"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"user-cog",style:{"margin-right":"5px",width:"16px"}}),(0,s.eW)(" "+(0,o.v_)(e.$t("dashboardTabs.userManagement")),1)]),_:1})):(0,s.Q3)("",!0),"systemConfig"!==n.activeTab?((0,s.uX)(),(0,s.Wv)(u,{key:2,command:"systemConfig"},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"cogs",style:{"margin-right":"5px",width:"16px"}}),(0,s.eW)(" "+(0,o.v_)(e.$t("dashboardTabs.systemSettings")),1)]),_:1})):(0,s.Q3)("",!0),(0,s.bF)(u,{command:""},{default:(0,s.k6)(()=>[(0,s.bF)(c,{icon:"upload",style:{"margin-right":"5px",width:"16px"}}),(0,s.eW)(" "+(0,o.v_)(e.$t("dashboardTabs.fileUpload")),1)]),_:1})]),_:1})]),default:(0,s.k6)(()=>[(0,s.Lk)("span",y,[(0,s.bF)(c,{icon:"bars",class:"tabs-arrow"})])]),_:1},8,["onCommand","onVisibleChange"]),(0,s.bF)(m),(0,s.bF)(h,{class:"tabs-language-switcher"})])}n(44114);var I={name:"DashboardTabs",props:{activeTab:{type:String,default:"dashboard"}},components:{AdminToggleDark:p,LanguageSwitcher:a.A},computed:{titleName(){return"dashboard"===this.activeTab?this.$t("dashboardTabs.fileManagement"):"customerConfig"===this.activeTab?this.$t("dashboardTabs.userManagement"):"systemConfig"===this.activeTab?this.$t("dashboardTabs.systemSettings"):this.$t("dashboardTabs.fileUpload")},iconName(){return"dashboard"===this.activeTab?"images":"customerConfig"===this.activeTab?"user-cog":"systemConfig"===this.activeTab?"cogs":"upload"}},methods:{refreshDashboard(){location.reload()},handleTabClick(e){this.$router.push(`/${e}`)},handleDropdownVisible(e){const t=document.querySelector(".tabs-dropdown-link");e?t.classList.add("rotate-up"):t.classList.remove("rotate-up")}}};const v=(0,m.A)(I,[["render",f],["__scopeId","data-v-4e00471a"]]);var C=v}}]); -//# sourceMappingURL=309.b7dca603.js.map \ No newline at end of file +//# sourceMappingURL=309.bfaaa238.js.map \ No newline at end of file diff --git a/frontend-dist/js/309.bfaaa238.js.gz b/frontend-dist/js/309.bfaaa238.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..10b7099081de7de9d81f33e08348db05b0e29c96 GIT binary patch literal 4310 zcmV;{5Gn5;iwFP!000026YW~
Yuq{89s%Si(SNP=DpxAliMsOzLij0Ol=G)@5*P1?lyXKv5FPx%)LlJln5 zy$x#QOZUS{8j{aDpXbMi1JZ;v5-DgPLElP9JRX1xGMeLHdNxVfG{NjDC6DPWnxrEz z^lzN8Tn>iNo~Oyg8VuUb$q+4CZrdBDERd8liy(;@TrjJ5)NZ>FG0Q!1oes=Ur|tHt zd2o@TZm)f`v69&2a?XWJd}hyI2Xq$Q8R1|W37)dB8PjMY?XlZEcG{!Bes>;$47pC{ z=y<0HYP{QS-Hwq>usiA!(k)o@y1k=)ER>Ra##`;9lkT4JwsU;4Z+*MhZSPaD;~aOL zeO@>@Iqvi-cOW%%(sk6*-ifp6z;i4b*k{(U)9tljU)p#5MTjM~;6f0Y3bq(g7QKVx z`0IF1#C;Z$OV2?;nn*s|cw8CwK9fY8 3 BoG zgRuRe2dx1}6C%zy8`B6Nup&ePkQ#jxi|JcDBwz^9Xj(8V1#id+P3(%wsa;K4F59G? zq0#hD<~X48YVV?a&T{Eybwy@4BFQ5%o5xs^lE9b#k~Q+bKc=&&K|>#mA{R7*7$=Dj zYB5d~1s61MEPZgVeBRKM!JRj@Qflp_)Vi6{mo^o6D6e9Yl;VSmsl6d;V^NJZ8grgd z6-i!WOfN~;ua8MS_ZrU1qnM24`m+lf%8A!-9p|-`=M$o~|CRwhdY1&UIi}KU1pJ(c zmC+|ns^hTHbo;B4Qswt1IVVgeUW0K)R>>L z-B78of;~5@GNaL_VpPP2Mc_gihrqnpo^u*D6n7pI`vMDQf#*N`*XMut{ koc*{k`ve_Q{U{RMy=ki7vEox!g0}0x)OZzsU`B78Op=gpss$ z<^39-k!^JxNqc+!%{j3fI5E4Z@QCf>q{p{&Ld2#lAwu5M+scxN*kdXZsiOd{53|+b z3{gfU#W8(SbDm0RKCojRQ3eq64_t)(19!_-EwX~YD6^7B&_?$0B-)l`Jcc&2iHEb? zdP!xyZ>2 hI@-xWAv3&LVWVJm7ma%je&D@A(HGUw`ci{`3dxORJ%_()T~Te)@~w z{rbJnKmM=Je)98Yzx~mRpZw>GAAR)fm;ZkK-uJHG|F_S7`@ysS{?IIc{`3de?|=N+ z-~X(!=?G9LCj1SAJRrlq2I#=|eQ|2)7?J7xUJlyl3bb1kaU`L4R|tG%(?ow-0v;X; zJ0>iWlQ-Pj+OzV2p;w<_!PA7qnu^#?$5rfeS~W@!DT`vVM$e*144k1N#PV{iC+A^V zpC@64wy2YzpG+lBBp1XEX);%kzyf0;gUP+sGYhokgfLU<9fc6|{#lum3x9ZM3S7)_ zxK_p#+s$=@&1d>VHaxXc5hDiCj)LhYM3zOhhC(iAP5x3}nB{cJa}-qN9_@9QwiCj+ zrM9cYi~`#Zl|zJoKk3&UZv3^WK`#FGD5*Pnhc`6Q?Xjc5pxHLK+%^SNM2XKVd}?|Y zszZ|JvF&UUZT;OMEQqZuwf#g}&2PG>c# +h&M~3z& zw1!AZP;fz6$S+iCKFiw^8Z9ZX0}_cP4OFs|c5&!BJhTd}ibp;WB*v1S695rVDb*}7 z9;z+KT?QNgOQ+F<$JkIYUkS+2u5GDQaQuB4WmP@qI|u%n6A<>
C zr84BU9MxPqQvbN&QaEZyGAVZ979S)&);^# >@~h&F?u@#C;JU743`Y8pYW>Q-_8T1b(<69mRh5_m2i`@Ia?Bqh&N6Y z+o2!33Hp&!ODYVI8>4D__&~Kv)JbE_OzMdUd;m5qx{J`R{s}O)hDfC}wo?MOApzSZ z!7f5KNdUbSD^#3zsHnNaJYZJk-@P`UwYpXn^sRlEm7|b41)-$oc)A@LtNMbMOAX%@ z?xQP!KJQ5EI(Z?C5?F5I8v;wb%$b5Omj~ka6(Lqxi?3SslzRdN+XjTkQMw6yLZ4Y_ z9r&QAmRF*cyb@^NgeX{f8sF&GU_Zpr=_EtZDtcHwTs`~c|GfC arw76TpDa?a1 z%`(_8?xl{7yT`o>bq;`}GA3ZyFV;0^&QzZai@g~8`X(uAK?{sIlTCa<5 }ki(!YQfMEdL5m!SocIc5MYbO*)*F=kP!TEnKM69EusXE6Kq@pdnz?77@iRiJjfY5EY+#*-)QoUNp%zS zWYRqQ8Yp1ptJLi=JJxDswNB}ZdQ~gYL`d?D$tfTVcsa4Y Z-A)ymt)nBS3-vM1Jw9=dU_U0R2pqV5oLsS>QAQ}& zn|YDJg>L ?!1q<1 z!!k{lOS)WI)IU)1a@P*{Y(`Z>naI20jIswjib!~$0d(L(l-PI8{XV#Z^HItGw8xa; zIKIm9n}6VDs+wjQ>UP~$Z{OXsy7^c3?RAcvJ@(fZ()-4Hz4pHGljEMVR}OuNufFI= zsP4dPFDaaKTenL}XDdlbr8MJulb_Ua)#@C%ZAW$XnAPgE+O4W(wxFR0qyiIf;bf|P z0aWx4KyV2V2(ADE0t`{$5A Q*!0$Lv~XU1jwYxfQld{%?Xaj%|r@5t#YQG zt8IidRPYwYd wX($uzUn!MN4;}B$-f~#ANoSa7>7cWU! zbH)`%BZJO{XC3vjgC_de5PfWxgjh^HrMCi3*$^UgJ6lMW-^ms~&ndaM$1gqLG@M4O z(`a=78q+xTa=;FZ`b|v)c%W51iYX%jo&yi)8ooO4E~l&-F#{e5QXvSFXG(ieIQhX8 zT408gDL?`Z h_0zlcedw+`5{c zad1_xSL|p8-Ga_2#=#Vz;Ig#pDL8Uo0|mF>sy5JSs{!>`)SjLI4;&Su^iT|kw-lzO z`2)A5+3C+s`bZhk1F49uS5~tItat}?&e0C0(GHiP;)cCs?Raj62CDcBTE=g!p