{
await releaseArticle(article.id, releasedAt);
refreshArticles();
closeModal();
}}
onApprove={async () => {
await approveArticle(article.id);
refreshArticles();
closeModal();
}}
onReject={async (reason) => {
await rejectArticle(article.id, reason);
refreshArticles();
closeModal();
}}
/>
),
});
};
return (
{
setCurrentStage(stage);
fetchArticles(stage);
}}
/>
columns={columns}
dataSource={articles}
currentStage={currentStage}
userPermissions={userPermissions}
actions={defaultTableActions}
actionsEvents={{
onView: async (article) => router.push(`/articles/${article.id}`),
onDelete: handleDelete,
onSubmit: async (article) => {
await submitArticle(article.id);
refreshArticles();
},
onPutBack: async (article) => {
await putBackArticle(article.id);
refreshArticles();
},
onRelease: handleRelease,
onWithdraw: async (article) => {
await withdrawArticle(article.id);
refreshArticles();
},
onApprove: async (article) => {
await approveArticle(article.id);
refreshArticles();
},
onReject: async (article, reason) => {
await rejectArticle(article.id, reason);
refreshArticles();
},
}}
/>
);
}
```
## Dependencies
**Peer Dependencies:**
- `@mezzanine-ui/core`
- `@mezzanine-ui/react`
- `@mezzanine-ui/icons`
- `react`, `react-dom`
- `react-hook-form`
- `dayjs`
- `lodash`
## Troubleshooting
### Modal 不顯示
確保在應用根層級包裝 `ModalProvider`:
```tsx
```
### 權限按鈕不顯示
確認 `userPermissions` 陣列包含對應的**細顆粒度權限**:
```tsx
// 錯誤:使用簡化權限(不存在)
userPermissions={[ArticlesPermissions.DELETE]} // ❌ 不存在
// 正確:使用按階段細分的權限
userPermissions={[
ArticlesPermissions.DeleteArticleInDraft, // ✓ Draft 階段刪除
ArticlesPermissions.DeleteArticleInReleased, // ✓ Released 階段刪除
]}
// 或使用預設權限集
userPermissions={defaultAdminRolePermissions} // ✓ 完整權限
```