254 lines
9.3 KiB
Plaintext
254 lines
9.3 KiB
Plaintext
<%@page import="com.amarsoft.are.jbo.ql.Parser"%>
|
|
<%@page import="com.amarsoft.biz.workflow.*"%>
|
|
<%@page import="com.amarsoft.app.flow.*"%>
|
|
<%@page import="com.tenwa.flow.task.*"%>
|
|
<%@page import="com.amarsoft.are.lang.StringX"%>
|
|
<%@page contentType="text/html; charset=GBK"%>
|
|
<%@include file="/Frame/resources/include/include_begin.jspf"%>
|
|
<%
|
|
String taskNo = CurPage.getParameter("TaskNo");
|
|
String applyType = CurPage.getParameter("applyType");
|
|
String phasename = CurPage.getParameter("phasename");
|
|
if(StringX.isSpace(taskNo)) taskNo = "";
|
|
if(StringX.isSpace(applyType)) applyType = "";
|
|
if(StringX.isSpace(phasename)) phasename = "";
|
|
String userID = CurUser.getUserID();
|
|
JBOTransaction tx = JBOFactory.createJBOTransaction();
|
|
TenwaFlowTask ft = new TenwaFlowTask(taskNo, tx);//使用jboTrans
|
|
String routeInfo=ft.getFlowChangeRouteInfo();
|
|
String flowNo = ft.FlowNo;
|
|
String phaseNo=ft.PhaseNo;
|
|
String flowState = ft.FlowState;
|
|
//会签历史纪录阶段号问题
|
|
tx.commit();
|
|
|
|
%>
|
|
<style>
|
|
.opinion-style{
|
|
width:100%;
|
|
overflow:hidden;
|
|
display:inline-block;
|
|
margin-bottom:2px;
|
|
outline:none;
|
|
}
|
|
.opinion-style2{
|
|
overflow:hidden;
|
|
display:inline-block;
|
|
margin-bottom:2px;
|
|
outline:none;
|
|
}
|
|
a.opinion-style:hover{
|
|
background-color:A8CAE5;
|
|
outline:none;
|
|
}
|
|
.opinion-focus{
|
|
background-color:A8CAE5;
|
|
}
|
|
</style>
|
|
<div>
|
|
<table>
|
|
<tr>
|
|
<td width="50%" align="right"><%=new Button("提交","确认提交","javascript:commitAction();","","btn_icon_Submit","").getHtmlText()%></td>
|
|
<td width="50%" align="center"><%=new Button("放弃","放弃提交","javascript:doCancel();","","btn_icon_delete","").getHtmlText()%></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div id="opinionset">
|
|
<div style="margin-top:10px;margin-left:15px;font-size:12px;">
|
|
<font color="#000000"><b>提交给:</b></font>
|
|
</div>
|
|
<div id="stepInfo" style="margin-top:10px;margin-left:10px;font-size:12px;border:1px solid lightgray;padding:10px;">
|
|
<%
|
|
|
|
%>
|
|
</div>
|
|
<div style="height:300px; overflow:auto">
|
|
<div id="actionset">
|
|
|
|
</div>
|
|
<div id="actionreadset">
|
|
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<table width="100%" align="center">
|
|
<tr>
|
|
<td align="center"><b><span id="phaseinfo" style="color: #FF0000" ></span></b></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<script type="text/javascript">
|
|
var strRouteJson='<%=routeInfo%>';
|
|
var routeJson= JSON.parse(strRouteJson);
|
|
var taskNo = "<%=taskNo%>";
|
|
var applyType = "<%=applyType%>";
|
|
var phasename = "<%=phasename%>";
|
|
var userID = "<%=userID%>";
|
|
$(function(){initRouteInfo();});
|
|
function initRouteInfo(){
|
|
//一般路由和条件路由初始化
|
|
//决策路由初始化
|
|
if(routeJson.routeType=="selectroute"){
|
|
var stepInfo=$("#stepInfo");
|
|
stepInfo.empty();
|
|
for(var i=0;i<routeJson.route.length;i++){
|
|
var phaseNo=routeJson.route[i].phaseNo;
|
|
var phaseName=routeJson.route[i].phaseName;
|
|
stepInfo.append("<a class='opinion-style' href='javascript:void(0)' onclick='initFlowUserInfo(\""+phaseName+"\",\""+phaseNo+"\","+i+")' ><input type='radio' name='phaseopinion' value='" +phaseNo+ "' >" + phaseName+ "</input></a><br>");
|
|
}
|
|
if(routeJson.route.length==1){
|
|
$("input[name='phaseopinion']:first").attr("checked",true);
|
|
var actionSet = $("#actionset");
|
|
actionSet.empty().show();
|
|
initFlowUserInfo(routeJson.route[0].phaseName,routeJson.route[0].phaseNo,0);
|
|
}
|
|
}
|
|
}
|
|
//初始化路由下面的用户
|
|
function initFlowUserInfo(phaseName,tempphaseno,cindex){
|
|
cindex=cindex||0;
|
|
var actionSet = $("#actionset");
|
|
var content=$("#phaseaction"+cindex).html()||"";
|
|
if(content.length>0){
|
|
return ;
|
|
}else{
|
|
actionSet.html("");
|
|
}
|
|
var param="TaskNo="+taskNo+",PhaseNo="+tempphaseno;
|
|
var nextRoutUser = AsControl.RunJavaMethodTrans("com.tenwa.flow.task.FlowRouteChangeController", "getNextPhaseUser",param);
|
|
|
|
|
|
var userInfo=nextRoutUser.userInfo;
|
|
var flowOperatorType=nextRoutUser.flowUserOperatorType;
|
|
var vUser=userInfo.split("@");
|
|
actionSet.append("<div style='margin-top:10px;margin-left:15px;font-size:12px;'><font color='#000000'><b>请选择["+phaseName+"]用户:</b></font></div><div id='phaseaction"+cindex+"' style='margin-top:10px;margin-left:10px;font-size:12px;border:1px solid lightgray;padding:5px;'></div>");
|
|
var phaseAction = $("#phaseaction"+cindex);
|
|
var type = "radio";
|
|
if(flowOperatorType!="01"){type="checkbox";}
|
|
if(userInfo.length>0){
|
|
for(var i=0;i<vUser.length;i++){
|
|
var vUserinfo=vUser[i].split(" ");
|
|
phaseAction.append("<a class='opinion-style' style='width:100' href='javascript:void(0)' ><input type='"+type+"' name='phaseaction"+cindex+"' value='"+vUser[i]+"'>"+vUserinfo[1]+"</input></a>");
|
|
}
|
|
if(vUser.length==1&&type=="radio"){
|
|
$("#phaseaction"+cindex+" input:first").attr("checked",true);
|
|
}
|
|
}else{
|
|
phaseAction.append("没有处理人员");
|
|
}
|
|
initReaderList(nextRoutUser.readUser);
|
|
|
|
}
|
|
//初始化传阅人员
|
|
function initReaderList(actionList){
|
|
var actionSet = $("#actionreadset");
|
|
if(actionSet.html().length<=2){
|
|
if(actionList.length>0){
|
|
actionSet.empty().show();
|
|
actionSet.append("<div style='margin-top:10px;margin-left:15px;font-size:12px;'><font color='#000000'><b>请选择传阅的用户:</b></font></div><div id='phaseactionReader' style='margin-top:10px;margin-left:10px;font-size:12px;border:1px solid lightgray;padding:5px;'></div>");
|
|
var phaseAction = $("#phaseactionReader");
|
|
var type="checkbox";
|
|
for(var j=0;j<actionList.split("@").length;j++){
|
|
var userIDStr = actionList.split("@")[j];
|
|
var vUserinfo=userIDStr.split(" ");
|
|
phaseAction.append("<a class='opinion-style' style='width:100' href='javascript:void(0)' ><input type='"+type+"' name='phaseactionReader' checked value='"+vUserinfo[0]+"'>"+vUserinfo[1]+"</input></a>");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function doCancel(){
|
|
if(confirm("您确定要放弃此次提交吗?")){
|
|
parent.AsDialog.ClosePage("_CANCEL_");
|
|
}
|
|
}
|
|
//提交动作
|
|
function commitAction(){
|
|
var isCommited = AsControl.RunJavaMethodTrans("com.amarsoft.app.flow.FlowAction", "isCommited", "TaskNo="+taskNo);
|
|
if(isCommited=='yes'){
|
|
alert("此流程任务已提交!");
|
|
return;
|
|
}
|
|
var phaseOpinion=getPhaseOpinion();
|
|
var phaseOpinionName = $("input[name='phaseopinion']:checked")[0].nextSibling.nodeValue;//选择的阶段名称
|
|
var phaseAction=getFlowUser();
|
|
var isLastUser= AsControl.RunJavaMethodTrans("com.amarsoft.app.flow.FlowAction", "getIsStepLastUser", "taskNo=<%=taskNo%>,FlowNo=<%=flowNo%>,phaseNo=<%=phaseNo%>");
|
|
if(isLastUser=="Yes"){
|
|
if(routeJson.isLastUser=="No"&&phaseAction==""){//如果提交时,当前已是最后一个人时则要重新加载人员选择
|
|
initFlowUserInfo(phaseOpinion,0)
|
|
}
|
|
if(phaseAction==""){alert("请选择下一步处理人员");return false;}
|
|
}
|
|
var readUserIds="";
|
|
var readUserId = [];
|
|
$("input[name='phaseactionReader']:checked").each(function(){readUserId.push($(this).val());});
|
|
readUserIds = readUserId.join("@");
|
|
var confirmStr="确认提交到下一步?";
|
|
if (!confirm(confirmStr)) return;
|
|
var returnValue = RunJavaMethodTrans("com.amarsoft.app.flow.FlowAction","submit","TaskNo="+taskNo+",PhaseOpinion="+phaseOpinion+",PhaseAction="+phaseAction+",readUserIds="+readUserIds+",userID=<%=CurUser.getUserID()%>");
|
|
parent.AsDialog.ClosePage(returnValue+'@'+phaseOpinionName);
|
|
}
|
|
|
|
function getPhaseOpinion(){
|
|
if(routeJson.routeType=="commroute"||routeJson.routeType=="conditionroute"){
|
|
return routeJson.route[0].phaseNo;
|
|
}
|
|
if(routeJson.routeType=="selectroute"){
|
|
return $("input[name='phaseopinion']:checked").val()||"";
|
|
}
|
|
if(routeJson.routeType=="parallelroute"){
|
|
var tempPhaseOpinion;
|
|
for(var i=0;i<routeJson.route.length;i++){
|
|
var phaseNo=routeJson.route[i].phaseNo;
|
|
if(tempPhaseOpinion!=""){
|
|
tempPhaseOpinion=tempPhaseOpinion+";"
|
|
}
|
|
tempPhaseOpinion+=phaseNo;
|
|
}
|
|
}
|
|
}
|
|
/*~[Describe=获取所选择的提交动作;InputParam=无;OutPutParam=无;]~*/
|
|
function getFlowUser(){
|
|
var flowUser="";
|
|
if(routeJson.routeType=="commroute"||routeJson.routeType=="conditionroute"||routeJson.routeType=="selectroute"){
|
|
var phaseNo= $("input[name='phaseopinion']:checked").val()||"";
|
|
for(var i=0;i<routeJson.route.length;i++){
|
|
if(routeJson.route[i].phaseNo==phaseNo){
|
|
var flowOperatorType=routeJson.route[i].flowUserOperatorType;
|
|
if(routeJson.route[i].nodeType=="END"){
|
|
flowUser="system";
|
|
}else{
|
|
flowUser=getFlowUserByIndex(flowOperatorType,i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(routeJson.routeType=="parallelroute"){
|
|
for(var i=0;i<routeJson.route.length;i++){
|
|
var flowOperatorType=routeJson.route[i].flowUserOperatorType;
|
|
if(i>0){flowUser+="@";}
|
|
flowUser+=routeJson.route[i].phaseNo+"|"+getFlowUserByIndex(flowOperatorType,i);
|
|
}
|
|
}
|
|
return flowUser;
|
|
}
|
|
function getFlowUserByIndex(flowOperatorType,cindex){
|
|
var flowUser="";
|
|
if(flowOperatorType=="01"){
|
|
flowUser=$("input[name='phaseaction"+cindex+"']:checked").val()||"";
|
|
}else{
|
|
var vflowUser =[];
|
|
$("input[name='phaseaction"+cindex+"']:checked").each(function(){
|
|
vflowUser.push($(this).val());
|
|
});
|
|
for(var i=0;i<vflowUser.length;i++){
|
|
if(i>0){flowUser+="@";}
|
|
flowUser+=vflowUser[i];
|
|
}
|
|
}
|
|
return flowUser;
|
|
}
|
|
</script>
|
|
<%@include file="/Frame/resources/include/include_end.jspf"%>
|