
前言让业务随行前面六篇我们完整覆盖了PC端的开发——从单据建模到插件开发、从报表分析到流程自动化、从API集成到系统对接。但今天的商业节奏要求业务随时、随地、随身处理——销售人员在客户现场需要查报价、录订单管理者在差旅途中需要审批单据、看经营数据。这些场景都需要移动端来承载。金蝶云星空的移动BOS平台与PC端BOS基于同一套动态领域模型构建实现了“一次设计、多端运行”的开发模式。本篇的目标是让你掌握移动单据、移动表单、移动报表的配置化开发方法理解移动端与PC端的继承关系并能够将“销售报价单”的移动端应用发布到云之家/微信中。第1章移动平台整体架构1.1 移动BOS与PC BOS的差异移动BOS与PC BOS同根同源——都基于金蝶云星空的动态领域模型DDM构建共享同一套业务元数据和服务端逻辑。但两者在开发方式和交互体验上有显著差异对比维度PC端BOS移动端BOS开发方式BOS IDEWindows桌面工具移动BOS设计器在线HTML5工具前端技术WPF/浏览器Vue.js H5交互模式鼠标键盘支持复杂操作触屏手势强调简洁高效页面布局多页签、多分割容器单列流式布局自适应屏幕离线能力依赖网络支持离线部署发布渠道主控台菜单云之家/微信/第三方APP核心理解移动BOS不是重新开发一套业务逻辑而是为PC端的业务对象配置一套移动端的展示界面和交互方式。PC端的表单插件、值更新规则、实体服务规则等在移动端同样生效详见2.1节。1.2 移动BOS的三种页面类型移动BOS设计器支持以下几种页面类型页面类型用途关联PC端对象序时簿页面列表展示用于查看单据列表单据列表视图编辑页面详情录入/修改用于新增或编辑单据单据设计器九宫格页面轻应用导航用于组织功能入口无纯导航图表页面数据可视化用于展示分析数据账表/轻分析其他页面自定义页面扩展特殊场景动态表单序时簿与编辑页面的联动当两者绑定相同的元数据时在序时簿列表点击某条记录会自动打开对应的编辑页面进行详情查看。1.3 移动BOS新框架基于Vue.js金蝶云星空移动BOS已全面升级至基于Vue.js的H5框架核心优势包括跨平台、高效率基于H5开发一次开发自动适配iOS/Android/微信/云之家模块化加载采用ES5/ES6规范按需加载资源减少流量消耗原生体验支持定位、拍照、附件、二维码扫描等手机原生能力数据驱动MVVM模式界面随数据变化自动更新新框架提示如果你看到的移动BOS文档或示例是基于旧版H5框架的建议查阅最新的Vue.js框架资料部分API可能有变化。第2章移动单据配置化开发2.1 移动单据的配置化开发流程移动单据是与PC端业务对象关联的移动端页面。它的开发不依赖C#代码而是通过移动BOS设计器进行可视化配置。核心原则移动单据自动继承PC端单据的表单服务逻辑——包括值更新规则、实体服务规则、保存/提交/审核操作等无需在移动端重复开发。开发流程第一步进入移动BOS设计器登录金蝶云星空Web端路径【开发服务云】→【移动BOS】→【应用管理】点击“创建应用”输入应用编码和名称第二步创建页面在应用中点击“新建页面”选择页面类型如“序时簿”或“编辑”绑定元数据选择PC端的业务对象如DEM_SaleQuote系统会自动生成默认的移动端界面第三步配置页面布局在移动BOS设计器中通过拖拽控件来调整页面数据绑定从元数据中选择要显示的字段拖拽到页面占宽比设置移动端采用12列栅格系统可设置控件占宽比容器嵌套使用面板、页签容器等组织页面结构第四步配置操作按钮在导航栏容器中添加按钮如“保存”“提交”“审核”在按钮的事件中绑定PC端对应的操作2.2 移动字段与控件交互事件移动端控件的事件绑定方式与PC端插件不同——不需要写C#代码而是通过配置事件回调函数实现支持JavaScript扩展。内置操作按钮事件操作触发时机说明保存点击保存按钮调用PC端保存服务逻辑提交点击提交按钮调用PC端提交服务逻辑审核点击审核按钮调用PC端审核服务逻辑新增行点击单据体新增按钮在分录中增加一行删除行滑动删除手势移动端特有的手势交互手势交互支持移动端单据体支持通过滑动手势进行行编辑、行删除操作这是移动端区别于PC端的特色交互方式。2.3 移动单据与PC端逻辑的继承关系关键理解移动单据不是重新实现的独立页面而是对PC端业务对象的一种移动端视图。以下PC端配置在移动端自动继承生效✅ 值更新规则字段联动计算✅ 实体服务规则字段可见性、必填等✅ 保存/提交/审核操作中的服务插件逻辑✅ 表单插件中的OnLoad、AfterBindData、DataChanged等事件❌ 部分列表插件逻辑在移动端不完全生效需单独验证这意味着你在第二篇为“销售报价单”配置的值更新规则如数量×单价金额在移动端录入数据时会自动计算无需额外配置。你在第三篇开发的表单插件逻辑如客户变更时联动联系人在移动端同样执行。但要注意如果移动端需要与PC端不同的业务逻辑如移动端特有的校验规则可以通过移动表单插件进行二次扩展。2.4 单据体编辑配置与手势管理移动端由于屏幕空间有限单据体分录的交互方式与PC端不同标准配置在编辑页面中拖入“编辑列表”容器在编辑列表中绑定单据体元数据如FEntity选择在列表中显示的字段如物料、数量、单价新增/编辑分录移动端新增分录通常通过跳转到独立的明细编辑页面实现而非在列表内联编辑。开发者可通过CtrlAltG快捷键进入明细页面的开发界面进行定制。手势支持移动BOS原生支持分录行的滑动手势操作——左滑出现“删除”按钮右滑进行编辑等。第3章移动插件开发3.1 移动单据插件基类与继承当移动端需要执行PC端插件之外的特有逻辑时可开发移动端表单插件。移动端插件同样使用C#编写基类与PC端相同。关键区别移动端插件需要独立注册到移动单据中而非PC端单据。usingKingdee.BOS.Core.Bill.PlugIn;namespaceDEM.SCM.PlugIn{/// summary/// 移动端销售报价单插件/// /summarypublicclassMobileSaleQuoteBillPlugin:AbstractBillPlugIn{/// summary/// 移动端特有的加载逻辑/// /summarypublicoverridevoidOnLoad(EventArgse){base.OnLoad(e);// 判断当前是否在移动端环境if(this.View.IsMobile){// 移动端特定的初始化如简化显示、隐藏PC端复杂字段等this.View.GetControl(FRemark).Visiblefalse;}}/// summary/// 移动端保存前的特有校验/// /summarypublicoverridevoidBeforeSave(BeforeSaveEventArgse){base.BeforeSave(e);if(this.View.IsMobile){// 移动端额外校验例如要求联系人手机号必填stringmobilethis.View.Model.GetValue(FContactMobile)?.ToString()??;if(string.IsNullOrEmpty(mobile)){thrownewException(移动端录入请填写联系人手机号);}}}}}注册位置在移动BOS设计器中打开编辑页面的属性面板 → 插件配置 → 注册移动端表单插件。3.2 移动表单插件基类移动表单与移动单据的区别在于移动表单不关联任何PC端业务对象是一个独立的空白页面需完全通过插件开发实现数据加载和交互逻辑。适用场景自定义功能入口如“我的待办”聚合页纯展示类页面不依赖单据数据需要整合多数据源的特殊页面基类同样为AbstractBillPlugIn但移动表单不具备PC端单据的完整操作服务需开发者自行实现保存、提交等逻辑。3.3 移动列表插件与格式化移动端的序时簿页面列表同样支持插件扩展用于动态格式化显示。publicclassMobileSaleQuoteListPlugin:AbstractListPlugIn{publicoverridevoidOnInitialize(InitializeArgse){base.OnInitialize(e);// 移动端默认只加载必要字段减少数据传输e.QueryParm.SelectItemsnew[]{FBillNo,FDate,FCustomerId_Name,FTotalAmount,FQuoteStatus};e.QueryParm.PageSize20;// 移动端每页20条}publicoverridevoidOnFormatRowCondition(FormatRowConditionArgse){base.OnFormatRowCondition(e);// 移动端列表行标红stringstatuse.RowData[FQuoteStatus]?.ToString()??;if(status3)// 已失效{e.RowStyle.BackColorSystem.Drawing.Color.LightGray;}}}3.4 移动端消息提示与菜单控件移动端提供了与PC端不同的交互控件消息提示使用this.View.ShowMessage()在移动端会以Toast形式弹出而非PC端的模态对话框体验更符合移动端习惯。菜单控件在九宫格导航页面中配置功能入口支持点击跳转到对应的序时簿或编辑页面。第4章移动扩展功能开发4.1 业务审批的扩展开发金蝶云星空移动端的业务审批功能是移动端最核心的应用场景之一。开箱即用的审批功能在云之家/微信中接收待办通知在移动端查看审批详情单据数据、审批路线、附件执行通过/驳回操作批量审批审批详情页的定制通过移动BOS设计器可以为不同的单据类型配置不同的审批详情模板单据头关键字段变色着重显示单据体明细数据以表格呈现支持配置多个单据体数据同时呈现底部可扩展自定义操作按钮审批扩展操作开发在审批处理界面底部扩展自定义按钮如“查看订单详情”“查看预算”通过二次开发调用自定义移动表单实现。4.2 自定义移动分录详情开发当标准移动单据体无法满足复杂的分录编辑需求时如子单据体嵌套可采用拆分多表单、分步骤的方式实现。实现思路在主页面中仅显示分录的摘要信息如物料名称、数量点击某行分录跳转到独立的“明细编辑页面”明细编辑页面中展示该行的所有字段支持完整编辑保存后返回主页面刷新数据跳转实现在移动表单插件中// 点击分录行跳转到明细编辑页面publicoverridevoidEntityRowDoubleClick(EntityRowDoubleClickEventArgse){base.EntityRowDoubleClick(e);if(e.EntityKeyFEntity){introwIndexe.RowIndex;// 获取当前行数据varentryDatathis.View.Model.GetEntityDataObject(FEntity)[rowIndex];// 打开移动明细编辑页面DynamicFormShowParametershowParamnewDynamicFormShowParameter();showParam.FormIdDEM_SaleQuote_MobileEntry;// 移动明细页面标识showParam.ParentPageIdthis.View.PageId;showParam.CustomParams.Add(RowIndex,rowIndex);showParam.CustomParams.Add(EntryData,entryData);this.View.ShowForm(showParam);}}4.3 自定义列表过滤界面开发移动端的列表过滤界面可以定制以方便用户在手机上快速筛选数据。开发方式在序时簿页面的过滤区域配置过滤字段选择过滤控件类型下拉、日期选择、输入框等绑定到元数据字段第5章移动应用发布与集成5.1 发布到云之家移动BOS开发的应用可一键发布到云之家。发布步骤在移动BOS应用管理界面点击“发布”选择目标平台云之家配置轻应用信息名称、图标、可见范围发布成功后用户可在云之家工作台找到该应用业务审批待办推送使用轻应用方式推送云之家待办通知无需单独配置公共号。5.2 发布到微信移动BOS开发的H5应用可直接发布到微信公众号。集成方式在微信公众平台配置公众号开发信息在金蝶云星空移动BOS中绑定公众号自动生成微信菜单链接发布后用户通过公众号菜单访问5.3 发布到其他第三方APP移动BOS开发的移动表单支持通过HTML5方式在任意第三方APP中调用。集成方式在移动BOS中获取应用访问URL在第三方APP中通过WebView或浏览器打开该URL金蝶云星空统一管理用户登录和权限本章实战总结销售报价单移动端至此我们为“销售报价单”完成了移动端开发✅移动单据编辑页面绑定了PC端的“销售报价单”元数据配置了移动端简化布局突出客户、金额、日期核心字段值更新规则自动继承数量×单价金额导航栏配置了保存、提交按钮✅移动单据序时簿页面显示了报价单列表支持点击列表项查看详情列表插件实现状态标红✅移动审批配置审批详情页定制突出金额和客户信息底部扩展“查看客户详情”自定义按钮✅移动应用发布发布到云之家供销售人员和审批人使用常见问题速查问题解决方案移动端值更新规则不生效检查PC端单据是否配置了值更新规则移动端自动继承移动端找不到分录明细编辑界面预览移动单据点击新增分录按CtrlAltG进入明细开发界面移动插件代码不生效确认插件注册在移动单据的插件属性中而非PC端单据移动端无法录入子单据体标准功能不支持建议拆分为多表单多步骤实现云之家打开应用一直卡在登录检查用户是否绑定了金蝶云星空账号检查云之家集成配置移动端列表数据未按预期过滤移动列表插件不完全继承PC端列表逻辑需单独实现下一篇预告第八篇将进入工具篇——教你如何使用套打打印平台设计打印模板、配置引入引出功能进行批量数据导入导出、以及文件服务管理附件和图片。练习题在移动BOS设计器中为“销售报价单”创建一个移动序时簿页面配置显示单据编号、客户名称、报价总金额、报价状态在移动编辑页面中配置“是否含税”字段变更时自动更新“含税单价”字段开发一个移动表单插件在移动端加载时自动隐藏“备注”字段PC端保留将移动应用发布到云之家测试环境用手机访问验证功能