下表展示了DWF前端脚本和插件的调用对应关系,在插件编写的时候统一通过this.dwf_ctx获得入口:
控件内支持的脚本方法与对象 | 建模工具 | 应用前端 | 控件内调用示例 | |
---|---|---|---|---|
1 | dwf_axios | √ | √ | //2-调用app的restful API示例1 this.dwf_ctx.dwf_axios.post(`http://192.168.30.63/workorder/init`,param); |
2 | dwf_modeler_axios | √ | √ | //获取当前登录用户 var curUserId = this.dwf_ctx.user.oid; //调用modeler端的restful API this.dwf_ctx.dwf_modeler_axios("/dwf/v1/org/users/${curUserId}/groups"); |
3 | msgbox | √ | √ | //目前如下几种消息提示都是在界面上方提示后自动关闭 this.dwf_ctx.msgbox.success("成功的提示"); this.dwf_ctx.msgbox.info("一般的提示"); this.dwf_ctx.msgbox.error("错误的提示"); |
4 | msgboxDialog | × | √ | this.dwf_ctx.msgboxDialog.confirm (“title标题”,"请确认是否删除?", <function>(点击确定之后的回调函数), <function>(点击取消之后的回调函数)); |
5 | env | √ | √ | this.dwf_ctx.env.serverURL//服务器ip+端口地址 this.dwf_ctx.env.serverIp//服务器ip this.dwf_ctx.env.serverPort//端口地址 this.dwf_ctx.env.metaServicePort//元数据服务接口端口 this.dwf_ctx.env.objServicePort//对象数据服务接口端口 this.dwf_ctx.env.appConfig//服务器appConfig |
6 | user | √ | √ | this.dwf_ctx.user.userName//用户名 this.dwf_ctx.user.displayName//用户显示名 this.dwf_ctx.user.oid//用户oid this.dwf_ctx.user.token//用户token this.dwf_ctx.user.userGroups//用户组 |
7 | displayType | × | √ | //获取表单显示类型 this.dwf_ctx.displayType(); |
8 | className | × | √ | //获取表单类 this.dwf_ctx.className(); |
9 | getRootAddin | × | √ | //获取表单对象 this.dwf_ctx.getRootAddin(); |
10 | getAddinById | × | √ | //通过Id获取表单内控件对象 this.dwf_ctx.getAddinById(id); |
11 | getAllAddin | × | √ | //获取表单内所有控件 this.dwf_ctx.getAllAddin(); |
12 | obj | × | √ | //获取表单对象 this.dwf_ctx.obj(); |
13 | validateForm | × | √ | //触发表单验证 if(this.dwf_ctx.validateForm()){ console.log('表单验证成功') }else{ console.log('表单验证失败') } |
14 | create | × | √ | var newObj = {id:'idXXX',name:'nameXXX'}; var className = 'Part'; //新增保存 this.dwf_ctx.create(newObj, className).then(newRtnObj =>{ //返回的newRtnObj为后台新增后返回的对象,即包含了oid等属性 //todo:针对newRtnObj继续处理… }); |
15 | delete | × | √ | var curObj = {oid:uuid,id:'idXXX',name:'nameXXX'}; var className = 'Part'; this.dwf_ctx.delete(curObj, className).then(rtnObj =>{ // rtnObj返回值 = true/false,是否删除成功 //建议如果返回false,那么返回message错误原因提示信息 }); |
16 | edit | × | √ | var editObj = {id:’idXXX’,name:’nameXXX’}; var className = ‘Part’; editObj.id = ‘idYYY’; this.dwf_ctx.edit(editObj, className).then(rtnObj =>{ //返回的rtnObj为后台修改保存后返回的对象 //todo:针对rtnObj继续处理… }); |
17 | spinShow | × | √ | //打开遮罩 this.dwf_ctx.spinShow(); |
18 | spinHide | × | √ | //关闭遮罩 this.dwf_ctx.spinHide(); |
19 | closeDialog | × | √ | //关闭弹窗 this.dwf_ctx.closeDialog(); |
20 | closeTab | × | √ | //关闭页签 this.dwf_ctx.closeTab(); //关闭tab传值到后处理 this.dwf_ctx.closeTab(data); |
21 | closeTabById | × | √ | //关闭指定页签 this.dwf_ctx.closeTabById('moduleName-authority'); //关闭指定页签传值 this.dwf_ctx.closeTabById('moduleName-authority',data); |
22 | getOperation | × | √ | //通过getOperation获取到已有的操作(需要存储到数据库中),再通过executeOperation进行调用,并且允许修改已有操作的操作样式和动作。 //@param targetClass:已有操作绑定的目标类; //@param operName:已有操作的英文名 this.dwf_ctx.getOperation("WorkOrder", "createWO").then(res =>{ //先取出原始操作 var opr = res.data.data; // 替代前处理脚本,不用的话可以不写 opr.beforeExecute = function() { //新的前处理脚本 return { obj:{...},//选填,对象 query:"",//选填,查询条件 data:{...}}//选填,自定义属性 } // 替代原来操作的后处理脚本,不用的话可以不写 opr.afterExecute = function() { //新的后处理脚本,可根据 ... } this.dwf_ctx.executeOperation(opr) }); |
23 | executeOperation | × | √ | //自定义操作对象(在现在的脚本中定义操作对象,无需事先定义操作)通过executeOperation进行调用 //opr:定义的操作对象 //targetClass:目标类的类名 //viewName:目标类中的表单名称 //oprName:操作英文名 //displayName: 操作中文名 //displayType:动作支持create、edit、visit、next_create、url //url: 如果displayType是url需要增加这个参数来传url地址 //oprStyle:操作样式dialog、tab、drawerL、 drawerR //displayOperation:默认操作 true、false //beforeExecute:表示前处理函数,代表前处理脚本 //afterExecute:表示后处理函数,代表后处理脚本 //定义新的create动作的dialog样式的操作 var opr = { targetClass: "WorkOrder", //目标类的类名 viewName:"SinlgeWO" ,//目标类中的表单名称 oprName: "openCreatedial" , //操作英文名,生造操作时可以自定义 displayName:"创建工单" , //操作中文名 displayType:"create" ,//动作支持create、edit、visit、next_create、url oprStyle:"dialog", //操作样式dialog、tab、drawer displayOperation:true, //默认操作 true、false beforeExecute:function(){ //前处理函数,代表前处理脚本 //新的前处理脚本 return { obj:this.selectedObjs[0],//选填,当前表单多对象控件选中的对象 //query:"and obj.woTitle = '工单1'", //选填,非必填 data:{ "woDesc1":"自定义属性"//选填,woDesc1是自定义的属性,非实体了上绑定的已有属性;,需要在打开表单页面增加初始化操作,接收前处理脚本传入的自定义属性值 } } } afterExecute:function(){ //表示后处理函数,代表后处理脚本 //新的后处理脚本,可根据实际情况维护 var data = this.confirmData; console.log(`自定义后处理`) console.log(data) } } this.dwf_ctx.executeOperation(opr); |
24 | handleQueryData | √ | √ | //后台数据强制刷新/查询 //查询条件 let queryConditon = { targetClass:"Part", query:{query:`and obj.id='${this.dwf_ctx.obj.name}'`}, fresh: true //是否从后台强制刷新查询(建议默认值为true) }; //基于DB进行查询 this.dwf_ctx.handleQueryData(queryConditon).then(res => { //针对res值(查询返回值)直接处理… }); |
25 | selectedObjs | × | √ | //获取选中多对象控件中对象 var allRowDatas = this.dwf_ctx.selectedObjs(); |
26 | defaultObjsAddin | × | √ | //获取表单默认多对象控件 this.dwf_ctx.defaultObjsAddin(); |
27 | openForm | × | √ | //脚本打开弹窗 //参数如下 //@param targetClass:表示对应的类 //@param viewName:表示需要打开的表单名称 //@param args:高级设置,推荐使用null,用executeOperation方法处理业务。打开表单时的其他参数,在之前的实现保持不变的前提下,保证兼容性,做如下简化: //initialScript:string,前处理脚本,默认为空,慎用,如果设置的前处理脚本通过 return { obj:{...}, query: {...}, data: {...}} 返回了对象,同时在args里也设置了initParams,则args里的initParams会被覆盖掉。 //afterScript:string,后处理脚本,默认为空,慎用。 //@param displayType:create/edit/visit //@param initParams:object,与操作中的前处理脚本中return { obj:{...}, query: {...}, data: {...}} 返回的格式一致,可以设置对象,查询条件和夹带的数据 let initParams={ obj:this.selectedObjs[0], // query:`and obj.woTitle != '工单标题11'` data:{ woDesc1:'cheney' } } this.dwf_ctx.openForm(this.className,'SingleWO',null,'edit',initParams) |
28 | openTab | × | √ | //脚本打开tab //queryOpr中的参数 //@param targetClass:表示对应的类 //@param viewName:表示需要打开的表单名 //@param action:动作 //@param authority:英文名 //@param extSettings:是否打开默认操作 //@param args中的参数 //initParams:object,与操作中的前处理脚本中return { obj:{...}, query: {...}, data: {...}} 返回的格式一致,可以设置对象,查询条件和夹带的数据 //displayType:create/edit/visit var grid=this.dwf_ctx.getAddinById("D0050C68B42743D79C646E1F8FB7D397"); obj=grid.getSelected(); var queryOpr = { targetClass: this.dwf_ctx.className, viewName:'SingleWO', action: 'edit',//动作 authority: 'hihilalal',//英文名 displayName: '设置的显示名',//显示名 extSettings: JSON.stringify({needDefaultOpr:true}) } var args = { initScript:` return{ obj:this.selectedObjs[0] // obj:obj[0] }`, displayType:'edit' } this.dwf_ctx.openTab(queryOpr, args); |
29 | openDrawer | × | √ | //脚本打开滑窗 //@param targetClass:表示对应的类 //@param viewName:表示需要打开的表单名称 //@param left/right:表示右滑窗还是左滑窗 //@param args:打开表单时的其他参数,在之前的实现保持不变的前提下,保证兼容性,推荐使用null //@param displaType:tab页签打开时的状态 //@param initParams:nitParams:object,与操作中的前处理脚本中return { obj:{...}, query: {...}, data: {...}} 返回的格式一致,可以设置对象,查询条件和夹带的数据 //传入初始化脚本,可以传一个对象obj,也支持query,也支持自定义内容data let initParams={ obj:this.selectedObjs[0], data:{ woDesc1:'cheney' } } this.dwf_ctx.openDrawer(this.className,'SingleWOTest' ,'left', null,'edit',initParams); |
30 | getAttribute(AttributeName) | √ | × | // 获取属性对应的JSON对象 // @param attributeName属性的英文名 let attr = this.dwf_ctx.getAttribute("name"); console.log(attr); |
31 | getAttributesByClass(className) | √ | × | // 获取指定类绑定的所有属性 // @param className类的英文名 let assetAttrs = this.dwf_ctx.getAttributesByClass("Asset"); assetAttrs.forEach(a => { console.log(a); }); |
32 | getEntityClass(targetClass) | √ | × | // 获取当前DWF内的所有实体类 // @param targetClass实体类的英文名,如果不传则返回所有实体类 let entities = this.dwf_ctx.getEntityClass(); entities.forEach(e => { console.log(e); }); |
33 | getRelationClass(targetClass) | √ | × | // 获取当前DWF内的所有关联类 // @param targetClass关联类的英文名,如果不传则返回所有实体类 let relations = this.dwf_ctx.getRelationClass(); relations.forEach(r => { console.log(r); }); |
34 | isEntitySysAttribute(attribute) | √ | × | // 判断attributes是否为实体类系统属性, 返回值为-1时为非系统属性,其余为系统属性 let assetAttrs = this.dwf_ctx.getAttributesByClass("Asset"); assetAttrs.forEach(a => { if (this.dwf_ctx.isEntitySysAttribute(a)){ console.log(a); } }); |
35 | isRelationSysAttribute(attribute) | √ | × | // 判断attribute是否为实体类系统属性, 返回值为-1时为非系统属性,其余为系统属性 let relAttrs = this.dwf_ctx.getAttributesByClass("PartToPart"); relAttrs.forEach(a => { if (this.dwf_ctx.isRelationSysAttribute(a)){ console.log(a); } }); |