修复: vite加@路径别名(解决linter改i18n为@/i18n后5文件import解析失败)+CR-08 P2-7 store error fallback i18n(projects/ideas/workflow/knowledge/tasks补err块+全局t)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { reactive, computed } from 'vue'
|
||||
import { knowledgeApi } from '../api'
|
||||
import i18n from '@/i18n'
|
||||
import type {
|
||||
KnowledgeRecord,
|
||||
KnowledgeDetailPayload,
|
||||
@@ -9,6 +10,9 @@ import type {
|
||||
KnowledgeConfig,
|
||||
} from '../api/types'
|
||||
|
||||
// composable 外全局 i18n 实例(非 setup 上下文)
|
||||
const t = ((i18n as any).global.t as (k: string) => string).bind((i18n as any).global)
|
||||
|
||||
// ── 全局响应式状态(单例) ──
|
||||
|
||||
const state = reactive({
|
||||
@@ -62,7 +66,7 @@ export function useKnowledgeStore() {
|
||||
state.items = result
|
||||
} catch (e: any) {
|
||||
if (seq !== _itemsReqSeq) return // 旧请求的失败不污染当前视图
|
||||
state.error = e?.toString() ?? '加载知识库失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.loadFailed')
|
||||
} finally {
|
||||
if (seq === _itemsReqSeq) state.loading = false
|
||||
}
|
||||
@@ -77,7 +81,7 @@ export function useKnowledgeStore() {
|
||||
state.candidates = result
|
||||
} catch (e: any) {
|
||||
if (seq !== _itemsReqSeq) return
|
||||
state.error = e?.toString() ?? '加载收件箱失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.loadInboxFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +95,7 @@ export function useKnowledgeStore() {
|
||||
state.items = result
|
||||
} catch (e: any) {
|
||||
if (seq !== _itemsReqSeq) return
|
||||
state.error = e?.toString() ?? '检索失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.searchFailed')
|
||||
} finally {
|
||||
if (seq === _itemsReqSeq) state.loading = false
|
||||
}
|
||||
@@ -110,7 +114,7 @@ export function useKnowledgeStore() {
|
||||
}
|
||||
return record
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '创建知识失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.createFailed')
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -122,7 +126,7 @@ export function useKnowledgeStore() {
|
||||
state.items = state.items.filter(k => k.id !== id)
|
||||
state.candidates = state.candidates.filter(k => k.id !== id)
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '更新状态失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.updateStatusFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +136,7 @@ export function useKnowledgeStore() {
|
||||
state.items = state.items.filter(k => k.id !== id)
|
||||
state.candidates = state.candidates.filter(k => k.id !== id)
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '归档失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.archiveFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +149,7 @@ export function useKnowledgeStore() {
|
||||
state.config = result
|
||||
} catch (e: any) {
|
||||
if (seq !== _configReqSeq) return
|
||||
state.error = e?.toString() ?? '加载配置失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.loadConfigFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +158,7 @@ export function useKnowledgeStore() {
|
||||
await knowledgeApi.saveConfig(config)
|
||||
state.config = config
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '保存配置失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.saveConfigFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,7 +167,7 @@ export function useKnowledgeStore() {
|
||||
await knowledgeApi.extractNow()
|
||||
await loadCandidates()
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '立即抽取失败'
|
||||
state.error = e?.toString() ?? t('knowledge.err.extractFailed')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
import { ideaApi } from '../../api'
|
||||
import i18n from '@/i18n'
|
||||
import { state } from './state'
|
||||
|
||||
// composable 外全局 i18n 实例(非 setup 上下文)
|
||||
const t = ((i18n as any).global.t as (k: string) => string).bind((i18n as any).global)
|
||||
|
||||
/** 灵感 CRUD 子 store(共享全局 state) */
|
||||
export function createIdeasStore() {
|
||||
async function loadIdeas() {
|
||||
try {
|
||||
state.ideas = await ideaApi.list()
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '加载灵感失败'
|
||||
state.error = e?.toString() ?? t('ideas.err.loadFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +21,7 @@ export function createIdeasStore() {
|
||||
state.ideas.push(record)
|
||||
return record
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '创建灵感失败'
|
||||
state.error = e?.toString() ?? t('ideas.err.createFailed')
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -35,7 +39,7 @@ export function createIdeasStore() {
|
||||
await ideaApi.delete(id)
|
||||
state.ideas = state.ideas.filter(i => i.id !== id)
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '删除灵感失败'
|
||||
state.error = e?.toString() ?? t('ideas.err.deleteFailed')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
import { projectApi } from '../../api'
|
||||
import type { ImportProjectInput } from '../../api/project'
|
||||
import i18n from '@/i18n'
|
||||
import { state, clearError } from './state'
|
||||
|
||||
// composable 外全局 i18n 实例(非 setup 上下文)
|
||||
const t = ((i18n as any).global.t as (k: string) => string).bind((i18n as any).global)
|
||||
|
||||
/** 项目 CRUD 子 store(共享全局 state) */
|
||||
export function createProjectsStore() {
|
||||
async function loadProjects() {
|
||||
@@ -10,7 +14,7 @@ export function createProjectsStore() {
|
||||
try {
|
||||
state.projects = await projectApi.list()
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '加载项目失败'
|
||||
state.error = e?.toString() ?? t('projects.err.loadFailed')
|
||||
} finally {
|
||||
state.loading = false
|
||||
}
|
||||
@@ -22,7 +26,7 @@ export function createProjectsStore() {
|
||||
state.projects.push(record)
|
||||
return record
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '创建项目失败'
|
||||
state.error = e?.toString() ?? t('projects.err.createFailed')
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -34,7 +38,7 @@ export function createProjectsStore() {
|
||||
await loadProjects() // 刷新列表(后端已 insert,统一走 load 避免本地数组与后端不一致)
|
||||
return record
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '导入项目失败'
|
||||
state.error = e?.toString() ?? t('projects.err.importFailed')
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -60,7 +64,7 @@ export function createProjectsStore() {
|
||||
await projectApi.delete(id) // 软删 → 回收站(可恢复)
|
||||
state.projects = state.projects.filter(p => p.id !== id)
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '删除项目失败'
|
||||
state.error = e?.toString() ?? t('projects.err.deleteFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,7 +72,7 @@ export function createProjectsStore() {
|
||||
try {
|
||||
state.deletedProjects = await projectApi.listDeleted()
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '加载回收站失败'
|
||||
state.error = e?.toString() ?? t('projects.err.loadTrashFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +82,7 @@ export function createProjectsStore() {
|
||||
state.deletedProjects = state.deletedProjects.filter(p => p.id !== id)
|
||||
await loadProjects() // 恢复后刷新活跃列表
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '恢复项目失败'
|
||||
state.error = e?.toString() ?? t('projects.err.restoreFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +91,7 @@ export function createProjectsStore() {
|
||||
await projectApi.purge(id) // 彻底删(级联物理删,不可恢复)
|
||||
state.deletedProjects = state.deletedProjects.filter(p => p.id !== id)
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '彻底删除失败'
|
||||
state.error = e?.toString() ?? t('projects.err.purgeFailed')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
import { taskApi } from '../../api'
|
||||
import i18n from '@/i18n'
|
||||
import { state } from './state'
|
||||
|
||||
// composable 外全局 i18n 实例(非 setup 上下文)
|
||||
const t = ((i18n as any).global.t as (k: string) => string).bind((i18n as any).global)
|
||||
|
||||
/** 任务 CRUD 子 store(共享全局 state) */
|
||||
export function createTasksStore() {
|
||||
async function loadTasks(projectId?: string) {
|
||||
try {
|
||||
state.tasks = await taskApi.list(projectId)
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '加载任务失败'
|
||||
state.error = e?.toString() ?? t('tasks.err.loadFailed')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +21,7 @@ export function createTasksStore() {
|
||||
state.tasks.push(record)
|
||||
return record
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '创建任务失败'
|
||||
state.error = e?.toString() ?? t('tasks.err.createFailed')
|
||||
return null
|
||||
}
|
||||
}
|
||||
@@ -35,7 +39,7 @@ export function createTasksStore() {
|
||||
await taskApi.delete(id)
|
||||
state.tasks = state.tasks.filter(t => t.id !== id)
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '删除任务失败'
|
||||
state.error = e?.toString() ?? t('tasks.err.deleteFailed')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import { workflowApi } from '../../api'
|
||||
import i18n from '@/i18n'
|
||||
import { state, _eventUnlisten, setEventUnlisten } from './state'
|
||||
|
||||
// composable 外全局 i18n 实例(非 setup 上下文)
|
||||
const t = ((i18n as any).global.t as (k: string) => string).bind((i18n as any).global)
|
||||
|
||||
/**
|
||||
* 工作流 + 审批子 store(共享全局 state)。
|
||||
*
|
||||
@@ -16,7 +20,7 @@ export function createWorkflowStore() {
|
||||
try {
|
||||
state.workflowExecutions = await workflowApi.listExecutions()
|
||||
} catch (e: any) {
|
||||
state.error = e?.toString() ?? '加载工作流记录失败'
|
||||
state.error = e?.toString() ?? t('projects.err.loadWorkflowFailed')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user