list中显示attachmentSimple上传的多张图片

list中显示attachmentSimple上传的一张图片可以在对应的col中放image组件,然后获取图片的url给image的src显示 如果显示attachmentSimple上传的多张图片,显然放一个image组件无法显示多个,这时可以不放image组件,在col的bind-html中关联函数,函数中返回要显示的image即可 需要注意的时,在bind-html中调用函数中把当前行的rowID和附件关联的关系的值做参数传递 bizData中默认的概念就代表关系,因此在设置当前行rowID的值是可以用val("bizData中concept的值") 具体实现参考如下:   getImgURL函数的实现代码: Model.prototype.getImgURL = function(rowID, fFJ) { if (fFJ && fFJ != '[]') { var jsonList = eval("(" + fFJ + ")"); var ownerID = rowID; var html = [...]

如何设置首页的widget不允许删除

PC端门户首页中的widget默认有关闭按钮可以删除widget 如果要控制widget不允许删除,可以通过控制关闭按钮不显示实现 控制所有的widget都不允许删除,可以在/UI2/portal/pc/main/main.w的model的onload事件最后中如下控制 $(".x-widget-close").addClass('hide'); 控制某个widget不允许删除,如下控制 $("div[widgetid='TaskWaiting']").find(".x-widget-close").addClass('hide'); 说明:TaskWaiting是XX.widget.xml文件中配置的widget对应的item节点中id的属性值

如何控制强制修改初始密码

平台默认在/BIZ/system/config/sys.config.m配置文件中的配置初始化密码,因此默认的每个人的登录初始密码都是一样的 如果要控制用户登录后修改密码没有修改不让操作功能,可以在登录后控制 如下: 1.在/BIZ/SA/OPM/system/system.process.m中loginAction执行后事件,获取输入的密码跟配置的初始化密码做对比,如果一致可以用session中设置一个值 public static void systemProcessAfterLoginAction() { String pwd = (String) ContextHelper.getActionContext().getParameter("pwd");//获取输入的密码 String curPsw = OrgUtils.saltPassword(pwd);//对输入的密码进行转换 String defaultPsw = OrgUtils.getDefauletEncryptPassword();//获取的配置文件中配置的初始化密码 //和初始密码一致 HttpSession session = ContextHelper.getSessionContext().getSession(); if (curPsw.toUpperCase().equals(defaultPsw)){ session.setAttribute("pwdValue", "default"); } else session.setAttribute("pwdValue", [...]

如何通过ajax调用action

在UI2层调用action,可以用平台提供的Request中的API,当然也可以直接用ajax调用 用ajax调用需要通过/x5/UI2/system/service/common/bizAction.j调用,具体实现如下: var valuejson = {"id":"1","fSendName":"快递","fCost":"免邮","fState":"1"}; $.ajax({ async : false, type : 'GET', dataType : 'json', url : "/x5/UI2/system/service/common/bizAction.j", data : { process : '/appdemo/test/process/date/dateProcess', activity : 'mainActivity', action : 'jsonParamAction', jsonParam : JSON.stringify(valuejson)// [...]

dataTables中通过按钮显示更多操作按钮

dataTables中显示按钮可以参考onCellRender中设置 要显示更多操作的按钮可以用popMenu组件 dataTables中通过按钮显示更多操作按钮具体实现如下: 在.w中放一个popMenu,在dataTables的onCellRender中控制列显示按钮,按钮的click事件中打开popMenu 如果要在操作按钮的事件中操作数据可以在model的构造函数中定义实例变量,在onCellRender事件中的按钮的click事件中获取到row和rowID赋值给实例变量 popMenu中按钮事件中通过实例变量去操作,代码如下: 1.popMenu的定义: <div component="$UI/system/components/justep/popMenu/popMenu" class="x-popMenu" direction="auto" xid="popMenu1" opacity="0"> <div class="x-popMenu-overlay" xid="div8"/> <ul component="$UI/system/components/justep/menu/menu" class="x-menu dropdown-menu x-popMenu-content" xid="menu1"> <li class="x-menu-item" xid="item1"> <a component="$UI/system/components/justep/button/button" class="btn btn-link" label="获取数据" xid="button7" onClick="button7Click"> <i xid="i10"/> [...]

grid组件多选时如何控制只有一行是选中状态

grid组件的multiSelect设置为true,显示多选框进行多选 如果要控制只允许一行是选中状态,可以在grid的onRowCheck事件中如下控制: Model.prototype.grid1RowCheck = function(event){ var checkRowIDs = event.source.getCheckeds();//获取多选选中状态行的rowID //判断当前操作的是行的选中状态,遍历选中状态行的rowID,设置rowID跟当前操作行的rowID不一致的行为不选的状态 if (event.checked === true) { for(var i= 0;i<checkRowIDs.length;i++){ if(checkRowIDs[i] != event.rowID){ event.source.setRowChecked(checkRowIDs[i],false); } } } };

dataTables组件多选时如何控制只有一行是选中状态

dataTables组件的multiSelect设置为true,显示多选框进行多选 如果要控制只允许一行是选中状态,可以在dataTables的onRowCheck事件中如下控制: Model.prototype.listDataRowCheck = function(event) { var checkRows = event.source.getCheckeds(); //获取多选选中状态的行 //判断当前操作的是行的选中状态,遍历选中状态的行,设置rowID跟当前操作行的rowID不一致的行为不选的状态 if (event.checked === true) { for(var i= 0;i<checkRows.length;i++){ if(checkRows[i].getID() != event.rowID){ event.source.setRowChecked(checkRows[i],false); } } } };

第三方组织机构数据如何导入到X5中

第三方的组织机构数据导入到X5中有如下两种方案 方案一:在x5中定义action,调用X5提供的API把数据插入到SA_OPOrg和SA_OPPerson中(推荐此方案) action对应的java中可以调用下面的API进行组织和人员的添加 com.justep.system.opm.api.OrgHelper中提供了appendOrg 添加除人员成员外的各级组织节点和appendOrgs添加多个组织节点 com.justep.system.opm.api.PersonHelper中提供了appendPerson添加一个人员和appendPersons添加多个人员 函数的具体参数说明参考API中的讲解 第三方调用x5的action需要先模拟登陆 前端调用可以参考http://docs.wex5.com/bex5-ui-question-list-10271/中register.j的实现,然后通过ajax调用.j 后端调用可以用java接口或者封装为WebService可以参考/BIZ/demo/actions/process/integration下提供的案例 系统集成中也有说明 方案二:直接写sql向SA_OPOrg和SA_OPPerson中插入数据 通过sql向数据库中插入数据需要注意有些字段是必须给值的,可以参考组织机构初始化导入中的说明 注意SA_OPOrg中根节点的sParent的值要设置为null 导入成功后在/UI2/SA/OPM/repairTools/mainActivity.w中调用一下repairOrgAction这个action,然后配置一下这个功能的功能菜单和权限,运行功能,执行action的调用进行组织机构数据的修复 在添加人员(向SA_OPPerson中插入数据)是需要注意密码的格式 调用API插入人员时,直接传登录的时候输入的密码,java中OrgUtils.encryptPassword(String password)平台会自动对密码加密,把加密后的密码做参数给插入人员的API 使用sql插入数据时需要注意平台的密码是否用了加密增强的特性,可以根据/BIZ/system/config/sys.config.m中是否有下面的配置判断 <config name="passwordSalt" value="http://www.justep.com"/> 如果没有就是直接用的MD5加密的方式,可以自己对登录时输入的密码进行MD5加密插入到数据库中 如果有就是用了平台的密码加密增强特性,在MD5加密后还需要通过调用API:OrgUtils.saltPassword("MD5之后的值")生成的密码插入到数据库中

启动规则中流程模版的设置如何通过代码实现

在流程模版管理中给相关组织设置了流程模版后要在process的启动规则中设置流程模版选择流程模版函数才可以 如果不在启动规则中设置,可以在process的onBeforeStart事件中代码控制,如下: public static void andProcessBeforeStart() { String temp = TemplateHelper.findTemplateByCurrentPerson(ContextHelper.getActionContext().getProcess().getFullName());//获取当前人的流程模板 if (Utils.isNotEmptyString(temp)) { Map<String, Object> map = (Map<String, Object>) ContextHelper.getActionContext().getParameter("attributes"); if (map == null) { map = new HashMap<String, Object>(); ContextHelper.getActionContext().setParameter("attributes", map); } [...]