feat: add Admin layout

This commit is contained in:
2026-09-12 19:38:11 +07:00
parent 301063533a
commit 1c877de130
26 changed files with 742 additions and 1132 deletions
+25 -5
View File
@@ -96,7 +96,7 @@ const toast = useToast()
const confirm = useConfirm()
const auth = useAuthStore()
const projectId = String(route.params.id)
const projectId = ref(String(route.params.id))
const tree = ref<DocumentNode[]>([])
const loading = ref(false)
const selectedId = ref<string | null>(null)
@@ -149,7 +149,7 @@ const folderOptions = computed(() => {
async function loadTree() {
try {
tree.value = searchMode.value ? await searchDocuments(searchTerm.value) : await getDocumentTree(projectId)
tree.value = searchMode.value ? await searchDocuments(searchTerm.value) : await getDocumentTree(projectId.value)
} catch (e) {
toast.add({ severity: 'error', summary: 'Error', detail: errorMessage(e), life: 4000 })
}
@@ -157,7 +157,7 @@ async function loadTree() {
async function loadMembers() {
try {
const res = await getMembers(projectId, 1, 100)
const res = await getMembers(projectId.value, 1, 100)
members.value = res.items
} catch (e) {
toast.add({ severity: 'error', summary: 'Error', detail: errorMessage(e), life: 4000 })
@@ -263,7 +263,7 @@ async function onCreate() {
if (existing) {
nodes = existing.children
} else {
const created = await createDocument(projectId, {
const created = await createDocument(projectId.value, {
title: seg,
type: 'Folder',
parentId,
@@ -274,7 +274,7 @@ async function onCreate() {
}
}
const created = await createDocument(projectId, {
const created = await createDocument(projectId.value, {
title: createTitle.value,
type: createType.value,
parentId,
@@ -357,4 +357,24 @@ onMounted(() => {
loading.value = false
})
})
watch(
() => route.params.id,
async (id) => {
if (!id) return
projectId.value = String(id)
selectedId.value = null
doc.value = null
viewerVisible.value = false
editing.value = false
searchTerm.value = ''
searchMode.value = false
loading.value = true
try {
await Promise.all([loadTree(), loadMembers()])
} finally {
loading.value = false
}
},
)
</script>