新增: 项目归档

This commit is contained in:
lxy
2026-10-05 14:59:12 +08:00
parent 63c5c3d4f0
commit 24d6803ecc
19 changed files with 250 additions and 17 deletions
+31
View File
@@ -77,6 +77,34 @@ export function createProjectsStore() {
}
}
// ── 归档功能 P2(V48):归档箱三动作,对标 tasks/ideas 子 store 同款 ──
/** 归档/取消归档。归档=退出主列表;取消归档=从归档箱移回主列表(两端各刷一份) */
async function archiveProject(id: string, archived: boolean) {
await runWithCatch(state, t('projects.err.archiveFailed'), async () => {
await projectApi.archive(id, archived)
if (archived) {
// 从主列表移出,归档箱按需懒加载(打开归档箱时 loadArchivedProjects)
state.projects = state.projects.filter(p => p.id !== id)
} else {
state.archivedProjects = state.archivedProjects.filter(p => p.id !== id)
await loadProjects() // 取消归档回主列表
}
})
}
/** 加载归档项目(归档箱 Tab 数据源) */
async function loadArchivedProjects() {
await runWithCatch(state, t('projects.err.loadArchivedFailed'), async () => {
state.archivedProjects = await projectApi.listArchived()
})
}
/** 归档箱内恢复到主列表(取消归档语义的 UI 别名,动线用词更自然) */
async function unarchiveProject(id: string) {
await archiveProject(id, false)
}
async function purgeProject(id: string) {
try {
await projectApi.purge(id) // 彻底删(级联物理删,不可恢复)
@@ -96,6 +124,9 @@ export function createProjectsStore() {
loadDeletedProjects,
restoreProject,
purgeProject,
archiveProject,
loadArchivedProjects,
unarchiveProject,
// clearError 来自 state(供 barrel re-export)
clearError,
}