fix: 全部页面 confirm() 替换为 ConfirmDialog 组件 — 9个页面统一回调模式
This commit is contained in:
1 parent
41dab3deab
commit
7f6a4bb6df
9 files changed
+153
-62
No files matched your search
@@ -8,6 +8,7 @@ import { instanceGroupApi, type InstanceGroup } from '@/api/instanceGroup';
|
||||
import { instanceApi } from '@/api/instance';
|
||||
import { userApi } from '@/api/user';
|
||||
import { useActionPermission } from '@/hooks/useAuth';
|
||||
import { ConfirmDialog } from '@/components/ConfirmDialog';
|
||||
|
||||
/* ───────── Constants ───────── */
|
||||
|
||||
@@ -109,6 +110,7 @@ export default function InstanceGroupPage() {
|
||||
const [showCreateModal, setShowCreateModal] = useState(false);
|
||||
const [showEditModal, setShowEditModal] = useState(false);
|
||||
const [showUserModal, setShowUserModal] = useState(false);
|
||||
const [deleteConfirm, setDeleteConfirm] = useState<{msg: string; onConfirm: () => void} | null>(null);
|
||||
const canManage = useActionPermission('instance-group.manage');
|
||||
|
||||
// Form state — shared by create & edit
|
||||
@@ -215,10 +217,11 @@ export default function InstanceGroupPage() {
|
||||
|
||||
/* ── Delete ── */
|
||||
const handleDelete = async (id: number) => {
|
||||
if (!confirm('确定删除该权限组?')) return;
|
||||
await instanceGroupApi.delete(id);
|
||||
if (selectedId === id) setSelectedId(null);
|
||||
fetchGroups();
|
||||
setDeleteConfirm({msg: '确定删除该权限组?', onConfirm: async () => {
|
||||
await instanceGroupApi.delete(id);
|
||||
if (selectedId === id) setSelectedId(null);
|
||||
fetchGroups();
|
||||
}});
|
||||
};
|
||||
|
||||
/* ── Assign Users ── */
|
||||
@@ -439,6 +442,15 @@ export default function InstanceGroupPage() {
|
||||
<FormModal mode="create" />
|
||||
<FormModal mode="edit" />
|
||||
|
||||
<ConfirmDialog
|
||||
open={!!deleteConfirm}
|
||||
title={deleteConfirm?.msg || '确认操作'}
|
||||
variant="danger"
|
||||
confirmText="确定"
|
||||
onConfirm={() => { deleteConfirm?.onConfirm(); }}
|
||||
onCancel={() => setDeleteConfirm(null)}
|
||||
/>
|
||||
|
||||
{/* User Modal */}
|
||||
{showUserModal && (
|
||||
<div className="fixed inset-0 z-[100] flex items-start justify-center pt-[10vh] bg-black/60 backdrop-blur-sm">
|
||||
|
||||
Reference in new issue
Block a user