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