feat(admin): rebuild page display settings

This commit is contained in:
kate522 committed 2026-08-19 00:07:13 +08:00
1 parent 09b1e8fd35
commit 480e2bf07e
117 files changed
+1815 -9081

No files matched your search

+17 -5
View File
@@ -130,6 +130,7 @@ const message = useMessage()
const showTestModal = ref(false)
const testLoading = ref(false)
const testResult = ref(null)
const serverSchema = ref(null)
/** Resolve domain/section from props or route meta (canonicalDomain + section, with legacy fallback) */
const resolvedDomain = computed(() => normalizeSchemaDomain(props.domain || route.meta?.canonicalDomain || route.meta?.schemaDomain || resolveDomainFromPath(route.path)))
@@ -150,7 +151,9 @@ function resolveSectionFromPath(path) {
/** Load schema from the Vue-side registry */
const pageMeta = computed(() => {
const schema = getSchema(resolvedDomain.value, resolvedSection.value)
const schema = resolvedDomain.value === 'page_display'
? serverSchema.value
: getSchema(resolvedDomain.value, resolvedSection.value)
if (schema && schema.groups && schema.groups.length > 0) {
return {
title: schema.title || '',
@@ -170,7 +173,9 @@ const pageMeta = computed(() => {
/** Default values from schema */
const defaults = computed(() => {
const schema = getSchema(resolvedDomain.value, resolvedSection.value)
const schema = resolvedDomain.value === 'page_display'
? serverSchema.value
: getSchema(resolvedDomain.value, resolvedSection.value)
if (!schema) return {}
const d = {}
for (const group of schema.groups || []) {
@@ -188,7 +193,13 @@ const {
formData, loading, saving, loadError, dirty,
save: doSave, reload,
} = useSectionForm({
fetch: () => api.getSchemaPage(resolvedDomain.value, resolvedSection.value),
fetch: async () => {
const response = await api.getSchemaPage(resolvedDomain.value, resolvedSection.value)
if (resolvedDomain.value === 'page_display') {
serverSchema.value = response?.schema || null
}
return response
},
submit: (data) => api.saveSchemaPage(resolvedDomain.value, resolvedSection.value, data),
defaults: defaults.value,
onSaved: () => {
@@ -426,6 +437,7 @@ function closeTestModal() {
watch([resolvedDomain, resolvedSection], ([nextDomain, nextSection], [prevDomain, prevSection]) => {
if (nextDomain !== prevDomain || nextSection !== prevSection) {
closeTestModal()
serverSchema.value = null
reload()
}
})
@@ -437,8 +449,8 @@ onBeforeUnmount(() => {
<style scoped>
.aksrt-schema-page {
max-width: 1100px;
margin: 0 auto;
max-width: none;
margin: 0;
}
.aksrt-schema-page__tool-actions {