apzl_leasing/WebContent/Common/WorkFlow/FlowSubmitDialog.jsp
2020-08-20 15:01:45 +08:00

376 lines
14 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;
//获取信审意见 只要有一个意见为拒绝的,就不允许直接结束
String choice="";
if ("BusinessApplyFlow".equals(flowNo)&&("0040".equals(phaseNo)||"0050".equals(phaseNo))){
choice = Sqlca.getString("select CONCAT(IFNULL(v.FIRSTCHOICE,','),',',IFNULL(v.SECONDCHOICE,','),',',IFNULL(v.THIRDCHOICE,',')) choice" +
" from VI_PROJECTINFO_BUSINESS v, flow_task t where t.serialno='"+taskNo+"' and v.FLOWUNID=t.objectno");
if (choice.contains("0010")){
choice="审批意见为拒绝,流程不允许直接结束!";
}else{
choice="";
}
}
//会签历史纪录阶段号问题
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(routeJson.route[0].phaseNo);
}
//并行路由初始化
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();
}
if(flowNo=="ProjectCreditFlow"||flowNo=="ProjectRecreditFlow"||flowNo=="Mortgage2FileFlow"||flowNo=="ContractOnhireFlow"||flowNo=="AdjustInterestFlow"){
if(phase!="0010"){
actionSet.hide();
}
}else{
actionSet.hide();
}*/
if(vUser.length==1){
actionSet.hide();
}
}
}else{
actionSet.html("");
}
}
initReaderList(tempphaseno);
}
//初始化传阅人员
function initReaderList(tempphaseno){
var actionSet = $("#actionreadset");
if(actionSet.html().length<=2||"BusinessApplyFlow"=='<%=flowNo%>'){
var actionList=routeJson.readUser;
var phaseNo=routeJson.route[0].phaseNo;
if("BusinessApplyFlow"=='<%=flowNo%>'&&"1000"!=tempphaseno&&"8000"!=tempphaseno){
actionList = "";
$("#chuanyue").remove();
$("#phaseactionReader").remove();
return;
}
if(actionList.length>0){
actionSet.empty().show();
actionSet.append("<div id='chuanyue' 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);
if(nodeType==null||nodeType==""){
alert("请先选择下一步处理人员!");
return ;
}
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 flowNo = "<%=flowNo%>";
var phaseNo= "<%=phaseNo%>";//phaseOpinion 8000是否决 1000是结束
var choice= "<%=choice%>";
//alert(flowNo+','+phaseNo+','+phaseOpinion);
if ("BusinessApplyFlow"==flowNo&&("0040"==phaseNo||"0050"==phaseNo)){
if(choice!=""&&phaseOpinion=="1000"){
alert(choice);
return;
}
}
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"%>