弹窗:抽屉与消息提示体系:WebBuilder 窗口组件构建 ERP 全场景交互弹窗

时间:2026-07-05 08:46:40 来源:互联网

在企业资源计划系统开发过程中,新增单据、查看详情、批量编辑、流程审批、操作提醒及侧边筛选面板等交互场景,均依赖弹窗、抽屉与消息提示组件。传统开发需区分模态与非模态弹窗、侧边抽屉及各类消息提示,并单独封装DOM、遮罩、动画和数据重置逻辑,导致代码冗余且交互不统一。

弹窗、抽屉与消息提示体系:WebBuilder 窗口组件构建 ERP 全场景交互弹窗

WebBuilder内置完整的Window、Dialog、Drawer、Tip、Message、Toast及Tooltip全套弹窗交互组件,基于XWL声明式配置实现,支持动态创建窗口、自动重置表单、多层嵌套弹窗、四边侧滑抽屉及全局共享提示,全面覆盖ERP采购、销售、生产、财务全业务弹窗交互需求,一套组件即可满足所有弹出层场景。

一、全品类弹出组件分类与 ERP 业务适配

基于提供的完整示例XWL代码,平台弹出层分为7大类,分别匹配ERP不同业务场景:

1. Window 浮动独立窗口(多开并行查看场景)

无强制遮罩,可拖拽,支持多窗口同时打开,适合并行查看多份单据详情及多BOM对比。

关键属性与业务价值:

instanced: false模板窗口,支持JS动态新建多实例,批量打开多条订单详情;代码语言:javascript

复制

click(e, options){let win = app.dynamicNewWin;delete win.cid;win = Wb.create(win);win.show();}

ERP场景:批量勾选多条采购订单,一键批量打开独立窗口并行查看;

2. closeAction: "destroy"关闭即销毁,释放内存,优化大量弹窗场景性能;

3. resetDialog: true隐藏窗口自动清空所有输入框值,无需手动编写重置表单JS;

ERP高频场景:新增物料、新增供应商弹窗,关闭再打开自动清空上次填写内容;

4. modal: true模态窗口,遮罩锁定父页面,强制用户完成操作再返回,用于必填审批和关键确认编辑。

2. Dialog 标准业务弹窗(ERP 最常用单据编辑弹窗)

固定居中弹窗,自带底部确认/取消按钮,用于90%单据的新增、编辑和查看:采购订单编辑、BOM编辑、客户档案弹窗。支持自定义顶部菜单栏(新增/编辑/删除快捷按钮);支持多层嵌套弹窗,弹窗内可再弹出子弹窗(如单据内新增明细行弹窗);plainTitle、labelUp可自定义标题布局,适配紧凑表单弹窗。

3. Drawer 四边侧滑抽屉(侧边筛选、详情预览、功能工具栏)

支持上/下/左/右四个方向滑出,不阻断主页面完整视野:左侧Drawer可用于系统功能侧边导航和物料分类筛选树;右侧Drawer适用于单据详情预览、客户完整信息侧边面板及报表筛选条件;顶部Drawer适合批量操作工具栏和全局筛选面板。示例rightDrawer可直接改造为ERP单据右侧详情抽屉,点击表格行即可从右侧滑出完整订单信息,无需跳转页面。

4. 全局消息弹窗 Message(操作确认、风险提示)

提供多层级标准化消息API,无需自定义弹窗,一行代码即可调用:

表格

方法

用途

ERP业务场景

Wb.info()

普通提示

查询完成、筛选提示

Wb.succ()

成功提示

保存单据、审核完成、入库成功

Wb.warn()

警告提示

库存低于安全库存、单据未审核

Wb.error()

错误提示

编码重复、数量不足、保存失败

Wb.confirm()

二次确认弹窗

删除单据、作废订单、清空库存(高危操作)

Wb.choose()

多按钮选择弹窗

保存并新增/仅保存两种操作选择

支持自定义按钮、HTML富文本内容和动画淡入淡出,高危删除操作强制二次确认,有效规避误操作风险。

5. Tip 轻量悬浮提示(按钮操作瞬时反馈)

页面角落短时自动消失提示,用于按钮点击即时反馈,保存、删除、提交后快速告知用户结果。分级API:Wb.tipSucc / tipWarn / tipError / tipDone,可区分成功、警告、错误和完成状态。

