From 6c16860faef46da897df12191cb96d3829448a99 Mon Sep 17 00:00:00 2001 From: zhouwentao Date: Thu, 18 Dec 2025 21:35:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=99=BB=E5=BD=95=E3=80=81=E9=80=80?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 17 +++++++- prettier.config.mjs | 18 ++++++++ public/beian.ico | Bin 0 -> 3706 bytes src/components/TheFooter.vue | 2 +- src/components/TheNavigation.vue | 15 +++---- src/pages/index.vue | 4 +- src/service/request/index.ts | 70 +++++++++++++++---------------- src/stores/user.ts | 28 ++++++++++--- task_detail.md | 13 +++--- 9 files changed, 108 insertions(+), 59 deletions(-) create mode 100644 prettier.config.mjs create mode 100644 public/beian.ico diff --git a/.vscode/settings.json b/.vscode/settings.json index 51c04f1..77303a3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,20 @@ { - "cSpell.words": ["Vitesse", "Vite", "unocss", "vitest", "vueuse", "pinia", "demi", "antfu", "iconify", "intlify", "vitejs", "unplugin", "pnpm"], + "cSpell.words": [ + "antfu", + "demi", + "iconify", + "intlify", + "pinia", + "pnpm", + "realname", + "unocss", + "unplugin", + "Vite", + "vitejs", + "Vitesse", + "vitest", + "vueuse" + ], "i18n-ally.sourceLanguage": "zh-CN", "i18n-ally.keystyle": "nested", "i18n-ally.localesPaths": "locales", diff --git a/prettier.config.mjs b/prettier.config.mjs new file mode 100644 index 0000000..8efdaae --- /dev/null +++ b/prettier.config.mjs @@ -0,0 +1,18 @@ +/** + * @see https://prettier.io/docs/configuration + * @type {import("prettier").Config} + */ +const config = { + printWidth: 120, + tabWidth: 2, + useTabs: false, + semi: false, + singleQuote: true, + quoteProps: "as-needed", + bracketSpacing: true, + arrowParens: "avoid", + htmlWhitespaceSensitivity: "ignore", + bracketSameLine: true, +}; + +export default config; \ No newline at end of file diff --git a/public/beian.ico b/public/beian.ico new file mode 100644 index 0000000000000000000000000000000000000000..d305742a321aa53a4a61f8085b9173c04e527f15 GIT binary patch literal 3706 zcmaJ^c{r5q+a5;QqbylcgDizv3~2^ojAdTNo_!mP!I;I&WH0-!1%+f+Ng*vt3L)YZ z*=0{cAzKsK>NnosTi^G`*Y_O9^W67+9p`yo*L7d#KTnc{nGrva1P=fJ;KvxFtyn8) z@8#Oh`qD!~nXE;eVPMa&rg$@ga5OwX&x_)L2VqD!0^SOb^9l)Q$7=xqK#;GEJ;NSr ziu9zAz_>jOIG99bu>k-ronR`?lZa=4Jn#fxvbN0f^9C7^ua~xrojMkZrRw8-e2qhC zc~QwP*4y!2o9#u2oM+of!NbfRaIdjROlgO1}<2IOqczofX353 zX}(m3FNF-+Q^a{t&M~xQSe5>_1rqhQESdiAHL)%X5{#olU|{H8OTU0v?EeoXk$$7; z3@iNq)cb!5(``bic!(9APB};OWDU++b}tnbsZYb>7!;Zfh2sC~7A<@z3<}+cLIvqt ztAp%($zGHo`afta7KtI#891^h9)s4FVe!GfzFtVQ0U8R2!VLA)(1tLWfrj2`Rs^o0 z4_8C!8>p$D{>4R8JkOEvWX3P9*Ke*W^pD&0}GE-`iE7Na6NqI*jA1B1ex6`{(Uwj2D=EtLEE7@tHzeO&?buK&&Y7ejB1 zbKZ-o-4xBbpfQT9{u$uUR+yqP3{x<#U<*o3o%U!{Wddx~bWw%7+Z)BBAnF4Ds~)H9 z)4G;BYH7AbQxeo#RF%85{J>xUkLW3aPQ_}tvAK2#>Gc z^#Tu2k7R{IqgK>-Zz*w!aEcmTT6Snb$^rW3J*BKT55LhOPf@!qnxuRtyMiz#*2rw; z^4hfdqm8a%IikGH$)h#>uOnan1hKJcMy7Me64)@{#3S2&&s;-1PAOT)gLAj!Ze&`L z@@t_N>ufF2p*ar$0>)WI)DJf-ry{Xz^`Y^-ty-P(x3eCc5SI%dkuvI^HnKfkYPP*{ z^-bCr4d*L@hXs(9df(aj6lv}di<(Bidq8=_rDCtGkKZ7+@Wy_tGfK-&;r`ppm>Q+F z?iN)op_zj{%83ZU-0n$BLH^nUp#lr1Vwl6JWA``5qCd2b;pLV!5a+Y*KgGa%U*w6} ze<5eRPCaNUmUf-*$b-I89=V4+#_DXhLMh26b`$26ww>x5lyJ_p#Eezdby>!M*pMB_}O;T_0z60ydFatG|Oh3B@*%lB;GU3Dors=P|=3RY;=+3A{U zHOggY@TDxMoDloG?Unm7-(cicMxm6By*A~tUV#~9Q2))qer1@F9Cv>xuTAci5 zCD3)%JhN-p*FHHKi*KEvCP{fm98T0$iQHl9_TnoS1it@z$>wQ8^+0)<#AOk{g^9IN zC!VbGdmCPjNwpIRZlht}=!Kzz`@n09xl;}9x=SMcbxv;Tl9j^qbC)Y#b>`_;k4sK? zB6y`QxX&o_Ut(`G^!`C1tRUzU9I={Qin>;YG1s6RiABI-g{c$jjqmZ5@1yL}NC+qY zi`CYK@kD8xFcFk!!|0r-rtW)?hetqPTD-b*gp&pZG5+o9JJ`;vXp%QJgl&l|Kot)3 zvNpph6!*XFbggdVyQFBHw(n9G68fU-&|f!-bMn#taifu+$))+Fx98{C<%<^rPe=#m z4VbF*-bK;k1$s@-sCzgbJvn$M(liyZKNsxaT(hG$)Fh`AJ2kAZGBeF92AgmDjYaMQcFHLybLZnE3xaf| zuCrD41CEsYZI;{>g84}cH8bDToKNi@+YhP%nCEV$i7eSt3uL4vhQS?N)}K75x8A)# zNFue^e6XgRW6m1;xqHtyCAOc-gL~4;&~m09lyvv#+`mMvF0x8mAxC;iChV=1ozZF>frOBSQX?mJtU>&C@rW zZyIX5UxwP?K!x+}u<_ z1M}k$Dt_guEQz?0x8TUHb@q|BZnF8E2%7C+$@$9f@@78*M{VzvbqXu|EWawA9@^6M z6AboxKU%aA-#ld2xRff=T$ht`?3iDmWY)bQ`|~(~17iVk3|E1wJU7vF;^EROt~n{M z!}M>gt)v`YD^Q$}R+w8;bnK4@ z-gE{7L;5%&9iz!ZJSDyNZf%;lrR)4?wvE@YkAIp`c-gAFW@`FC^4FtI-J)5&VW=Z~ z+Vwd1#50P^>C$k+NKBH9jT^C~6BENQ;Vdf??OlNAvM1@HleA)uZst!P67qYg7NI4u zQYY>7tm2e(YfJ6HkyxVVv-Y^ra{WnV>7&Vtc%bER=KS9%>yTw1RO3$R?CX{S8)8RM zLIy~qpHC}~SL<^bkHQqF?%K)L)dhHHw`!8|_{tE59h1uDTHbn}F92 z4>x_v@wm$)?JIt$G^rh3{qU-i2>i`jUrL@eVKFV=ahIbyQ^cjSLMS`@yI3_)z%U37 zwLPp}&&h|a2M!FHsh%_;e7g2J3)&A(?8WiIk-TC+eeQz>c>%`bTn{vSdmbi$b(X$h ztC}Pzeez>xYkET7zWCO)iXbH2od{G!ucf7bdgT}E$cBKe`~dJYe4Qtx^`<8{ZwT)m zbg0$WvD-S$95;O!Gcs{;|I^7hPP6CMqw5#t4et-@(k@y+i7~Ej1qA21&@9TA8=hiM z`wf&A8WOB}AZW;udJw7f@eK#j%V8*t{UFEYy>W=9C?r^_ZfDSb=~%+isvN)M@=T(q z9=C!JcJ7OKU%rUXi9w4O4RPQ2@9KKKj%W`%B)i*k?1KB_AO(ZDrn|{9pX-}cfQn=3 z0NE;?oa@{%%xt{U(c>?s&naV&PBu)5nrW1&-@4AX^(PpVS)-9)kNO+UZN2B>#kFEx zYg#0!XwHS~ES}{_vm52_{rw#YQd-|@u4ZgJktOyAI<>tQB*QZ^e)^j%&J&tr(M3Zc z8_a7t$D<+*sE-YGc@yHxCXYChYd&YZ(BC-oXq`OtaqQtrCN^Sew0bwB_>eniOEuEa zTc>$TtCqf1cORy2R58tQrKEbC41PMCFmZtxAHev#$dAK>88e##B(`<`Wp`mh{sZO? zee(RI!qNi-KFt+LpBb;tKkX^GS){M@svSQ0Bs~Ea^Mq_-yQm#+T0FQtDe2CPXwdwT b1poq|)tZ_bZ|ev4{su7yX6Q diff --git a/src/components/TheNavigation.vue b/src/components/TheNavigation.vue index 4f8134f..bb9a2be 100644 --- a/src/components/TheNavigation.vue +++ b/src/components/TheNavigation.vue @@ -14,6 +14,9 @@ const isMobileMenuOpen = ref(false) const username = ref('') const password = ref('') const error = ref('') +// 获取路由实例 +const router = useRouter() +// 获取当前路由信息 const route = useRoute() const routerLinkList = [ @@ -96,11 +99,10 @@ async function handleLogin() { async function handleLogout() { try { - await apiLogout() + await userStore.logout() } catch (e) { console.error(e) } - userStore.logout() message.success('退出登录成功') // 登出后关闭菜单 isMobileMenuOpen.value = false @@ -150,7 +152,7 @@ function handleMobileLinkClick() {