新增: 灵感归档箱与任务归档动线

- 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:
lxy
2026-10-05 00:35:02 +08:00
parent c6ebf15407
commit 83e86cd6b7
13 changed files with 201 additions and 9 deletions
+9 -2
View File
@@ -286,10 +286,14 @@
</div>
</div>
<!-- 操作(P0-② 立项按钮已上移至标题行,此处仅留删除) -->
<!-- 操作(P0-② 立项按钮已上移至标题行) -->
<div class="detail-section" style="margin-top:8px">
<div class="action-buttons">
<button class="btn btn-ghost" :disabled="deleting" @click="$emit('delete')">
<!-- 归档功能 P1:主列表=归档动线;归档箱=取消归档动线(删除隐藏,防误删归档记忆) -->
<button class="btn btn-ghost" :disabled="deleting" @click="$emit('archive', !inArchiveBox)">
{{ inArchiveBox ? $t('ideas.quickUnarchive') : $t('ideas.quickArchive') }}
</button>
<button v-if="!inArchiveBox" class="btn btn-ghost" :disabled="deleting" @click="$emit('delete')">
{{ deleting ? $t('ideas.deleting') : $t('ideas.deleteIdea') }}
</button>
</div>
@@ -315,12 +319,15 @@ const props = defineProps<{
evalError: string
promoting: boolean
deleting: boolean
/** 归档功能 P1:父视图是否处于归档箱模式(决定操作按钮语义:归档↔取消归档) */
inArchiveBox?: boolean
}>()
const emit = defineEmits<{
(e: 'evaluate'): void
(e: 'promote'): void
(e: 'delete'): void
(e: 'archive', archived: boolean): void
(e: 'status-change', value: IdeaStatus): void
// 返 Promise<boolean> 让子组件 await 知成功/失败。
// true=落库成功(关编辑态);false=失败(保持编辑态,toast 由父组件处理)。