import DSJBase from "../DSJBase/DSJBase"; export default class DSJDialog extends DSJBase { isShow: boolean = false; //弹窗显示状态 //弹窗显示状态 //弹窗显示状态 show!: Function; //展示弹窗 //展示弹窗 hide!: Function; //隐藏弹窗 //隐藏弹窗 showChange!: Function; //弹窗状态切换回调 //弹窗状态切换回调 title!: string; //Dialog 的标题 //Dialog 的标题 width!: string | number; //Dialog 的宽度 //Dialog 的宽度 fullscreen: boolean = false; //是否为全屏 Dialog //是否为全屏 Dialog //是否为全屏 Dialog top!: string; //Dialog CSS 中的 margin-top 值 //Dialog CSS 中的 margin-top 值 modal: boolean = false; //是否需要遮罩层 //是否需要遮罩层 appendToBody: boolean = false; // Dialog 自身是否插入至 body 元素上。嵌套的 Dialog 必须指定该属性并赋值为 true // Dialog 自身是否插入至 body 元素上。嵌套的 Dialog 必须指定该属性并赋值为 true lockScroll: boolean = false; //是否在 Dialog 出现时将 body 滚动锁定 //是否在 Dialog 出现时将 body 滚动锁定 //是否在 Dialog 出现时将 body 滚动锁定 customClass!: string; //Dialog 的自定义类名 //Dialog 的自定义类名 openDelay!: number; //Dialog 打开的延时时间,单位毫秒 //Dialog 打开的延时时间,单位毫秒 closeDelay!: number; //Dialog 关闭的延时时间,单位毫秒 //Dialog 关闭的延时时间,单位毫秒 closeOnClickModal: boolean = false; //是否可以通过点击 modal 关闭 Dialog //是否可以通过点击 modal 关闭 Dialog closeOnPressEscape: boolean = false; //是否可以通过按下 ESC 关闭 Dialog //是否可以通过按下 ESC 关闭 Dialog showClose: boolean = false; //是否显示关闭按钮 //是否显示关闭按钮 //是否显示关闭按钮 beforeClose!: Function; //关闭前的回调,会暂停 Dialog 的关闭 function(done),done 用于关闭 Dialog //关闭前的回调,会暂停 Dialog 的关闭 function(done),done 用于关闭 Dialog center: boolean = false; //是否对头部和底部采用居中布局 //是否对头部和底部采用居中布局 destroyOnClose: boolean = false; //关闭时销毁 Dialog 中的元素 //关闭时销毁 Dialog 中的元素 //关闭时销毁 Dialog 中的元素 open!: Function; //Dialog 打开的回调 //Dialog 打开的回调 opened!: Function; //Dialog 打开动画结束时的回调 //Dialog 打开动画结束时的回调 close!: Function; //Dialog 关闭的回调 //Dialog 关闭的回调 closed!: Function; //Dialog 关闭动画结束时的回调 //Dialog 关闭动画结束时的回调 customEvents: Array = []; //弹窗底部自定义事件组 //弹窗底部自定义事件组 //弹窗底部自定义事件组 confirm!: Function; //默认确认事件 //默认确认事件 hiddenFooter!: Boolean; //隐藏底部按钮区 //隐藏底部按钮区 hiddenCancel!: Boolean; //隐藏取消按钮 //隐藏取消按钮 formatModel = (formModel: any) => { if (!formModel) return; function isNumber(obj: any) { return typeof obj === "number" && !isNaN(obj); } let newFormModel = {}; Object.keys(formModel).map((key) => { let val = formModel[key]; newFormModel[key] = val; if (isNumber(val)) { newFormModel[key] = val + ""; } }); return newFormModel; }; update = (opt?: any) => { if (opt.dialogFormModel) { opt.dialogFormModel = this.formatModel(opt.dialogFormModel); } Object.assign(this, opt, {}); }; constructor(opt: any) { super(opt); Object.assign( this, { show: () => {}, hide: () => {}, title: "", width: (this.dsjOptions as any).dialogDefaultWidth ? (this.dsjOptions as any).dialogDefaultWidth : "50%", fullscreen: false, top: "15vh", modal: true, appendToBody: true, lockScroll: true, customClass: "", openDelay: 0, closeDelay: 0, closeOnClickModal: true, closeOnPressEscape: true, showClose: true, beforeClose: (done: () => void) => { this.hide(); done(); }, center: false, destroyOnClose: true, open: () => {}, opened: () => {}, close: () => {}, closed: () => {}, customEvents: [], confirm: () => {}, hiddenFooter: false, hiddenCancel: false, }, opt, {} ); } }