feat: 项目模块加删除按钮(仅超管 + 无版本可删)
- useProductStore 加 deleteProject(productId, projectId) action - ProjectRow 行右侧加三点菜单(MoreHorizontal)+ 下拉项「删除项目」 - 项目下有版本时菜单项 disabled + tooltip「项目下还有 N 个版本,不可删除」 - 仅有 project:delete 权限的角色(默认仅超管)能看到三点 icon - 点击删除 → confirm → 调 deleteProject Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -79,6 +79,7 @@ interface ProductState {
|
||||
createVersion: (productId: string, data: { name: string; status: string }) => void;
|
||||
updateVersion: (productId: string, versionId: string, data: Partial<VersionItem>) => void;
|
||||
deleteVersion: (productId: string, versionId: string) => void;
|
||||
deleteProject: (productId: string, projectId: string) => void;
|
||||
}
|
||||
|
||||
export const useProductStore = create<ProductState>((set, get) => ({
|
||||
@@ -273,6 +274,19 @@ export const useProductStore = create<ProductState>((set, get) => ({
|
||||
set({ overview: updated });
|
||||
saveLocal(updated);
|
||||
},
|
||||
|
||||
deleteProject: (productId, projectId) => {
|
||||
const updated = get().overview.map((p) => {
|
||||
if (p.id !== productId) return p;
|
||||
return {
|
||||
...p,
|
||||
projects: p.projects.filter((proj) => proj.id !== projectId),
|
||||
_count: { ...p._count, projects: Math.max(0, (p._count?.projects ?? 0) - 1) } as any,
|
||||
};
|
||||
});
|
||||
set({ overview: updated });
|
||||
saveLocal(updated);
|
||||
},
|
||||
}));
|
||||
|
||||
const STORAGE_KEY = 'ftb_products_overview_v4';
|
||||
|
||||
Reference in New Issue
Block a user