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