import { IModalData } from '@ibiz-template/runtime'; import Vue from 'vue'; import { AppModalOptions } from '@/interface'; import { AppModalComponent } from './app-modal-component'; import { piniaInstance } from '@/store'; export class AppModal { /** * 打开模态 * * @author lxm * @date 2022-09-09 17:09:55 * @static * @param {string} componentName 模态内部绘制组件名称 * @param {IData} props 模态内部绘制组件的props * @param {AppModalOptions} [opts] 模态相关的配置参数 * @returns {*} {Promise<IModalData>} */ public static openModal( componentName: string, props: IData, opts?: AppModalOptions, ): Promise<IModalData> { return new Promise((resolve, reject) => { const vm = new Vue({ pinia: piniaInstance, render(h) { return h(AppModalComponent, { props: { componentName, componentProps: props, opts, resolve, reject, }, }); }, }).$mount(); document.body.appendChild(vm.$el); }); } }