新增: 灵感归档箱与任务归档动线
- ideasStore/taskStore: archiveIdea/archiveTask IPC 封装(本地移除/本地更新,对齐 delete 语义) - project.ts 组合 store 显式透传 archiveIdea/archiveTask - Ideas.vue: 筛选栏归档箱 Tab(独立数据源 ideaApi.listArchived,主查询不受扰);archiveCurrentIdea 处理器(归档确认+归档箱内取消归档自动清选中);IdeaDetail 传 in-archive-box prop - IdeaDetail.vue: inArchiveBox prop + archive emit;操作区归档/取消归档按钮,归档箱模式隐藏删除(防误删归档记忆) - i18n zh-CN/en ideas 补 filterArchived/archiveBoxEmpty/quickArchive/quickUnarchive/confirmArchive/toast 键(前批遗留) 验收: vue-tsc --noEmit EXIT 0
This commit is contained in:
@@ -179,6 +179,7 @@ function createStore() {
|
||||
createTask: tasksStore.createTask,
|
||||
updateTask: tasksStore.updateTask,
|
||||
deleteTask: tasksStore.deleteTask,
|
||||
archiveTask: tasksStore.archiveTask,
|
||||
// P1-b A0:统计独立通道(Dashboard 卡片 + ActiveProjectsPanel 各项目任务数)
|
||||
loadStats,
|
||||
// idea actions
|
||||
@@ -186,6 +187,7 @@ function createStore() {
|
||||
createIdea: ideasStore.createIdea,
|
||||
updateIdea: ideasStore.updateIdea,
|
||||
deleteIdea: ideasStore.deleteIdea,
|
||||
archiveIdea: ideasStore.archiveIdea,
|
||||
evaluateIdea: ideasStore.evaluateIdea,
|
||||
promoteIdea: ideasStore.promoteIdea,
|
||||
relateIdeas: ideasStore.relateIdeas,
|
||||
|
||||
@@ -70,6 +70,19 @@ export function createIdeasStore() {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 归档/取消归档灵感(归档功能 P1)。归档=移出主视图(list_by_query 恒带 archived=0),
|
||||
* 本地同步从列表移除(取消归档时调 loadIdeas 重拉)。返回后端命中布尔。
|
||||
*/
|
||||
async function archiveIdea(id: string, archived: boolean): Promise<boolean> {
|
||||
const ok = await runWithCatch(state, t('ideas.err.archiveFailed'), async () => {
|
||||
const hit = await ideaApi.archive(id, archived)
|
||||
if (hit && archived) state.ideas = state.ideas.filter(x => x.id !== id)
|
||||
return hit
|
||||
})
|
||||
return ok === true
|
||||
}
|
||||
|
||||
return {
|
||||
loadIdeas,
|
||||
createIdea,
|
||||
@@ -78,5 +91,6 @@ export function createIdeasStore() {
|
||||
evaluateIdea,
|
||||
promoteIdea,
|
||||
relateIdeas,
|
||||
archiveIdea,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,10 +69,24 @@ export function createTasksStore() {
|
||||
return ok === true
|
||||
}
|
||||
|
||||
/**
|
||||
* 归档/取消归档任务(归档功能 P1)。归档=移出主视图(后端活跃查询恒过滤),
|
||||
* 本地同步从列表移除(取消归档时调 loadTasks 重拉)。返回后端命中布尔。
|
||||
*/
|
||||
async function archiveTask(id: string, archived: boolean): Promise<boolean> {
|
||||
const ok = await runWithCatch(state, t('tasks.err.archiveFailed'), async () => {
|
||||
const hit = await taskApi.archive(id, archived)
|
||||
if (hit && archived) state.tasks = state.tasks.filter(x => x.id !== id)
|
||||
return hit
|
||||
})
|
||||
return ok === true
|
||||
}
|
||||
|
||||
return {
|
||||
loadTasks,
|
||||
createTask,
|
||||
updateTask,
|
||||
deleteTask,
|
||||
archiveTask,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user