新增: 项目归档

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,
}
+2
View File
@@ -16,6 +16,8 @@ export interface PendingApproval {
export const state = reactive({
projects: [] as ProjectRecord[],
deletedProjects: [] as ProjectRecord[],
// 归档箱数据源(归档功能 P2,V48;独立于 projects——主列表后端已默认排除 archived)
archivedProjects: [] as ProjectRecord[],
tasks: [] as TaskRecord[],
// 统计缓存,与 tasks 数组解耦,供 Dashboard,不被 Tasks 分页/筛选污染(P1-b A0)
activeTaskCount: 0 as number,