页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

版本 1 当前 »

下表展示了DWF前端脚本和插件的调用对应关系,在插件编写的时候统一通过this.dwf_ctx获得入口:


控件内支持的脚本方法与对象建模工具应用前端控件内调用示例
1dwf_axios
//2-调用app的restful API示例1
this.dwf_ctx.dwf_axios.post(`http://192.168.30.63/workorder/init`,param);
2dwf_modeler_axios
//获取当前登录用户
var curUserId = this.dwf_ctx.user.oid;
//调用modeler端的restful API
this.dwf_ctx.dwf_modeler_axios("/dwf/v1/org/users/${curUserId}/groups");
3msgbox
//目前如下几种消息提示都是在界面上方提示后自动关闭
this.dwf_ctx.msgbox.success("成功的提示");
this.dwf_ctx.msgbox.info("一般的提示");
this.dwf_ctx.msgbox.error("错误的提示");
4msgboxDialog×
this.dwf_ctx.msgboxDialog.confirm (“title标题”,"请确认是否删除?", <function>(点击确定之后的回调函数), <function>(点击取消之后的回调函数));
5env
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
6user
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//用户组
7displayType×
//获取表单显示类型
this.dwf_ctx.displayType();
8className×
//获取表单类
this.dwf_ctx.className();
9getRootAddin×
//获取表单对象
this.dwf_ctx.getRootAddin();
10getAddinById×
//通过Id获取表单内控件对象
this.dwf_ctx.getAddinById(id);
11getAllAddin×
//获取表单内所有控件
this.dwf_ctx.getAllAddin();
12obj×
//获取表单对象
this.dwf_ctx.obj();
13validateForm×
//触发表单验证
if(this.dwf_ctx.validateForm()){
	console.log('表单验证成功')
}else{
	console.log('表单验证失败')
}
14create×
var newObj = {id:'idXXX',name:'nameXXX'};
var className = 'Part';
//新增保存
this.dwf_ctx.create(newObj, className).then(newRtnObj =>{
   //返回的newRtnObj为后台新增后返回的对象,即包含了oid等属性
   //todo:针对newRtnObj继续处理…
});
15delete×
var curObj = {oid:uuid,id:'idXXX',name:'nameXXX'};
var className = 'Part';
this.dwf_ctx.delete(curObj, className).then(rtnObj =>{
   // rtnObj返回值 = true/false,是否删除成功
   //建议如果返回false,那么返回message错误原因提示信息
});
16edit×
var editObj = {id:’idXXX’,name:’nameXXX’};
var className = ‘Part’;
editObj.id = ‘idYYY’;
this.dwf_ctx.edit(editObj, className).then(rtnObj =>{
   //返回的rtnObj为后台修改保存后返回的对象
   //todo:针对rtnObj继续处理…
});
17spinShow×
//打开遮罩
this.dwf_ctx.spinShow();
18spinHide×
//关闭遮罩
this.dwf_ctx.spinHide();
19closeDialog×
//关闭弹窗
this.dwf_ctx.closeDialog();
20closeTab×
//关闭页签
this.dwf_ctx.closeTab();
//关闭tab传值到后处理
this.dwf_ctx.closeTab(data);
21closeTabById×
//关闭指定页签
this.dwf_ctx.closeTabById('moduleName-authority');
//关闭指定页签传值
this.dwf_ctx.closeTabById('moduleName-authority',data);
22getOperation×
//通过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)
});
23executeOperation×
//自定义操作对象(在现在的脚本中定义操作对象,无需事先定义操作)通过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);
24handleQueryData
//后台数据强制刷新/查询
//查询条件
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值(查询返回值)直接处理…
});
25selectedObjs×
//获取选中多对象控件中对象
var allRowDatas = this.dwf_ctx.selectedObjs();
26defaultObjsAddin×
//获取表单默认多对象控件
this.dwf_ctx.defaultObjsAddin();
27openForm×
//脚本打开弹窗
//参数如下
//@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)
28openTab×
//脚本打开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);
29openDrawer×
//脚本打开滑窗
//@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);
});
34isEntitySysAttribute(attribute)×
// 判断attributes是否为实体类系统属性, 返回值为-1时为非系统属性,其余为系统属性
let assetAttrs = this.dwf_ctx.getAttributesByClass("Asset");
assetAttrs.forEach(a => {
	if (this.dwf_ctx.isEntitySysAttribute(a)){
		console.log(a);
	}
});
35isRelationSysAttribute(attribute)×
// 判断attribute是否为实体类系统属性, 返回值为-1时为非系统属性,其余为系统属性
let relAttrs = this.dwf_ctx.getAttributesByClass("PartToPart");
relAttrs.forEach(a => {
	if (this.dwf_ctx.isRelationSysAttribute(a)){
		console.log(a);
	}
});
  • 无标签