Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java =================================================================== diff -u -r21790 -r21859 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java (.../WorkFlowManagerImpl.java) (revision 21790) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowManagerImpl.java (.../WorkFlowManagerImpl.java) (revision 21859) @@ -32,13 +32,13 @@ } public NodeDefinition getLastNodeDefinitionById(String nodeDefinition_id){ - String sql= " where po.sequenceNumber in ( select o.sequenceNumber-1 from NodeDefinition o where o.id="+nodeDefinition_id+")"; + String sql= " where po.sequenceNumber = ( select o.sequenceNumber-1 from NodeDefinition o where o.id="+nodeDefinition_id+") and po.workFlow.id =( select o.workFlow.id from NodeDefinition o where o.id="+nodeDefinition_id+") "; NodeDefinition nodeDefinition=(NodeDefinition) objectDao.getBySql(NodeDefinition.class.getSimpleName(), sql); return nodeDefinition; } - public NodeDefinition getNextNodeDefinitionById(String nodeDefinition_id){ - String sql= " where po.sequenceNumber in ( select o.sequenceNumber+1 from NodeDefinition o where o.id="+nodeDefinition_id+")"; + public NodeDefinition getNextNodeDefinitionById(String nodeDefinition_id){//o.workFlow_id + String sql= " where po.sequenceNumber in ( select o.sequenceNumber+1 from NodeDefinition o where o.id="+nodeDefinition_id+") and po.workFlow.id =( select o.workFlow.id from NodeDefinition o where o.id="+nodeDefinition_id+") "; NodeDefinition nodeDefinition=(NodeDefinition) objectDao.getBySql(NodeDefinition.class.getSimpleName(), sql); return nodeDefinition; } @@ -200,7 +200,8 @@ @Override public NodeApproval getNodeApproval(String NodeDefinitionId) { - return (NodeApproval) objectDao.getByID_ForUpdate(NodeApproval.class.getSimpleName(),NodeDefinitionId); + return (NodeApproval) objectDao.getByProperty_ForUpdate(NodeApproval.class.getSimpleName(),"nodeDefinition.id",NodeDefinitionId); + //return (NodeApproval) objectDao.getByID_ForUpdate(NodeApproval.class.getSimpleName(),NodeDefinitionId); } @Override Index: ssts-web/src/main/webapp/systemmanage/workFlow/approvalRecord.js =================================================================== diff -u --- ssts-web/src/main/webapp/systemmanage/workFlow/approvalRecord.js (revision 0) +++ ssts-web/src/main/webapp/systemmanage/workFlow/approvalRecord.js (revision 21859) @@ -0,0 +1,217 @@ +var formObj3; +var windowObj3; +var entityName3 = '审批记录'; +//formId 为工单id +function ApprovalRecord(formId){ + + //会重复执行两次 + function rendererResponseTime(value, metaData, record, rowIndex, colIndex, + store, view) { + var cTime=record.data['createTaskTime'].time; + var hTime=0; + if(record.data['handleTime']!=null) //得判断,不然少cell + hTime=record.data['handleTime'].time; + + if((typeof(hTime)!="undefined" && hTime!=0)&&(typeof(cTime)!="undefined" && cTime!=0)){ + var responseTimeMinutes= Math.floor(parseInt(hTime - cTime) / 1000 / 60); + var responseTimeHours=Math.floor(parseInt(hTime - cTime) / 1000 / 60 / 60); + var responseTimeDays=Math.floor(parseInt(hTime - cTime) / 1000 / 60 / 60/24); + if(responseTimeDays>0){ + return responseTimeDays+'天'+Math.floor((parseInt(hTime - cTime)-responseTimeDays*1000*60*60*24)/ 1000 / 60 / 60)+'小时'; + } + if(responseTimeHours>0){ + return responseTimeHours+'小时'+Math.floor((parseInt(hTime - cTime)-responseTimeHours*1000*60*60)/ 1000 / 60)+'分钟'; + } + if(responseTimeMinutes==0) + return '1分钟'; + return responseTimeMinutes+'分钟'; + }else + return ''; + } + + + function renderApprovalResult(value, metaData, record, rowIndex, colIndex, store, view) { + if (value == 1) { + return '通过'; + } else if(value == 0) { + return '未通过'; + }else { + return '未处理'; + } + } + + var fields3 = [ { + name : 'id', + mapping : 'id' + }, { + name : 'formId', + mapping : 'formId' + }, { + name : 'formType', + mapping : 'formType' + }, { + name : 'title', + mapping : 'title' + }, { + name : 'createTaskTime', + mapping : 'createTaskTime' + }, { + name : 'taskName', + mapping : 'taskName' + },{ + name : 'handlerId', + mapping : 'handlerId' + }, { + name : 'handler', + mapping : 'handler' + }, { + name : 'handleTime', + mapping : 'handleTime' + }, { + name : 'status', + mapping : 'status' + }, { + name : 'handleOpinion', + mapping : 'handleOpinion' + }, { + name : 'approvalResult', + mapping : 'approvalResult' + }, { + name : 'roleId', + mapping : 'roleId' + }, { + name : 'userId', + mapping : 'userId' + }, { + name : 'fullName', + mapping : 'fullName' + }, { + name : 'roleName', + mapping : 'roleName' + } ]; + var columns3 = [{ + header : "标题", + dataIndex : 'title', + width : 150, + minWidth : 150, + maxWidth : 150, + filterable : true, + filter : { + type : 'string' + } + }, { + header : "任务名字", + dataIndex : 'taskName', + width : 120, + minWidth : 120, + filterable : true, + filter : { + type : 'string' + } + }, { + header : "处理人", + dataIndex : 'handler', + width : 60, + minWidth : 60, + filterable : true, + filter : { + type : 'string' + } + }, { + header : "处理结果", + dataIndex : 'approvalResult', + width : 70, + minWidth : 70, + filterable : true, + filter : { + type : 'string' + }, + renderer : renderApprovalResult + }, { + header : "处理意见", + dataIndex : 'handleOpinion', + width : 120, + minWidth : 120, + filterable : true, + filter : { + type : 'string' + } + } , { + header : "处理时间", + dataIndex : 'handleTime', + width : 140, + minWidth : 140, + filterable : true, + filter : { + type : 'date' + }, + renderer : rendererTransitionTime + }, { + header : "创建任务时间", + dataIndex : 'createTaskTime', + width : 140, + minWidth : 140, + filterable : true, + filter : { + type : 'date' + }, + renderer : rendererTransitionTime + }, { + header : "响应时间", + dataIndex : '', + width : 100, + minWidth : 100, + filterable : true, + filter : { + type : 'string' + }, + renderer : rendererResponseTime + }]; + + var approvalRecordGrid = Ext4.create('ExtJs.forgon4.Grid', { + title : entityName3, + dataUrl : WWWROOT + + '/disinfectSystem/workFlowApprovalTaskAction!loadWorkFlowApprovalTaskRecordList.do', + fields : fields3, + columns : columns3, + sorters : { + property : 'createTaskTime', + direction : 'ASC' + }, + extraParams : {formId:formId}, + showRightClick : false, + tbar : [] + }); + + + formObj3 = Ext4.create('Ext4.form.Panel', { + layout : 'vbox', + frame : true, + border : 0, + labelSeparator : ': ', + bodyPadding : '5 5 0', + autoScroll : true, + buttonAlign : 'center', + buttons : [], + items : [ { + xtype : 'container', + flex : 1, + width : '100%', + layout : 'fit', + items : approvalRecordGrid + }] + }); + + windowObj3 = Ext4.create('Ext4.window.Window', { + layout : 'fit', + title : '审批记录信息', + width : 1000, + height : 380, + resizable : false, + modal : true, + border : false, + plain : true, + items : formObj3 + }); + windowObj3.show(); + } \ No newline at end of file Index: forgon-core/src/main/java/com/forgon/workflow/model/WorkFlowApprovalTask.java =================================================================== diff -u -r21786 -r21859 --- forgon-core/src/main/java/com/forgon/workflow/model/WorkFlowApprovalTask.java (.../WorkFlowApprovalTask.java) (revision 21786) +++ forgon-core/src/main/java/com/forgon/workflow/model/WorkFlowApprovalTask.java (.../WorkFlowApprovalTask.java) (revision 21859) @@ -74,12 +74,12 @@ private Date handleTime; /** - * 处理状态: 0(已处理) 1(未处理) -1(默认) + * 处理状态: 1(已处理) 0(未处理) -1(默认) * */ private int status; /** - * 审批结果: 0(通过) 1(未通过) -1(默认) + * 审批结果: 1(通过) 0(未通过) -1(默认) * */ private int approvalResult; @@ -93,7 +93,7 @@ * */ private Long roleId; - /** + /** * 待处理用户id * */ private Long userId; Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManagerImpl.java =================================================================== diff -u -r21790 -r21859 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManagerImpl.java (.../WorkFlowApprovalTaskManagerImpl.java) (revision 21790) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManagerImpl.java (.../WorkFlowApprovalTaskManagerImpl.java) (revision 21859) @@ -2,15 +2,22 @@ import java.sql.ResultSet; import java.sql.SQLException; +import java.util.Date; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.vo.LoginUserData; import com.forgon.entity.ExtJsEntity; +import com.forgon.security.model.User; +import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.util.ExtJsUtil; +import com.forgon.workflow.model.NodeApproval; +import com.forgon.workflow.model.NodeDefinition; import com.forgon.workflow.model.WorkFlowApprovalTask; public class WorkFlowApprovalTaskManagerImpl implements WorkFlowApprovalTaskManager{ @@ -21,59 +28,246 @@ this.objectDao = objectDao; } - public WorkFlowApprovalTask getWorkFlowApprovalTaskByRollBack(String nodeDefinitionId,Long formId){ - String sql=" where po.nodeDefinition_id in (select n.id from NodeDefinition n where n.sequenceNumber in ( select o.sequenceNumber-1 from NodeDefinition o where o.id="+nodeDefinitionId+"))and po.formId="+formId; + /** + * 审批通过 ,保存待办任务 + * + */ + public void saveOrUpdateWorkFlowApprovalTask(WorkFlowApprovalTask workFlowApprovalTask,NodeDefinition nodeDefinition,NodeDefinition nodeDefinition1,int approvalResult,String handleOpinion,long userID,String formType,long formId){ + LoginUserData userData= AcegiHelper.getLoginUser(); - WorkFlowApprovalTask workFlowApprovalTask=(WorkFlowApprovalTask) objectDao.getBySql(WorkFlowApprovalTask.class.getSimpleName(),sql); + workFlowApprovalTask.setNodeDefinition(nodeDefinition); + workFlowApprovalTask.setHandlerId(userData.getUserId()); + workFlowApprovalTask.setHandler(userData.getUserName()); + workFlowApprovalTask.setHandleTime(new Date()); + workFlowApprovalTask.setHandleOpinion(handleOpinion); + workFlowApprovalTask.setApprovalResult(approvalResult); + workFlowApprovalTask.setStatus(1); + saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask); + + if(nodeDefinition1!=null){ //有下一个节点 + WorkFlowApprovalTask workFlowApprovalTask1=new WorkFlowApprovalTask(); + workFlowApprovalTask1.setTaskName(nodeDefinition1.getName()); + workFlowApprovalTask1.setNodeDefinition(nodeDefinition1); + workFlowApprovalTask1.setFormId(formId); + workFlowApprovalTask1.setFormType(formType); + workFlowApprovalTask1.setTitle(formId+formType); + workFlowApprovalTask1.setCreateTaskTime(new Date()); + if(userID==0){//用户没有指定下一个,则默认节点审批的角色和用户 + NodeApproval nodeApproval=(NodeApproval) objectDao.getByProperty(NodeApproval.class.getSimpleName(), "nodeDefinition.id", nodeDefinition1.getId()); + long roleId=nodeApproval.getRoleId(); + long userId=nodeApproval.getUserId(); + workFlowApprovalTask1.setRoleId(roleId); + workFlowApprovalTask1.setUserId(userId); + }else + workFlowApprovalTask1.setUserId(userID); + workFlowApprovalTask1.setApprovalResult(-1); + workFlowApprovalTask1.setStatus(0); + saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask1); + } + } + + + /** + * 审批回滚 ,保存待办任务 + * + */ + public void rollbackWorkFlowApprovalTask(WorkFlowApprovalTask workFlowApprovalTask,int approvalResult,String nodeDefinition_id,NodeDefinition nodeDefinition1){ + LoginUserData userData= AcegiHelper.getLoginUser(); + workFlowApprovalTask.setHandlerId(userData.getUserId()); + workFlowApprovalTask.setHandler(userData.getUserName()); + workFlowApprovalTask.setHandleTime(new Date()); + workFlowApprovalTask.setStatus(1); + workFlowApprovalTask.setApprovalResult(approvalResult); + saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask); + WorkFlowApprovalTask workFlowApprovalTask1=new WorkFlowApprovalTask(); + if(nodeDefinition1!=null){ + //获取上一个节点的待审批任务 + WorkFlowApprovalTask workFlowApprovalTask2 = getWorkFlowApprovalTaskByRollBack(nodeDefinition_id,workFlowApprovalTask.getFormId()); + workFlowApprovalTask1.setTaskName(nodeDefinition1.getName()); + workFlowApprovalTask1.setNodeDefinition(nodeDefinition1); + workFlowApprovalTask1.setFormId(workFlowApprovalTask2.getFormId()); + workFlowApprovalTask1.setFormType(workFlowApprovalTask2.getFormType()); + workFlowApprovalTask1.setTitle(workFlowApprovalTask2.getFormId()+workFlowApprovalTask2.getFormType()); + workFlowApprovalTask1.setCreateTaskTime(new Date()); + workFlowApprovalTask1.setUserId(workFlowApprovalTask2.getUserId()); + workFlowApprovalTask1.setApprovalResult(-1); + workFlowApprovalTask1.setStatus(0); + saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask1); + }else{//节点为空,返回申请人---前台调用家的修改单流程状态 + + //根据工号获取工单申请人id + User user= getUserByFormId(workFlowApprovalTask.getFormId()); + workFlowApprovalTask1.setTaskName("申请人修改工单"); + workFlowApprovalTask1.setFormId(workFlowApprovalTask.getFormId()); + workFlowApprovalTask1.setFormType(workFlowApprovalTask.getFormType()); + workFlowApprovalTask1.setTitle(workFlowApprovalTask.getFormId()+workFlowApprovalTask.getFormType()); + workFlowApprovalTask1.setCreateTaskTime(new Date()); + if(user!=null) + workFlowApprovalTask1.setUserId(user.getId()); + workFlowApprovalTask1.setApprovalResult(-1); + workFlowApprovalTask1.setStatus(0); + saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask1); + } + + } + + + /** + * 根据工单id获取申请人 + * + */ + @Override + public User getUserByFormId(Long formId) { + String sql=" where po.name in (select i.applicantCode from InvoicePlan i where i.id="+formId+")";//InvoicePlan是类名 + User user=(User) objectDao.getBySql(User.class.getSimpleName(),sql); + return user; + } + + + /** + * 审批通过 ,保存待办任务 + * + */ + public WorkFlowApprovalTask getWorkFlowApprovalTaskByRollBack(String nodeDefinitionId,Long formId){ + String sql=" where po.nodeDefinition.id in (select n.id from NodeDefinition n where n.sequenceNumber in ( select o.sequenceNumber-1 from NodeDefinition o where o.id="+nodeDefinitionId+"))and po.formId="+formId; + WorkFlowApprovalTask workFlowApprovalTask=(WorkFlowApprovalTask) objectDao.getBySql(WorkFlowApprovalTask.class.getSimpleName(),sql); return workFlowApprovalTask; } + + /** + * 获取当前节点的下一个节点----节点审批表下的所有用户或者指定用户 + * 如果是倒数第二个节点,则指定申请人,无须指定是谁 + */ @Override - public JSONArray getAllUserByWorkFlowApprovalTaskId(String id) { - String select=" select w.userId,u.fullName from WorkFlowApprovalTask w ,SS_USERS u "; - select+=" where u.id=w.userId and w.id="+id; + public JSONArray getAllUserByWorkFlowApprovalTaskId(String id,String nodeDefinition_id) { + //因为回退,所以根据节点和表单号可能查出多条,则以时间排序获取最新一条 + String sql="select (case when (select top 1 id from ( SELECT TOP 2 * from NodeDefinition order by sequenceNumber DESC ) as a order by a.sequenceNumber ASC)= "+nodeDefinition_id+" then 1 else 0 end) flag"; + ResultSet nodeDefinitionResult = objectDao.executeSql(sql); + long flag=0; + try { + while(nodeDefinitionResult.next()){ + flag=nodeDefinitionResult.getLong("flag"); + } + } catch (SQLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } - ResultSet result = objectDao.executeSql(select); - JSONArray jSONArray = new JSONArray(); - JSONObject jSONObject; + /*String sql=" select top 1 id from ( SELECT TOP 2 * from NodeDefinition order by sequenceNumber DESC ) as a order by a.sequenceNumber ASC "; + String sql1="select w.nodeDefinition_id from WorkFlowApprovalTask w where w.id="+id; + ResultSet nodeDefinitionResult = objectDao.executeSql(sql); + ResultSet workFlowApprovalTaskResult = objectDao.executeSql(sql1); try { - while(result.next()){ - jSONObject = new JSONObject(); - jSONObject.put("userId", result.getLong("userId")); - jSONObject.put("fullName", result.getString("fullName")); - jSONArray.add(jSONObject); + long nodeDefinition_id1=0; + long nodeDefinition_id2=0; + + while(nodeDefinitionResult.next()){ + nodeDefinition_id1=nodeDefinitionResult.getLong("id"); } - if(jSONArray.size()==0){ - String select1=" select ur.USER_ID userId,u.fullName from SS_USER_ROLE ur ,SS_USERS u "; - String where1 =" where ur.ROLE_ID in (select w.roleId from WorkFlowApprovalTask w where w.id='"+id+"') and ur.USER_ID=u.id "; - ResultSet result1 = objectDao.executeSql(select1+where1); - String select2=" select ur.USER_ID userId,u.fullName from SS_USER_ROLE ur ,SS_USERS u "; - String where2 =" where ur.ROLE_ID in (select w.roleId from WorkFlowApprovalTask w where w.id='"+id+"') and ur.USER_ID=u.id "; - ResultSet result2 = objectDao.executeSql(select2+where2); - + while(workFlowApprovalTaskResult.next()){ + nodeDefinition_id2=nodeDefinitionResult.getLong("nodeDefinition_id"); + } + if(nodeDefinition_id1==nodeDefinition_id2&&nodeDefinition_id1!=0&&nodeDefinition_id2!=0){ + flag=true; + } + } catch (SQLException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + }*/ + JSONArray jSONArray = new JSONArray(); + ResultSet result1 = null,result2 = null; + if(flag==0){ + JSONObject jSONObject; + try { + //获取节点审批表的roleid 对应下的用户 + String select1=" select ur.USER_ID userId,u.fullName from SS_USER_ROLE ur ,SS_USERS u "; + String where1 =" where ur.ROLE_ID in (select na.roleId from NodeApproval na where na.nodeDefinition_ID= (select no.id from NodeDefinition no where no.sequenceNumber =( select n.sequenceNumber+1 from NodeDefinition n where n.id="+nodeDefinition_id+") and no.workFlow_id=( select n.workFlow_id from NodeDefinition n where n.id="+nodeDefinition_id+"))) and ur.USER_ID=u.id"; + result1 = objectDao.executeSql(select1+where1); + //获取节点审批表的useid 对应下的用户 + String select2=" select u.id,u.fullName from ss_users u "; + String where2 =" where u.id= (select na.userId from NodeApproval na where na.nodeDefinition_ID= (select no.id from NodeDefinition no where no.sequenceNumber =( select n.sequenceNumber+1 from NodeDefinition n where n.id="+nodeDefinition_id+") and no.workFlow_id=( select n.workFlow_id from NodeDefinition n where n.id="+nodeDefinition_id+"))) "; + result2 = objectDao.executeSql(select2+where2); + while(result1.next()){ jSONObject = new JSONObject(); + jSONObject.put("userId", result1.getLong("userId")); + jSONObject.put("fullName", result1.getString("fullName")); + jSONArray.add(jSONObject); + } + + while(result2.next()){ + jSONObject = new JSONObject(); + jSONObject.put("userId", result2.getLong("id")); + jSONObject.put("fullName", result2.getString("fullName")); + jSONArray.add(jSONObject); + } + } catch (SQLException e) { + e.printStackTrace(); + return null; + }finally { + DatabaseUtil.closeResultSetAndStatement(result1); + DatabaseUtil.closeResultSetAndStatement(result2); + } + /*String select=" select w.userId,u.fullName from WorkFlowApprovalTask w ,SS_USERS u "; + select+=" where u.id=w.userId and w.id="+id; + ResultSet result = objectDao.executeSql(select); + JSONObject jSONObject; + try { + while(result.next()){ + jSONObject = new JSONObject(); jSONObject.put("userId", result.getLong("userId")); jSONObject.put("fullName", result.getString("fullName")); jSONArray.add(jSONObject); } - while(result2.next()){ + if(jSONArray.size()==0){ + String select1=" select ur.USER_ID userId,u.fullName from SS_USER_ROLE ur ,SS_USERS u "; + String where1 =" where ur.ROLE_ID in (select w.roleId from WorkFlowApprovalTask w where w.id='"+id+"') and ur.USER_ID=u.id "; + ResultSet result1 = objectDao.executeSql(select1+where1); + String select2=" select ur.USER_ID userId,u.fullName from SS_USER_ROLE ur ,SS_USERS u "; + String where2 =" where ur.ROLE_ID in (select w.roleId from WorkFlowApprovalTask w where w.id='"+id+"') and ur.USER_ID=u.id "; + ResultSet result2 = objectDao.executeSql(select2+where2); + + while(result1.next()){ + jSONObject = new JSONObject(); + jSONObject.put("userId", result.getLong("userId")); + jSONObject.put("fullName", result.getString("fullName")); + jSONArray.add(jSONObject); + } + + while(result2.next()){ + jSONObject = new JSONObject(); + jSONObject.put("userId", result.getLong("userId")); + jSONObject.put("fullName", result.getString("fullName")); + jSONArray.add(jSONObject); + } + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + return null; + }finally { + DatabaseUtil.closeResultSetAndStatement(result); + }*/ + }else{ + String sql2="select u.id,u.fullName from ss_users u where u.name=(select i.applicantCode from InvoicePlan i where i.id= (select w.formId from WorkFlowApprovalTask w where w.id="+id+"))"; + ResultSet result = objectDao.executeSql(sql2); + JSONObject jSONObject; + try { + while(result.next()){ jSONObject = new JSONObject(); - jSONObject.put("userId", result.getLong("userId")); + jSONObject.put("userId", result.getLong("id")); jSONObject.put("fullName", result.getString("fullName")); jSONArray.add(jSONObject); } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } - } catch (SQLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return null; - }finally { - DatabaseUtil.closeResultSetAndStatement(result); } return jSONArray; } @@ -104,7 +298,6 @@ return null; } - } Index: ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTask.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTask.jsp (revision 0) +++ ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTask.jsp (revision 21859) @@ -0,0 +1,24 @@ +<%@page language="java" contentType="text/html; charset=UTF-8"%> +<%-- 引入JSP标签 --%> +<%@include file="/common/taglibs.jsp"%> +<%-- 引入ExtJs4.2.5框架 --%> +<%@include file="/common/include_ForgonGrid4.2.5_css.jsp"%> +<%@include file="/common/include_ForgonGrid4.2.5_Js.jsp"%> +<%@include file="/common/include_UseForgonGrid4_Js.jsp"%> + + + + <%-- 引入common.js --%> + + <%-- 引入语音插件 --%> + + <%-- 引入本身的js --%> + + + + 待办任务列表 + + + + + \ No newline at end of file Index: forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManager.java =================================================================== diff -u -r21790 -r21859 --- forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManager.java (.../WorkFlowApprovalTaskManager.java) (revision 21790) +++ forgon-core/src/main/java/com/forgon/workflow/service/WorkFlowApprovalTaskManager.java (.../WorkFlowApprovalTaskManager.java) (revision 21859) @@ -4,6 +4,8 @@ import net.sf.json.JSONArray; +import com.forgon.security.model.User; +import com.forgon.workflow.model.NodeDefinition; import com.forgon.workflow.model.WorkFlowApprovalTask; public interface WorkFlowApprovalTaskManager { @@ -18,5 +20,18 @@ public WorkFlowApprovalTask getWorkFlowApprovalTask(String id); - public JSONArray getAllUserByWorkFlowApprovalTaskId(String id); + public JSONArray getAllUserByWorkFlowApprovalTaskId(String id,String nodeDefinition_id); + + public User getUserByFormId(Long formId); + + public void rollbackWorkFlowApprovalTask( + WorkFlowApprovalTask workFlowApprovalTask, int approvalResult,String nodeDefinition_id, + NodeDefinition nodeDefinition1 + ); + + public void saveOrUpdateWorkFlowApprovalTask( + WorkFlowApprovalTask workFlowApprovalTask, + NodeDefinition nodeDefinition, NodeDefinition nodeDefinition1, + int approvalResult, String handleOpinion, long userID, + String formType, long formId); } Index: ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTaskView.js =================================================================== diff -u --- ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTaskView.js (revision 0) +++ ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTaskView.js (revision 21859) @@ -0,0 +1,183 @@ +var entityName = '待办任务'; +var grid; + +function rendererTransitionTime(value, metaData, record, rowIndex, colIndex, + store, view) { + if (value) { + return Ext4.Date.format(new Date(value.time), 'Y-m-d H:i:s'); + } else { + return ''; + } +} + +function loadFormDataAndUpdate(grid) { + var records = grid.getSelectionModel().selected.items;// extjs4.2.5版本选择多行写法 + if (records == null || records == "" || records == undefined + || records.length == 0) { + showResult("请选择要修改的记录!"); + return false; + } + if (records.length > 1) { + showResult("一次只能修改一条记录!"); + return false; + } + var id = records[0].data['id']; + var formId = records[0].data['formId']; + var nodeDefinition_id = records[0].data['nodeDefinition_id']; + var formType = records[0].data['formType']; + addAndEditWorkFlowApprovalTask(id,nodeDefinition_id,46,formType); +} + + + + +Ext4.onReady(function() { + var fields = [ { + name : 'id', + mapping : 'id' + }, { + name : 'formId', + mapping : 'formId' + }, { + name : 'formType', + mapping : 'formType' + }, { + name : 'title', + mapping : 'title' + }, { + name : 'nodeDefinition_id', + mapping : 'nodeDefinition_id' + }, { + name : 'taskName', + mapping : 'taskName' + }, { + name : 'createTaskTime', + mapping : 'createTaskTime' + }, { + name : 'roleId', + mapping : 'roleId' + } , { + name : 'roleName', + mapping : 'roleName' + } , { + name : 'userName', + mapping : 'userName' + } , { + name : 'userId', + mapping : 'userId' + }]; + + var columns = [ { + id : 'id', + name : 'id', + dataIndex : 'id', + hidden : true + },{ + id : 'nodeDefinition_id', + name : 'nodeDefinition_id', + dataIndex : 'nodeDefinition_id', + hidden : true + },{ + id : 'roleId', + name : 'roleId', + dataIndex : 'roleId', + hidden : true + },{ + id : 'userId', + name : 'userId', + dataIndex : 'userId', + hidden : true + },{ + header : "工单号", + dataIndex : 'formId', + width : 300, + minWidth : 300, + maxWidth : 300, + filterable : true, + filter : { + type : 'string' + } + },{ + header : "工单类型", + dataIndex : 'formType', + width : 300, + minWidth : 300, + maxWidth : 300, + filterable : true, + filter : { + type : 'string' + } + }, { + header : "标题", + dataIndex : 'title', + width : 150, + minWidth : 150, + maxWidth : 150, + filterable : true, + filter : { + type : 'string' + } + }, { + header : "待处理角色", + dataIndex : 'roleName', + width : 150, + minWidth : 150, + filterable : true, + filter : { + type : 'string' + } + }, { + header : "待处理用户", + dataIndex : 'userName', + width : 150, + minWidth : 150, + filterable : true, + filter : { + type : 'string' + } + }, { + header : "任务名称", + dataIndex : 'taskName', + width : 150, + minWidth : 150, + filterable : true, + filter : { + type : 'string' + } + }, { + header : "任务生成时间", + dataIndex : 'createTaskTime', + width : 150, + minWidth : 150, + filterable : true, + filter : { + type : 'date' + }, + renderer : rendererTransitionTime + } ]; + + grid = Ext4.create('ExtJs.forgon4.Grid', { + title : entityName, + dataUrl : WWWROOT+ '/disinfectSystem/workFlowApprovalTaskAction!loadWorkFlowApprovalTaskList.do', + fields : fields, + columns : columns, + sorters : { + property : 'createTaskTime', + direction : 'DESC' + }, + extraParams : {}, // 如果你要自定义参数,这里一定要先给一个空的对象,要不然会报空异常 + showRightClick : false, + tbar : [{ + text : '审批', + iconCls : 'btn_ext_application_edit', + handler : function() { + loadFormDataAndUpdate(grid); + } + }] + }); + + var viewport = Ext4.create('Ext4.Viewport', { + layout : 'fit', + items : grid + }); +}); Index: forgon-core/src/main/java/com/forgon/workflow/action/WorkFlowApprovalTaskAction.java =================================================================== diff -u -r21790 -r21859 --- forgon-core/src/main/java/com/forgon/workflow/action/WorkFlowApprovalTaskAction.java (.../WorkFlowApprovalTaskAction.java) (revision 21790) +++ forgon-core/src/main/java/com/forgon/workflow/action/WorkFlowApprovalTaskAction.java (.../WorkFlowApprovalTaskAction.java) (revision 21859) @@ -13,6 +13,7 @@ import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.vo.LoginUserData; import com.forgon.entity.ExtJsEntity; +import com.forgon.security.model.User; import com.forgon.security.service.UserManager; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; @@ -42,42 +43,24 @@ private WorkFlowApprovalTaskManager workFlowApprovalTaskManager; - private UserManager userManager; + /** + * 回退 + * 1、修改工单状态 + * 2、修改当前节点的待办任务 + * 3、新增上一个节点的待办任务 + */ public void rollbackWorkFlowApprovalTask(){ - LoginUserData userData= AcegiHelper.getLoginUser(); + if(workFlowApprovalTask!=null){ + //工号 + //String nameCode=StrutsParamUtils.getPraramValue("nameCode", ""); int approvalResult=Integer.parseInt(StrutsParamUtils.getPraramValue("approvalResult", "")); - workFlowApprovalTask.setHandlerId(userData.getUserId()); - workFlowApprovalTask.setHandler(userData.getUserName()); - workFlowApprovalTask.setHandleTime(new Date()); - workFlowApprovalTask.setStatus(0); - workFlowApprovalTask.setApprovalResult(approvalResult); - workFlowApprovalTaskManager.saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask); - String nodeDefinition_id=StrutsParamUtils.getPraramValue("nodeDefinition_id", ""); - //获取下一个节点 + //获取上一个节点 NodeDefinition nodeDefinition1=workFlowManager.getLastNodeDefinitionById(nodeDefinition_id); - WorkFlowApprovalTask workFlowApprovalTask1=new WorkFlowApprovalTask(); - - if(nodeDefinition1!=null){ //有下一个节点 - //获取上一个节点的待审批任务 - WorkFlowApprovalTask workFlowApprovalTask2 = workFlowApprovalTaskManager.getWorkFlowApprovalTaskByRollBack(nodeDefinition_id,workFlowApprovalTask.getFormId()); - - workFlowApprovalTask1.setTaskName(nodeDefinition1.getName()); - workFlowApprovalTask1.setNodeDefinition(nodeDefinition1); - workFlowApprovalTask1.setFormId(workFlowApprovalTask2.getFormId()); - workFlowApprovalTask1.setFormType(workFlowApprovalTask2.getFormType()); - workFlowApprovalTask1.setTitle(workFlowApprovalTask2.getFormId()+workFlowApprovalTask2.getFormType()); - workFlowApprovalTask1.setCreateTaskTime(new Date()); - workFlowApprovalTask1.setUserId(workFlowApprovalTask2.getUserId()); - workFlowApprovalTask1.setApprovalResult(-1); - workFlowApprovalTask1.setStatus(1); - workFlowApprovalTaskManager.saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask1); - } - - + workFlowApprovalTaskManager.rollbackWorkFlowApprovalTask(workFlowApprovalTask,approvalResult,nodeDefinition_id,nodeDefinition1); StrutsResponseUtils.output(true, "保存成功"); } } @@ -90,12 +73,12 @@ LoginUserData userData= AcegiHelper.getLoginUser(); Long userId= userData.getUserId(); - //2、获取当前用户对应的待办任务 + //2、获取当前用户对应的待办任务 :与userid匹配;当前用户所在role与roleid匹配 StringBuilder select=new StringBuilder(); select.append("select w.id,w.formId,w.formType,w.title,w.createTaskTime,w.taskName,w.handlerId,w.handler,w.handleTime,w.nodeDefinition_id,w.status,w.handleOpinion,w.roleId,w.userId,u.fullName userName,r.descn roleName"); select.append(" from WorkFlowApprovalTask w left join SS_USERS u on w.userId=u.id left join SS_ROLES r on r.id=w.roleId"); //2.1状态为未处理 2.2当前用户存在于userid 或者 记录存储的角色id存在于当前用户对应角色列表 - String where = " where 1=1 and w.status =1 and ( w.userId = "+userId+" or w.roleId in ( select s.ROLE_ID from SS_USER_ROLE s where s.USER_ID="+userId+" ))"; + String where = " where 1=1 and w.status =0 and ( w.userId = "+userId+" or w.roleId in ( select s.ROLE_ID from SS_USER_ROLE s where s.USER_ID="+userId+" ))"; ExtJsEntity entity = ExtJsUtil.buildSQLEntity(select.toString(), where, ""); JSONObject result = extGridUtils.getPagedResult(entity); StrutsResponseUtils.output(result); @@ -127,12 +110,11 @@ JSONObject result = extGridUtils.getPagedResult(entity); StrutsResponseUtils.output(result);*/ - String id = StrutsParamUtils.getPraramValue("id", "");//获取单号id - JSONArray jSONArray = workFlowApprovalTaskManager.getAllUserByWorkFlowApprovalTaskId(id); + String nodeDefinition_id = StrutsParamUtils.getPraramValue("nodeDefinition_id", ""); + JSONArray jSONArray = workFlowApprovalTaskManager.getAllUserByWorkFlowApprovalTaskId(id,nodeDefinition_id); StrutsResponseUtils.output(jSONArray); - //select w.userId from WorkFlowApprovalTask w where w.id=1 //空的话,则执行以下查询 /*select ur.USER_ID roleUserId,u.fullName from SS_USER_ROLE ur ,SS_USERS u where ur.ROLE_ID in (select w.roleId from WorkFlowApprovalTask w where w.id=1) and ur.USER_ID=u.id @@ -164,23 +146,6 @@ } /** - * 获取当前申请单下一个的节点 - * 获取当前申请单的节点的序号,+1 --判断是否已经结束 - */ - public void loadNextNodeDefinitionById(){ - String nodeDefinitionId = StrutsParamUtils.getPraramValue("nodeDefinitionId", "");//获取单号id - String select="select allowDisagree,allowRollback from NodeDefinition "; - String where=" where id=" + nodeDefinitionId; - ExtJsEntity entity = ExtJsUtil.buildSQLEntity(select.toString(), where, ""); - JSONObject result = extGridUtils.getPagedResult(entity); - StrutsResponseUtils.output(result); - } - - public void loadNextNodeDefinitionIdById(){ - - } - - /** * 获取当前申请单待处理的节点 * 此节点是否为最后一个节点,若是,则提供给前端一个标志,给申请单者点击提交 */ @@ -194,7 +159,7 @@ } /** - * 查看审批记录:除了废弃和未处理,其他都显示 + * 查看审批记录 */ public void loadWorkFlowApprovalTaskRecordList(){ String formId = StrutsParamUtils.getPraramValue("formId", "");//获取单号id @@ -203,14 +168,31 @@ select.append("select w.id,w.formId,w.formType,w.approvalResult,w.title,w.createTaskTime,w.taskName,w.handlerId,w.handler,w.handleTime,w.status,w.handleOpinion,w.roleId,w.userId,u.fullName userName,r.descn roleName"); select.append(" from WorkFlowApprovalTask w left join SS_USERS u on w.userId=u.id left join SS_ROLES r on r.id=w.roleId"); - String where = " where 1=1 and w.status =0"; - if(!"".equals(formId)) - where+=" and w.formId= "+formId ; + String where = " where 1=1 "; + if(!StringUtils.isBlank(formId)) + where+=" and w.formId= "+formId; + /* if(!"".equals(formId)) + where+=" and w.formId= "+formId ;*/ ExtJsEntity entity = ExtJsUtil.buildSQLEntity(select.toString(), where, ""); JSONObject result = extGridUtils.getPagedResult(entity); StrutsResponseUtils.output(result); } + public String getUser(){ + try { + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + org.json.JSONObject jsonObject = new org.json.JSONObject(); + jsonObject.put("success", true); + jsonObject.put("data", ""); + + String jsonString = jsonObject.toString(); + StrutsParamUtils.getResponse().getWriter().println(jsonString); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + /** * 审核不通过 */ @@ -221,7 +203,7 @@ workFlowApprovalTask.setHandlerId(userData.getUserId()); workFlowApprovalTask.setHandler(userData.getUserName()); workFlowApprovalTask.setHandleTime(new Date()); - workFlowApprovalTask.setStatus(0); + workFlowApprovalTask.setStatus(1); workFlowApprovalTask.setApprovalResult(approvalResult); workFlowApprovalTaskManager.saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask); StrutsResponseUtils.output(true, "保存成功"); @@ -232,7 +214,6 @@ * 审核通过 */ public void saveOrUpdateWorkFlowApprovalTask(){ - LoginUserData userData= AcegiHelper.getLoginUser(); //当前节点 String nodeDefinition_id=StrutsParamUtils.getPraramValue("nodeDefinition_id", ""); //获取待处理角色 待处理用户,分别生成相应的待办任务:1先修改档期内待办任务 2再增加一条待办任务 @@ -242,37 +223,15 @@ String handleOpinion = StrutsParamUtils.getPraramValue("handleOpinion", ""); NodeDefinition nodeDefinition=workFlowManager.getNodeDefinition(nodeDefinition_id); - workFlowApprovalTask.setNodeDefinition(nodeDefinition); - workFlowApprovalTask.setHandlerId(userData.getUserId()); - workFlowApprovalTask.setHandler(userData.getUserName()); - workFlowApprovalTask.setHandleTime(new Date()); - workFlowApprovalTask.setHandleOpinion(handleOpinion); - workFlowApprovalTask.setApprovalResult(approvalResult); - workFlowApprovalTask.setStatus(0); - workFlowApprovalTaskManager.saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask); - - - WorkFlowApprovalTask workFlowApprovalTask1=new WorkFlowApprovalTask(); - long userId=0; - if(!"".equals(StrutsParamUtils.getPraramValue("userId", ""))) - userId=Long.parseLong(StrutsParamUtils.getPraramValue("userId", "")); - String formType = StrutsParamUtils.getPraramValue("formType", ""); - long formId=Long.parseLong(StrutsParamUtils.getPraramValue("formId", "")); - //获取下一个节点 NodeDefinition nodeDefinition1=workFlowManager.getNextNodeDefinitionById(nodeDefinition_id); - if(nodeDefinition1!=null){ //有下一个节点 - workFlowApprovalTask1.setTaskName(nodeDefinition1.getName()); - workFlowApprovalTask1.setNodeDefinition(nodeDefinition1); - workFlowApprovalTask1.setFormId(formId); - workFlowApprovalTask1.setFormType(formType); - workFlowApprovalTask1.setTitle(formId+formType); - workFlowApprovalTask1.setCreateTaskTime(new Date()); - workFlowApprovalTask1.setUserId(userId); - workFlowApprovalTask1.setApprovalResult(-1); - workFlowApprovalTask1.setStatus(1); - workFlowApprovalTaskManager.saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask1); - } + long userID=0; + if(!"".equals(StrutsParamUtils.getPraramValue("userID", ""))) + userID=Long.parseLong(StrutsParamUtils.getPraramValue("userID", "")); + String formType = StrutsParamUtils.getPraramValue("formType", ""); + long formId=Long.parseLong(StrutsParamUtils.getPraramValue("formId", "")); + workFlowApprovalTaskManager.saveOrUpdateWorkFlowApprovalTask(workFlowApprovalTask,nodeDefinition,nodeDefinition1, + approvalResult,handleOpinion,userID,formType,formId); StrutsResponseUtils.output(true, "保存成功"); } } @@ -294,9 +253,6 @@ this.workFlowApprovalTaskManager = workFlowApprovalTaskManager; } - public void setUserManager(UserManager userManager) { - this.userManager = userManager; - } @Override public void prepare() throws Exception { Index: ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTaskForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTaskForm.js (revision 0) +++ ssts-web/src/main/webapp/systemmanage/workFlow/workFlowApprovalTaskForm.js (revision 21859) @@ -0,0 +1,493 @@ +var approvalFormObj; +var approvalWindowObj; +var formObj1; +var windowObj1; +var formObj2; +var windowObj2; +var formObj4; +var windowObj4; + +function rendererTransitionTime(value, metaData, record, rowIndex, colIndex, + store, view) { + if (value) { + return Ext4.Date.format(new Date(value.time), 'Y-m-d H:i:s'); + } else { + return ''; + } +} +function addAndEditWorkFlowApprovalTask(id, nodeDefinition_id,formId,formType) { + var aStore=null; + Ext4.Ajax.request({ + async:false, + //scope:this, + url : WWWROOT + '/disinfectSystem/workFlowApprovalTaskAction!loadNodeDefinitionById.do', + params : {nodeDefinitionId : nodeDefinition_id}, + success : function(response, options) { + var result = Ext4.decode(response.responseText, true); // 此处返回的有可能不是json字符串,因为注销之后,会被acegi拦截,返回html + if(result && result.total > 0){ + aStore=result.rows; + } + } + }); + allowStore=new Ext4.data.JsonStore({ + data:aStore, + fields : [ {name:'allowDisagree', type: 'boolean'}, {name:'allowRollback', type:'boolean'} ], + //scope:this, + autoLoad:true + }); + + var workFlowApprovalTaskStore = Ext4.create('Ext.data.Store',{ + fields : [ "id", 'taskName','handlerId','status','approvalResult','handleOpinion' ], + autoLoad : true, + proxy : { + type : 'ajax', + extraParams : {id:id}, + url : WWWROOT + + '/disinfectSystem/workFlowApprovalTaskAction!getWorkFlowApprovalTask.do', + reader : { + root : "rows" + } + } + }); + + var formIframe = Ext4.create('Ext.Component',{ + html : '', + height : 450 + }); + + + function callbackFlag(){ + var sub = document.getElementById("formIframe").contentWindow; + if(!sub) return false; + return sub.submitSaveExpensiveGoodsApplication(); + }; + + //绑定该有的值到formObj1中 + function saveHandleOpinion(){ + //获取提交按钮,模仿点击 + /* var a0 =sub.document.getElementById("saveBtn").click();//onclick() + alert(a0);//不能同步 +*/ //函数 submitSaveExpensiveGoodsApplication + var a0=false; + a0=callbackFlag(); + alert(a0); + + /*Ext4.Ajax.request({ + async:false, + url : WWWROOT + '/disinfectSystem/workFlowApprovalTaskAction!getUser.do', + success : function(response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + formObj1.getForm().submit({ + clientValidation : true, + url : WWWROOT + '/disinfectSystem/workFlowApprovalTaskAction!saveOrUpdateWorkFlowApprovalTask.do', + success : function(form, action) { + if (action.result.message) { + showResult(action.result.message); + } + grid.reloadData(); + windowObj1.close(); + approvalWindowObj.close(); + }, + failure : function(form, action) { + if (action.result.message) { + showResult(action.result.message); + } else { + showResult("审批失败"); + } + } + }); + } else { + showResult('失败!'); + } + }, + failure : function(response, options) { + showResult('对不起!服务器正忙,删除失败'); + } + });*/ + } + + function updateHandleOpinion(){ + formObj2.getForm().submit({ + clientValidation : true, + url : WWWROOT + '/disinfectSystem/workFlowApprovalTaskAction!failWorkFlowApprovalTask.do', + success : function(form, action) { + if (action.result.message) { + showResult(action.result.message); + } + grid.reloadData(); + windowObj2.close(); + approvalWindowObj.close(); + }, + failure : function(form, action) { + if (action.result.message) { + showResult(action.result.message); + } else { + showResult("审批失败"); + } + } + }); + } + + function rollBackHandleOpinion(){ + formObj4.getForm().submit({ + clientValidation : true, + url : WWWROOT + '/disinfectSystem/workFlowApprovalTaskAction!rollbackWorkFlowApprovalTask.do', + success : function(form, action) { + if (action.result.message) { + showResult(action.result.message); + } + grid.reloadData(); + windowObj4.close(); + approvalWindowObj.close(); + }, + failure : function(form, action) { + if (action.result.message) { + showResult(action.result.message); + } else { + showResult("审批失败"); + } + } + }); + } + + function Fail(){ + formObj2= Ext4.create('Ext4.form.Panel', { + layout : 'column', + frame : true, + border : 0, + labelSeparator : ': ', + bodyPadding : '5 5 0', + autoScroll : true, + buttonAlign : 'center', + buttons : [ { + id : 'save', + name : 'save', + text : '保存', + handler : function() { + updateHandleOpinion(); + } + }, { + text : '取消', + handler : function() { + windowObj2.close(); + } + } ], + fieldDefaults : { + labelAlign : 'right', + labelWidth : 100 + }, + renderTo: document.body, + items: [ + { + xtype: 'hiddenfield', + name: 'id', + value: id + },{ + xtype: 'hiddenfield', + name: 'nodeDefinition_id', + value: nodeDefinition_id + }, { + xtype: 'hiddenfield', + name: 'approvalResult', + value: 0 + }, { + xtype: 'hiddenfield', + name: 'formType', + value: formType + }, { + xtype: 'hiddenfield', + name: 'formId', + value: formId + }, + { + xtype : 'textfield', + border : 0, + fieldLabel : '任务名称', + name : "taskName", + id : "taskName", + value : workFlowApprovalTaskStore.getAt(0).get('taskName'), + readOnly : true, + flex: 1 + }, + { + xtype : 'textareafield', + border: 0, + fieldLabel : '处理意见', + name : "handleOpinion", + id : "handleOpinion", + flex: 1 + }] + }); + + windowObj2 = Ext4.create('Ext4.window.Window', { + layout : 'fit', + title : '处理待办任务信息', + width : 320, + height : 280, + resizable : false, + modal : true, + border : false, + plain : true, + items : formObj2 + }); + windowObj2.show(); + } + + function Pass(){ + var taskUserStore = Ext4.create('Ext.data.Store',{ + fields : [ 'fullName', 'userId' ], + autoLoad : true, + proxy : { + type : 'ajax', + extraParams : {id:id,nodeDefinition_id:nodeDefinition_id}, + url : WWWROOT+ '/disinfectSystem/workFlowApprovalTaskAction!getAllUserByWorkFlowApprovalTaskId.do', + reader : { + root : "rows" + } + } + }); + formObj1= Ext4.create('Ext4.form.Panel', { + layout : 'column', + frame : true, + border : 0, + labelSeparator : ': ', + bodyPadding : '5 5 0', + autoScroll : true, + buttonAlign : 'center', + buttons : [ { + id : 'save', + name : 'save', + text : '保存', + handler : function() { + saveHandleOpinion(); + } + }, { + text : '取消', + handler : function() { + windowObj1.close(); + } + } ], + fieldDefaults : { + labelAlign : 'right', + labelWidth : 100 + }, + renderTo: document.body, + items: [ + { + xtype: 'hiddenfield', + name: 'id', + value: id + },{ + xtype: 'hiddenfield', + name: 'nodeDefinition_id', + value: nodeDefinition_id + }, { + xtype: 'hiddenfield', + name: 'approvalResult', + value: 1 + }, { + xtype: 'hiddenfield', + name: 'formType', + value: formType + }, { + xtype: 'hiddenfield', + name: 'formId', + value: formId + }, + { + xtype : 'textfield', + border : 0, + fieldLabel : '任务名称', + name : "taskName", + id : "taskName", + value : workFlowApprovalTaskStore.getAt(0).get('taskName'), + readOnly : true, + flex: 1 + }, + { + xtype : 'textareafield', + border: 0, + fieldLabel : '处理意见', + name : "handleOpinion", + id : "handleOpinion", + flex: 1 + },{ + xtype : 'combo', + fieldLabel: '下一个执行人', + displayField: 'fullName', + valueField : 'userId', + labelWidth: 120, + store: taskUserStore, + queryMode: 'local', + name : "userID", //name属性适合form submit() + typeAhead: true, + hidden:taskUserStore.getCount()==0?true:false + }] + }); + + windowObj1 = Ext4.create('Ext4.window.Window', { + id:'passObj', + layout : 'fit', + title : '处理待办任务信息', + width : 320, + height : 280, + resizable : false, + modal : true, + border : false, + plain : true, + items : formObj1 + }); + windowObj1.show(); + } + function RollBack(){ + formObj4= Ext4.create('Ext4.form.Panel', { + layout : 'column', + frame : true, + border : 0, + labelSeparator : ': ', + bodyPadding : '5 5 0', + autoScroll : true, + buttonAlign : 'center', + buttons : [ { + id : 'save', + name : 'save', + text : '保存', + handler : function() { + rollBackHandleOpinion(); + } + }, { + text : '取消', + handler : function() { + windowObj4.close(); + } + } ], + fieldDefaults : { + labelAlign : 'right', + labelWidth : 100 + }, + renderTo: document.body, + items: [ + { + xtype: 'hiddenfield', + name: 'id', + value: id + },{ + xtype: 'hiddenfield', + name: 'nodeDefinition_id', + value: nodeDefinition_id + }, { + xtype: 'hiddenfield', + name: 'approvalResult', + value: 0 + }, { + xtype: 'hiddenfield', + name: 'formType', + value: formType + }, { + xtype: 'hiddenfield', + name: 'formId', + value: formId + }, + { + xtype : 'textfield', + border : 0, + fieldLabel : '任务名称', + name : "taskName", + id : "taskName", + value : workFlowApprovalTaskStore.getAt(0).get('taskName'), + readOnly : true, + flex: 1 + }, + { + xtype : 'textareafield', + border: 0, + fieldLabel : '处理意见', + name : "handleOpinion", + id : "handleOpinion", + flex: 1 + }] + }); + + windowObj4 = Ext4.create('Ext4.window.Window', { + layout : 'fit', + title : '处理回滚信息', + width : 320, + height : 280, + resizable : false, + modal : true, + border : false, + plain : true, + items : formObj4 + }); + windowObj4.show(); + } + + approvalFormObj = Ext4.create('Ext4.form.Panel', { + layout : 'vbox', + frame : true, + border : 0, + labelSeparator : ': ', + bodyPadding : '5 5 0', + autoScroll : true, + buttonAlign : 'center', + buttons : [{ + text : '审核通过', + iconCls : 'btn_ext_application_edit', + handler : function() { + Pass(); + } + },{ + text : '审核不通过', + iconCls : 'btn_ext_application_edit', + hidden: allowStore.getAt(0).get('allowDisagree')?true:false, + handler : function() { + Fail(); + } + }, { + text : '回退', + iconCls : 'btn_ext_application_edit', + hidden:allowStore.getAt(0).get('allowRollback')?true:false, + handler : function() { + RollBack(); + } + }, { + text : '查看审批记录', + iconCls : 'btn_ext_application_edit', + handler : function() { + ApprovalRecord(formId); + } + }, { + text : '取消', + handler : function() { + approvalWindowObj.close(); + } + } ], + fieldDefaults : { + labelAlign : 'right', + labelWidth : 80 + }, + items : [ { + xtype : 'container', + flex : 1, + width : '100%', + layout : 'fit', + items : formIframe + }] + }); + + approvalWindowObj = Ext4.create('Ext4.window.Window', { + id:'approvalWindowObj', + layout : 'fit', + title : '审批信息', + width : 1000, + height : 500, + resizable : false, + modal : true, + border : false, + plain : true, + items : approvalFormObj + }); + approvalWindowObj.show(); + +} \ No newline at end of file