From 0f69fecb8f580fd87a469da0400be8c15cae014e Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Wed, 8 Jul 2026 13:22:49 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=A1=B5=E9=9D=A2=E9=85=8D?= =?UTF-8?q?=E7=BD=AEUI=E6=94=B9=E4=B8=BA=E4=B8=8B=E6=8B=89=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=A8=A1=E5=BC=8F=EF=BC=8C=E6=AF=8F=E4=B8=AA=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=8F=AA=E8=83=BD=E6=B7=BB=E5=8A=A0=E4=B8=80=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. +添加按钮改为下拉选择可用页面类型,已添加的自动隐藏 2. 每个条目的key改为固定tag显示,不可再通过下拉修改 3. URL placeholder 去掉{base},直接用相对路径 4. resolveUrl 改为自动拼接站点baseUrl --- web/src/views/SitePages.vue | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/web/src/views/SitePages.vue b/web/src/views/SitePages.vue index eac83a6..c7aba8f 100644 --- a/web/src/views/SitePages.vue +++ b/web/src/views/SitePages.vue @@ -89,14 +89,22 @@
页面入口 - + 添加 + + + 添加 + + + 已全部添加
暂无,点击添加
- - - + {{ entry.key }} - {{ keyLabel(entry.key) }} @@ -104,7 +112,7 @@ 删除
- + {{ verifyResults[idx]?.success===true ? '✓' : verifyResults[idx]?.success===false ? '✗' : '验证' }} @@ -146,6 +154,12 @@ const loadPageKeys = async () => { catch {} } +const keyLabel = (key) => pageKeys.value.find(k => k.key === key)?.label || key +const availableKeys = computed(() => { + const used = new Set(parsed.value.map(e => e.key).filter(Boolean)) + return pageKeys.value.filter(k => !used.has(k.key)) +}) + const onKeyChange = (row) => { const pk = pageKeys.value.find(k => k.key === row.key) if (pk?.defaultMethod) row.method = pk.defaultMethod @@ -163,12 +177,16 @@ const syncToJson = () => { const obj = { authType: authType.value, entries: parsed.value } editorJson.value = JSON.stringify(obj, null, 2) } -const resolveUrl = (url) => url?.replace('{base}', sitesList.value.find(s=>s.siteId===editSiteId.value)?.urls?.[0] || '{base}') || '' +const resolveUrl = (url) => { + const base = sitesList.value.find(s=>s.siteId===editSiteId.value)?.urls?.[0] || '' + if (!url || !base) return url || '' + return url.startsWith('/') ? base.replace(/\/$/, '') + url : url +} const verifyEntry = async (entry, idx) => { const resolved = resolveUrl(entry.url) if (!resolved || resolved === entry.url) { - ElMessage.warning('请先配置站点地址,URL中需包含 {base} 占位符') + ElMessage.warning('请先配置站点地址') return } verifying.value = { ...verifying.value, [idx]: true } @@ -276,7 +294,10 @@ const discardDraft = async () => { } const remove = (idx) => { parsed.value.splice(idx,1); syncToJson() } -const addEntry = () => { parsed.value.push({key:'',method:'GET',url:'{base}'}); syncToJson() } +const addEntryByKey = (k) => { + parsed.value.push({ key: k.key, method: k.defaultMethod || 'GET', url: '' }) + syncToJson() +} const deletePages = async () => { try { await ElMessageBox.confirm('删除后站点将使用默认模板','确认',{type:'warning',confirmButtonText:'确认删除'}) } catch { return } deleting.value = true