6. Toast 全屏居中轻提示(全局弱提醒)

不打断操作,自动消失,用于后台异步任务进度提醒,如报表导出、批量同步完成。

7. Tooltip 鼠标悬浮气泡提示(字段说明、按钮释义)

绑定在组件上,鼠标移入弹出说明,无需点击:物料编码规则、字段填写说明、按钮功能释义;支持自定义复杂表单气泡,可嵌入输入框、按钮,甚至全局共享统一提示模板(示例myShareTip为全局共用提示组件,统一样式,减少重复配置)。

二、核心特色能力,解决 ERP 弹窗开发传统痛点

1. 动态批量创建窗口,并行多单据查看

传统开发多窗口需手动拼接DOM并管理实例,WebBuilder通过模板窗口instanced: false配合Wb.create()快速生成独立窗口实例,实现多订单、多物料并行对比查看。

2. 表单自动重置,省去大量清空脚本

resetDialog: true属性开启后,窗口隐藏时自动清空所有text/number/date输入框,ERP新增弹窗无需手写ds.clear()重置逻辑,大幅减少JS代码量。

3. 全局共享自定义提示,统一系统 UI 风格

在模块initialize生命周期全局注册共享Tip实例,所有页面组件可复用同一份提示样式:

代码语言:javascript

复制

events: {initialize(options){Wb.apply(app, {myShareTip: new Wb.Tip({cls: 'w-error-color', fontSize: '1.5em',events: {beforetip(comp) { this.text = '提示:' comp.cid; }}})});}}

所有组件通过 tip:"@app.myShareTip" 复用,全系统提示样式统一,后期修改仅改一处。

4. 四边位 Drawer 抽屉,兼顾详情预览与主页面操作

右侧抽屉查看单据详情时,主表格页面仍可滚动和筛选,兼顾“浏览明细+批量操作”复合场景,是ERP列表页面提升操作效率的核心组件。

5. 多层弹窗嵌套无层级错乱

Dialog内可继续打开新Dialog或Window,平台自动管理z-index层级,审批弹窗和明细弹窗多层嵌套不会出现遮罩错位或弹窗被遮挡问题。

三、ERP 采购订单编辑弹窗完整落地示例(Dialog 标准业务模板)

基于示例Dialog组件改造,可直接导入WebBuilder,包含表单、顶部操作菜单、嵌套子弹窗及自动重置能力:

代码语言:javascript

复制

