apzl_leasing/WebContent/Common/WorkFlow/FlowSubmitDialog.jsp

415 lines
15 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@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)||"0060".equals(phaseNo))){
if("0040".equals(phaseNo)||"0050".equals(phaseNo)){
choice = Sqlca.getString("select CONCAT(IFNULL(v.FIRSTCHOICE,','),',',IFNULL(v.SECONDCHOICE,',')) choice" +
" from VI_PROJECTINFO_BUSINESS v, flow_task t where t.serialno='"+taskNo+"' and v.FLOWUNID=t.objectno");
}
if("0060".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");
}
System.out.println(choice);
// if (choice.contains("0010")){
// choice="审批意见为拒绝,流程不允许直接结束!";
// }else{
// choice="";
// }
String[] arr=choice.split(",");
HashSet<String> sets=new HashSet<String>();
for (int i = 0; i <arr.length ; i++) {
sets.add(arr[i]);
}
if (choice.contains("0010")&&!choice.contains("0020")){//拒绝
choice="1";//="审批意见为拒绝,流程不允许直接结束!";
}
if(sets.size()>1){//有拒绝 有同意 意见不一致
choice="2";//"意见不一致流程不能结束,须退回!";
}
if (sets.contains("0040")){
choice="3";//="审批意见为退回经销商SP流程不允许直接结束";
}
System.out.println(flowNo+","+taskNo+","+choice+","+arr+","+sets);
}
//会签历史纪录阶段号问题
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||"0060"==phaseNo)){
if(choice=="1"&&phaseOpinion=="1000"){
alert("审批意见为拒绝,流程不允许直接结束!");
return;
}
if(choice=="2"){
alert("审批意见不一致流程不能结束,须退回!");
return;
}
if(choice=="3"){
alert("审批意见为退回经销商SP须退回");
return;
}
if(phaseOpinion=="8000"){
alert("审批意见为建议通过,流程不允许否决!");
return;
}
}
//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"%>