pay-admin/src/components/MyModal.tsx

51 lines
1.1 KiB
TypeScript
Raw Normal View History

2025-06-30 13:41:38 +08:00
import { MyButtons } from '@/common';
import { Modal } from 'antd';
import { useEffect, useImperativeHandle, useState } from 'react';
2025-06-30 13:41:38 +08:00
2025-07-17 14:23:40 +08:00
export function MyModal(props?: any) {
2025-06-30 13:41:38 +08:00
const [open, setOpen] = useState(false);
2025-07-17 14:23:40 +08:00
const close = () => {
2025-08-27 11:24:29 +08:00
setOpen(false);
};
useEffect(() => {
if (open && props?.onOpen) {
props.onOpen();
}
}, [open, props?.onOpen]);
2025-07-17 14:23:40 +08:00
useImperativeHandle(props.myRef, () => ({
2025-08-27 11:24:29 +08:00
close,
}));
2025-06-30 13:41:38 +08:00
return (
<>
2025-07-16 10:18:01 +08:00
{props?.trigger ? (
<div onClick={() => setOpen(true)}>{props?.trigger}</div>
) : (
<MyButtons.View
title={props.title || '详情'}
2025-08-27 11:24:29 +08:00
type={props.type || 'primary'}
2025-09-26 21:02:38 +08:00
size={props.size || 'small'}
2025-07-16 10:18:01 +08:00
onClick={() => setOpen(true)}
/>
)}
2025-06-30 13:41:38 +08:00
<Modal
title={props?.modal?.title || '标题'}
open={open}
onOk={() => {
setOpen(false);
props?.handleOk?.();
}}
onCancel={() => {
setOpen(false);
props?.onCancel?.();
}}
footer={props?.modal?.footer || false}
{...props}
>
{props?.node}
</Modal>
</>
);
}