View 改造指南归档(横幅指 DEVFLOW-3.Store对接为真相源 + 列过时点:Phase1 四问题已解决/页面命名 ProjectsView·WorkflowView 与实际不符);对抗评估文档加未实施横幅(纯启发式,三路 LLM+AI Prompt+Phase2+idea_evaluations 表为设计稿,grep idea_evaluations 零命中/migrations 无此表)。批5
3.2 KiB
3.2 KiB
View 改造指南 — 硬编码到 Store 对接
创建: 2026-06-10 | 状态: 已归档(2026-06-15)
⚠️ 本文档已归档,内容过时,请勿据本文档改造。Store → IPC 对接的全部内容已收敛到真相源
DEVFLOW-3.Store对接实施-2026-06-12.md。本文档过时点(详见docs/05-代码审查/文档全量核对报告-2026-06-15.md§24):
- 「当前问题」四项(数据硬编码 / Store 未接入 / 事件处理空函数 / Arco 未使用)Phase1 已全部解决,前端已通过 Store → IPC 对接真实数据。
- 「涉及页面」表格的页面命名(
ProjectsView/TasksView/WorkflowView等)与实际不符:实际页面无View后缀,且不存在WorkflowView(工作流引擎非独立页面)。本文件保留仅为历史参考,后续以前述
DEVFLOW-3文档为准。
概述
当前所有 Vue 页面使用硬编码数据 (ref([...])),Pinia Store 和 View 完全独立。本文档指导如何将 View 改造为通过 Store → IPC 获取真实数据。
当前问题
- 数据硬编码 — 每个 View 用
ref([...])定义假数据 - Store 未接入 — Pinia Store 有 state/getter 但无 action
- 事件处理空函数 — 按钮点击绑定
() => {} - Arco Design 未使用 — 仅 CSS 变量覆盖,未引入组件
改造步骤
Step 1: Store 添加 Actions
// stores/projectStore.ts
import { invoke } from '@tauri-apps/api/core'
export const useProjectStore = defineStore('project', () => {
const projects = ref<Project[]>([])
// 新增 action
async function fetchProjects() {
projects.value = await invoke<Project[]>('get_projects')
}
async function createProject(input: CreateProjectInput) {
const project = await invoke<Project>('create_project', { input })
projects.value.push(project)
}
return { projects, fetchProjects, createProject }
})
Step 2: View 接入 Store
// views/ProjectsView.vue — 改造前
const projects = ref([
{ id: '1', name: '项目A', ... }, // 硬编码
])
// views/ProjectsView.vue — 改造后
const store = useProjectStore()
const { projects } = storeToRefs(store)
onMounted(() => {
store.fetchProjects()
})
Step 3: 事件绑定真实操作
// 改造前
const handleCreate = () => {}
// 改造后
const handleCreate = async () => {
await store.createProject(form)
modalVisible.value = false
}
Step 4: 加载与错误状态
<template>
<a-spin :loading="store.loading">
<!-- 内容 -->
</a-spin>
</template>
涉及页面
| 页面 | Store | 改造优先级 |
|---|---|---|
| ProjectsView | projectStore | P0 |
| TasksView | taskStore | P0 |
| WorkflowView | workflowStore | P0 |
| IdeasView | ideaStore | P1 |
| DashboardView | 多个 Store | P2 |