417 lines
15 KiB
Plaintext
417 lines
15 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)||"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 userarr = AsControl.RunJavaMethodTrans("com.tenwa.voucher.CreateVoucherProcess.CommutingToWork","FilterUserinfo","userinfo="+userInfo);
|
||
var vUser=userarr.split("@");
|
||
console.log("==============",userInfo,userarr,vUser);
|
||
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(choice!="1"&&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"%>
|