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