43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { MyConfirm } from "@/types/Basics";
|
|
import confirm from "./Confirm.vue";
|
|
|
|
import { createApp } from "vue";
|
|
export default ({ title, msg, info, confirmText, closeText, isLoading, onOk, onCancel }: MyConfirm) => {
|
|
return new Promise<boolean>((reslove, reject) => {
|
|
const instance = createApp(confirm, {
|
|
title,
|
|
msg,
|
|
info,
|
|
confirmText,
|
|
closeText,
|
|
isLoading,
|
|
confirmFn: {
|
|
onOk,
|
|
reslove,
|
|
},
|
|
closeFn: {
|
|
onCancel,
|
|
reslove,
|
|
},
|
|
destroy: () => {
|
|
closeUnmount();
|
|
},
|
|
});
|
|
|
|
// 创建一个节点
|
|
const vnode = document.createElement("div");
|
|
// 添加到body元素上
|
|
document.body.appendChild(vnode);
|
|
// 实例挂载到节点上
|
|
instance.mount(vnode);
|
|
// 关闭状态
|
|
// 注册实例并移除节点
|
|
function closeUnmount() {
|
|
setTimeout(() => {
|
|
instance.unmount();
|
|
document.body.removeChild(vnode);
|
|
}, 100);
|
|
}
|
|
});
|
|
};
|