From 5a8fe5a6cf81df0ed6c4d46ad8b4d21ec1f69677 Mon Sep 17 00:00:00 2001 From: RockYang Date: Thu, 16 May 2024 10:53:00 +0800 Subject: [PATCH] feat: support add external link menu --- CHANGELOG.md | 5 +++++ database/update-v4.0.7.sql | 0 web/public/images/menu/bbs.png | Bin 0 -> 1811 bytes web/public/images/menu/docs.png | Bin 0 -> 802 bytes web/src/router.js | 5 +++++ web/src/views/ExternalPage.vue | 38 ++++++++++++++++++++++++++++++++ web/src/views/Home.vue | 17 ++++++++++---- 7 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 database/update-v4.0.7.sql create mode 100644 web/public/images/menu/bbs.png create mode 100644 web/public/images/menu/docs.png create mode 100644 web/src/views/ExternalPage.vue diff --git a/CHANGELOG.md b/CHANGELOG.md index 91f33be8..f8157a92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # 更新日志 +## v4.0.7 + +* 功能优化:添加导航菜单的时候支持框入外部链接,并支持上传自定义菜单图片 +* + ## v4.0.6 * Bug修复:修复PC端画廊页面的瀑布流组件样式错乱问题 diff --git a/database/update-v4.0.7.sql b/database/update-v4.0.7.sql new file mode 100644 index 00000000..e69de29b diff --git a/web/public/images/menu/bbs.png b/web/public/images/menu/bbs.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d4466212a689fbd69b3aa9fe3786235f02eadb GIT binary patch literal 1811 zcmV+u2kiKXP)Px*%}GQ-RCr$PT3v`#RUH5Q?j(KL-qDJTj1&y|fJ_RCP%@~wYeggx7!~SEZ$VMk zLqz)0LnZdoLlUV^5e5c5?A{G>GsEZuE&2i%oM5ws)SX#1W!<^|=G=Q{c4l_&z2|<7 z1MYd*WzISO^Z)PTA;AZf!so1na7&=f7Smi3s5$| zzkpg9KzW#p)ZfJ8qMN{=Ol=a#gLPpxC6hu%31bgX8%+YnMFYT+>aOHM2ST-*aJIz( zqUQi8H5V94_!iYpcK1QM2yPzcz-}F?Jq5s5cO`u8Lx8O#G`B?^)H47EWpbIoI2OfF zmh(EA&@%u^Qhlp_*w!osjHV@{Hj591t?L;8mQ>a4=VtdoLfSM#W$YmUmHhzMM&Ftn z?+=o)Xn?*6$S}Y`Pf%GcfC6Bt0t1jE0Pk+hMFF7W z2z#ahidlU#;J7DnbEs_3H=j9kK{!O-zN=4BC}uhDMFQ^9H-*HfYYE?T02<=>=AcsF z%$=f++PA{mQw`|6&n(knCAa}+Pn=Y5SGM=4sAYRl;GD%i=YOj)EeMtcrO81 zEN&S~3gm(T9uPPOY%ba#X3743wWie^%7oKMVASu;k~i)RM|qLN09aDlDZrxy7XmN? z4ypk-E|6meWMdHXogq>QKg>m=QOsvC9~%HmCSL)JEdXwa!vGXAm;_B7?AaG%tRXiORC=jcp$mpZNcYPqV{5^nycIGtm8{k*;~*29`=OS z8WRS%eTW0^>8#cQz>?~30PfHs7-P**!YKvamNE+m+($R{jW-CMaNvyVXhS3bB{}sh zQTPa{)ILyvF`MSC-DWMRegj~2Jki@$PXHLUX>Jaq5ea~P{vMxI0uE7lZHNoEx90}c z9RO5lO*K59;H(Ps384U3Qu!EQD1xatR84Q-j}e+p^YSCYAplF#()RXCnGh9LySC3m z0Vql3a1tAg!#IIy2lDs`i(jgJmQ3xdm%UHMp%Jd)JON-!P?Ize0Kb9x0f4KrVkVf* zZ0yeo^xZ+eAP|6(Onpem3;7H0p76U(^G@|o9smgB$Owz8y2%myByf-J2`Sf|B%FJJ!rFR4mB+h5d;lz|sQ%l^l!9q( zZ-gtaA}s6`$aPv9wHL{l&0^PlBg_Ow06e07M!JQQHqFIe6sZ1_T?lM4^`}kq_E;uh zN#!$uPouS!=1QiJWLrCh=PuMiC526y43jYl7uGB1q z6PO~Lm943&CE3&hQE9MZD-?irQoY}S9Lo9m;Cq|qeXSVzS}+EnkP`g!Hq9%;XlPV} zQ(plR`ofx=NjYt^IM6QqsSSdHss@(;G6V3kWb~y5un?sMkpTFwIm#5;7){1h`z`~< z+e5tOjmEF*Wa?E1@@@z1X@WI@gx+Lhj{p}`nGN9b7B_g1sJ+>((W(K!sSQA3r@9GU zCN#mB0o?HCzTSF$KVx6FG?>6?2ck5g=69jz9H9jF=DYVRRXxzHLlofzt2+oj=VfL* z>-I0eEUH7*F8A$Q)$7jl4va7SXYf$`2%dA`z<+;GYlWbeb|`ab0NywxBonM0_MW0! zhfMmWkjOa+aY!fJi0M)*z(t&1)!-h38=evsQQGpr&U;N0?^Bk7&X|Q z0gx~O(xC1wdEch_aua|)x%~$Bxobha`QrKk7Xbe=^&C1e+PBd)u_2%$M@~bI*etGc z0m$GPDsv_Ua)ywT09A&U$2ijhK;&+wQ1~JHMq~=nXSW7E zXk_sQ7;EnyvqY0T6a{vM#G_pEF0kBJbl$;g8Z0T?& zsGpzJIgt&KtPbi|I`aVZ>&^6vuXzpV71I5B&i_mTq+cU;L&E?7002ovPDHLkV1goC BMzH_@ literal 0 HcmV?d00001 diff --git a/web/public/images/menu/docs.png b/web/public/images/menu/docs.png new file mode 100644 index 0000000000000000000000000000000000000000..d11deaccca3ae108c9054107ff5d44f40620ed2f GIT binary patch literal 802 zcmV+-1Ks?IP)Px%+(|@1RCr$PTS0c>FbtLGzD#dGZ$dW%x1gMaa+1~HBymMsLOZ%&6P!Ds;hQvjGms>uK-L!k8*ANG+lE)GKtp)>mP4uHIH zv5x>=Mv%X4@gWlv3IO5&{G{Wm5c(oH$x0T3@C(OlN!dXF%;^wn!V`kgdp$wgBaGev zK4Q(6<*^$*S27Xu$36h~ET$8Hvk&7c!IZNdj(bhEYhg1w{*LDn-UM290pSFIcf3HJ zm8N`~9gdeN0;;hyI=(ioAVwxzjtc}Q01^s|31F+ZEvGtrjmlb#c=%bL8+*%Z9 zTF)Q=FbF~}^u=0ZL*P{aIGf*R6bTKXE+;>^Ua@nW00p^WTgcS_NTn>P@diL6f(*t1 zQoAQ1$1K1spiZL91sv(Hcp@a>w~{i91B?TV13piZMuHk7crKUSi55U>68y+w&j5{L zik=00KmSYecXfux}@b0ML#Cx3J5X=3o|J7GP%qI}21C zp;8r2d%~7Xq5KewpTKoKo=_#hfog&mQSv>VQ3ilBL3~YkOqpr|-luq~0Hn@-i17x1 z#8`_076p1n0XEBKk%OD2;+vj^ zF!D<}xaq2HnsW6&b+yeUG%8+u(Ovoj+va$9**eGVZ_&5Dw+2J6#>pClQ?-Xd_@9B; gAmrSB@9bUt2lbI3ZrU#kEwsT>t<8 literal 0 HcmV?d00001 diff --git a/web/src/router.js b/web/src/router.js index 3f31698c..a03c5ec6 100644 --- a/web/src/router.js +++ b/web/src/router.js @@ -81,6 +81,11 @@ const routes = [ meta: {title: 'DALLE-3'}, component: () => import('@/views/Dalle.vue'), }, + { + name: 'ExternalLink', + path: '/external', + component: () => import('@/views/ExternalPage.vue'), + }, ] }, { diff --git a/web/src/views/ExternalPage.vue b/web/src/views/ExternalPage.vue new file mode 100644 index 00000000..134386df --- /dev/null +++ b/web/src/views/ExternalPage.vue @@ -0,0 +1,38 @@ + + + + diff --git a/web/src/views/Home.vue b/web/src/views/Home.vue index 12d332e0..620804f2 100644 --- a/web/src/views/Home.vue +++ b/web/src/views/Home.vue @@ -61,9 +61,16 @@ const mainNavs = ref([]) const moreNavs = ref([]) const curPath = ref(router.currentRoute.value.path) +if (curPath.value === "/external") { + curPath.value = router.currentRoute.value.query.url +} const changeNav = (item) => { curPath.value = item.url - router.push(item.url) + if (item.url.indexOf("http") !== -1) { // 外部链接 + router.push({name: 'ExternalLink', query: {url: item.url}}) + } else { + router.push(item.url) + } } onMounted(() => { @@ -75,9 +82,11 @@ onMounted(() => { // 获取菜单 httpGet("/api/menu/list").then(res => { mainNavs.value = res.data - if (res.data.length > 7) { - mainNavs.value = res.data.slice(0, 7) - moreNavs.value = res.data.slice(7) + // 根据窗口的高度计算应该显示多少菜单 + const rows = Math.floor((window.innerHeight - 90) / 90) + if (res.data.length > rows) { + mainNavs.value = res.data.slice(0, rows) + moreNavs.value = res.data.slice(rows) } }).catch(e => { ElMessage.error("获取系统菜单失败:" + e.message)