338 lines
12 KiB
Plaintext
338 lines
12 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.getRouteInfo();
|
|
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();
|
|
if($("input:radio[value='1000']"))$("input:radio[value='1000']").attr("checked",true);
|
|
});
|
|
function initRouteInfo(){
|
|
//一般路由和条件路由初始化
|
|
if(routeJson.routeType=="commroute"||routeJson.routeType=="conditionroute"){
|
|
var phaseNo=routeJson.route[0].phaseNo;
|
|
var phaseName=routeJson.route[0].phaseName;
|
|
var stepInfo=$("#stepInfo");
|
|
stepInfo.html("<a class='opinion-style2' href='javascript:void(0)' ><label><input type='radio' checked name='phaseopinion' value='" +phaseNo+ "' >" + phaseName+ "</input></label></a>");
|
|
var actionSet = $("#actionset");
|
|
actionSet.empty().show();
|
|
initFlowUserInfo(phaseNo,0);
|
|
}
|
|
//决策路由初始化
|
|
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-style2' href='javascript:void(0)' onclick='initFlowUserInfo(\""+phaseNo+"\","+i+")' ><label><input type='radio' name='phaseopinion' value='" +phaseNo+ "' >" + phaseName+ "</input></label></a>");
|
|
}
|
|
if(routeJson.route.length==1){
|
|
$("input[name='phaseopinion']:first").attr("checked",true);
|
|
var actionSet = $("#actionset");
|
|
actionSet.empty().show();
|
|
initFlowUserInfo(routeJson.route[0].phaseNo,0);
|
|
}
|
|
initReaderList();
|
|
}
|
|
//并行路由初始化
|
|
if(routeJson.routeType=="parallelroute"){
|
|
var actionSet = $("#actionset");
|
|
actionSet.empty().show();
|
|
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-style2' href='javascript:void(0)' onclick='initFlowUserInfo("+phaseNo+","+i+")' ><label><input type='checkbox' disabled='true' checked name='phaseopinion' value='" +phaseNo+ "' >" + phaseName+ "</input></label></a>");
|
|
initFlowUserInfo(phaseNo,i);
|
|
}
|
|
}
|
|
}
|
|
//初始化路由下面的用户
|
|
function initFlowUserInfo(tempphaseno,cindex){
|
|
cindex=cindex||0;
|
|
var actionSet = $("#actionset");
|
|
var content=$("#phaseaction"+cindex).html()||"";
|
|
if(content.length>0){
|
|
return ;
|
|
}else{
|
|
|
|
//actionSet.html("");
|
|
}
|
|
if(routeJson.isLastUser=="Yes"){
|
|
var i=cindex
|
|
var phaseNo=routeJson.route[i].phaseNo;
|
|
var noteType=routeJson.route[i].nodeType;
|
|
var flowNo="<%=flowNo%>";
|
|
var phase="<%=phaseNo%>";
|
|
if(noteType!="END"){
|
|
if(noteType=="JOIN"){
|
|
if(routeJson.route[i].forkNumber>1){
|
|
return "";
|
|
}
|
|
}
|
|
if(tempphaseno==phaseNo){
|
|
var phaseName=routeJson.route[i].phaseName;
|
|
var userInfo=routeJson.route[i].userInfo;
|
|
var flowOperatorType=routeJson.route[i].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";}
|
|
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)' ><label><input type='"+type+"' name='phaseaction"+cindex+"' value='"+vUser[i]+"'>"+vUserinfo[1]+"</input></label></a>");
|
|
}
|
|
if(vUser.length==1&&type=="radio"){
|
|
$("input[name=phaseaction"+cindex+"]:first").attr("checked",true);
|
|
}
|
|
if((phase=="0010"&&flowNo=="FundPaymentCarFlow")||((phase=="0020"||phase=="0010")&&flowNo=="BusinessApplyFlow")){
|
|
actionSet.hide();
|
|
}
|
|
}
|
|
}else{
|
|
actionSet.html("");
|
|
}
|
|
|
|
}
|
|
initReaderList();
|
|
}
|
|
//初始化传阅人员
|
|
function initReaderList(){
|
|
var actionSet = $("#actionreadset");
|
|
if(actionSet.html().length<=2){
|
|
var actionList=routeJson.readUser;
|
|
var phaseNo=routeJson.route[0].phaseNo;
|
|
if("BusinessApplyFlow"=='<%=flowNo%>'&&"1000"!=phaseNo){
|
|
actionList = "";
|
|
return;
|
|
}
|
|
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)' ><label><input type='"+type+"' name='phaseactionReader' checked value='"+vUserinfo[0]+"'>"+vUserinfo[1]+"</input></label></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 nodeType=getNextPhaseNodeType(phaseOpinion);
|
|
var phaseAction=getFlowUser();
|
|
if(nodeType.indexOf("JOIN")>=0){
|
|
//并行合并判断是否选人
|
|
//一般流流程判断
|
|
var isLastUser= AsControl.RunJavaMethodTrans("com.amarsoft.app.flow.FlowAction", "getIsStepLastUser", "taskNo=<%=taskNo%>,FlowNo=<%=flowNo%>,phaseNo=<%=phaseNo%>,nextNodeType="+nodeType);
|
|
if(isLastUser=="Yes"){
|
|
if(routeJson.route[0].forkNumber>1){//如果提交时,当前已是最后一个人时则要重新加载人员选择
|
|
initFlowUserInfo(phaseOpinion,0)
|
|
}
|
|
if(phaseAction==""){alert("请选择下一步处理人员");return false;}
|
|
}
|
|
|
|
}else{
|
|
//一般流流程判断
|
|
var isLastUser= AsControl.RunJavaMethodTrans("com.amarsoft.app.flow.FlowAction", "getIsStepLastUser", "taskNo=<%=taskNo%>,FlowNo=<%=flowNo%>,phaseNo=<%=phaseNo%>,nextNodeType="+nodeType);
|
|
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()%>,nextNodeType="+nodeType);
|
|
parent.AsDialog.ClosePage(returnValue);
|
|
}
|
|
|
|
|
|
|
|
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;
|
|
}
|
|
return tempPhaseOpinion;
|
|
}
|
|
}
|
|
function getNextPhaseNodeType(phaseNodes){
|
|
var vPhaseNodes=phaseNodes.split(";");
|
|
var nodeTypes="";
|
|
for(var i=0;i<vPhaseNodes.length;i++){
|
|
for(var i=0;i<routeJson.route.length;i++){
|
|
var phaseNo=routeJson.route[i].phaseNo;
|
|
// if(phaseNo==vPhaseNodes[i]){
|
|
if(phaseNo==phaseNodes){
|
|
if(nodeTypes!=""){
|
|
nodeTypes=nodeTypes+";"
|
|
}
|
|
nodeTypes+=routeJson.route[i].nodeType;
|
|
}
|
|
}
|
|
}
|
|
return nodeTypes;
|
|
}
|
|
/*~[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"%>
|