({cname: "module",cid: "erp_purchase_order_win",title: "采购订单弹窗模块",events: {initialize(options){// 全局共享提示组件Wb.apply(app, {orderTip: new Wb.Tip({cls: 'w-normal-color', fontSize: '1em',events: {beforetip(comp){this.text = comp.text "填写规范:编码不可重复,数量大于0";}}})});}},items : [{cname: "array",cid: "winTemplates",items : [{// 采购订单主编辑弹窗cname: "dialog",cid: "purchaseOrderDialog",title: "采购订单编辑",layout: "grid1",resetDialog: true, // 关闭自动清空表单width: "75em",height: "55em",// 弹窗顶部操作菜单menu: {cname: "menu",cid: "topMenu",isProperty: true,items : [{cname: "item",icon: "add",text: "新增明细",events: {click(){ app.orderLineDialog.show(); }}},{cname: "item",icon: "delete",text: "删除选中明细"},{cname: "divider"},{cname: "item",icon: "print",text: "打印订单"}]},items : [{// 基础头部字段cname: "text",cid: "orderCode",text: "采购单号",required: true,tip: "@app.orderTip"},{cname: "select",cid: "supplierId",text: "供应商",url: "erp_supplier?xaction=listSupplier",required: true},{cname: "date",cid: "orderDate",text: "下单日期",required: true},{cname: "textArea",cid: "remark",text: "备注说明"},// 物料明细表格{cname: "grid",cid: "orderLineGrid",title: "物料明细",height: "30em",columns: [{text:"物料编码",field:"matCode"},{text:"物料名称",field:"matName"},{text:"采购数量",field:"qty"},{text:"单价",field:"price"},{text:"金额",field:"amt"}]},// 弹窗内打开明细新增子弹窗按钮{cname: "button",cid: "addLineBtn",text: "新增物料明细",type: "primary",onClick: "app.orderLineDialog.show()"}]},// 明细嵌套子弹窗{cname: "dialog",cid: "orderLineDialog",title: "添加采购物料",layout: "grid1",width: "50em",resetDialog: true,items : [{cname: "text", cid:"matCode", text:"物料编码", required:true},{cname: "number", cid:"qty", text:"采购数量", minValue:0.01, required:true},{cname: "number", cid:"price", text:"单价", minValue:0}]},// 右侧详情抽屉{cname: "drawer",cid: "orderDetailDrawer",dockPosition: "right",width: "45vw",title: "订单完整详情预览",items: [{cname: "component", html: "展示订单全流程信息、入库记录、付款记录"}]}]},{cname: "viewport",cid: "mainView",layout: "grid1",items : [{cname: "label",text: "采购订单弹窗交互演示",cls: "w-title3"},{cname: "button",text: "新增采购订单",events: {click(){ app.purchaseOrderDialog.show(); }}},{cname: "button",text: "查看订单侧边详情抽屉",events: {click(){ app.orderDetailDrawer.show(); }}},{cname: "button",text: "删除订单测试确认弹窗",events: {click(){Wb.confirm("确认删除该采购订单?删除后无法恢复", ()=>{Wb.succ("订单删除成功");});}}}]}]})

四、各组件在 ERP 系统中的落地价值汇总

Dialog标准弹窗统一所有单据新增/编辑入口,自带自动表单重置、顶部操作菜单和多层嵌套,一套模板可复用采购、销售、库存、生产全部单据,减少90%弹窗页面开发量。Window浮动窗口支持多开并行对比多张单据,适合工程BOM、多订单核对场景,提升运营与采购人员多任务处理效率。Drawer侧滑抽屉使列表页无需跳转即可预览完整单据信息,侧边常驻筛选面板,减少页面来回切换,优化操作链路。全局消息API标准化成功/失败/警告/确认提示,高危操作强制二次确认,规范全系统交互反馈,降低用户误操作概率。Tooltip悬浮提示用于字段填写规则和功能说明悬浮展示,减少页面文字说明,界面简洁,降低新员工学习成本。全局共享Tip统一全系统提示UI样式,一处修改全局生效,保证ERP整套系统视觉一致性,维护成本极低。

五、对比传统开发 / 通用低代码平台优势

对比维度

WebBuilder弹窗组件体系

传统前后端分离开发

普通拖拽低代码平台

自动表单重置

resetDialog属性零代码实现

每个弹窗单独编写JS清空表单,重复代码极多

无自动重置,关闭弹窗数据保留,需手动清除

动态多窗口创建

模板+Wb.create一行生成实例

手动管理窗口DOM、实例、销毁逻辑,大量JS

不支持动态批量创建窗口

四边位侧滑抽屉

原生Drawer组件,上下左右四种滑出

需手写CSS动画、遮罩、定位,兼容性差

仅支持右侧抽屉,无上下/左侧布局

多层弹窗嵌套

自动管理z-index层级,无遮挡错乱

手动控制层级,多层弹窗极易出现遮罩错位

仅支持单层弹窗,弹窗内不能再打开弹窗

全局共享提示模板

initialize全局注册,全页面复用

每个页面单独定义提示样式,UI不统一

无法自定义全局共享提示组件

标准化消息API

内置succ/confirm/warn全套方法,富文本支持

封装统一消息组件需单独开发底层库

仅简单成功提示,无二次确认、自定义多按钮弹窗

六、结语

弹窗、抽屉与消息提示构成了ERP系统用户交互的核心基础,其开发效率与体验直接影响系统落地周期和员工使用感受。WebBuilder整合了Window、Dialog、Drawer、Tip、Message及Tooltip全套弹出层组件,依托XWL声明式配置,将动态窗口、自动表单重置、侧边滑出和全局统一提示等高阶能力开箱即用,无需封装底层交互逻辑。借助这套完整的弹窗体系,开发人员能够快速搭建覆盖采购、销售、库存、生产及财务全业务场景的单据弹窗,兼顾多窗口并行查看、侧边快速预览与高危操作风险管控等复杂交互需求,在保证交互统一和数据安全的前提下,大幅降低ERP前端交互页面的开发与维护工作量。