2025-06-30 13:41:38 +08:00
|
|
|
import { MyButtons } from '@/common';
|
|
|
|
|
import { Modal } from 'antd';
|
2025-09-22 00:04:31 +08:00
|
|
|
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);
|
|
|
|
|
};
|
2025-09-22 00:04:31 +08:00
|
|
|
|
|
|
|
|
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>
|
|
|
|
|
</>
|
|
|
|
|
);
|
|
|
|
|
}
|