首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >弹窗、抽屉与消息提示体系:WebBuilder 窗口组件构建 ERP 全场景交互弹窗

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

原创
作者头像
技术挖掘官
发布2026-07-02 14:01:17
发布2026-07-02 14:01:17
130
举报

在 ERP 系统开发中,新增单据、查看详情、批量编辑、流程审批、操作提醒、侧边筛选面板等交互场景,全部依赖弹窗、抽屉、消息提示组件承载。传统开发需要区分模态弹窗、非模态窗口、侧边抽屉、各类消息提示,单独封装 DOM、遮罩、动画、数据重置逻辑,代码冗余、交互不统一。

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

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

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

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

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

关键属性与业务价值:

  1. 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 四边侧滑抽屉(侧边筛选、详情预览、功能工具栏)

支持上 / 下 / 左 / 右四个方向滑出,不阻断主页面完整视野:

  1. 左侧 Drawer:系统功能侧边导航、物料分类筛选树;
  2. 右侧 Drawer:单据详情预览、客户完整信息侧边面板、报表筛选条件;
  3. 顶部 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 系统中的落地价值汇总

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、全品类弹出组件分类与 ERP 业务适配
    • 1. Window 浮动独立窗口(多开并行查看场景)
    • 2. Dialog 标准业务弹窗(ERP 最常用单据编辑弹窗)
    • 3. Drawer 四边侧滑抽屉(侧边筛选、详情预览、功能工具栏)
    • 4. 全局消息弹窗 Message(操作确认、风险提示)
    • 5. Tip 轻量悬浮提示(按钮操作瞬时反馈)
    • 6. Toast 全屏居中轻提示(全局弱提醒)
    • 7. Tooltip 鼠标悬浮气泡提示(字段说明、按钮释义)
  • 二、核心特色能力,解决 ERP 弹窗开发传统痛点
    • 1. 动态批量创建窗口,并行多单据查看
    • 2. 表单自动重置,省去大量清空脚本
    • 3. 全局共享自定义提示,统一系统 UI 风格
    • 4. 四边位 Drawer 抽屉,兼顾详情预览与主页面操作
    • 5. 多层弹窗嵌套无层级错乱
  • 三、ERP 采购订单编辑弹窗完整落地示例(Dialog 标准业务模板)
  • 四、各组件在 ERP 系统中的落地价值汇总
  • 五、对比传统开发 / 通用低代码平台优势
  • 六、结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档