You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

433 lines
18 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>退回</title>
<!--
1, 退回界面。
2需要 FK_Flow, FK_Node,WorkID, FID.
3, 调用方法 ReturnWork.htm?FK_Flow=001&FK_Node=103&WorkID=232&FID=23
4. 确定按钮后,要关闭主窗口。
5.当为父流程退回时,如果已经启动子流程时则不能执行退回功能
6.当为子流程退回时,如果已经启动平级子流程时则不能执行退回功能
7.退回到指定节点,如果退回到的节点中间有启动子流程或者平级子流程的节点,则不处理,正常退回
-->
<script type="text/javascript" src="../Scripts/QueryString.js"></script>
<script type="text/javascript" src="../Scripts/jquery-1.7.2.min.js"></script>
<script src="../Scripts/commonYangYH.js"></script>
<!-- 导入配置文件. -->
<!-- 该文件可以被集成厂商自己定义风格,可以自己修改,以达到流程设计器与自己的系统风格统一. -->
<link href="../../DataUser/Style/ccbpm.css" rel="Stylesheet" />
<script type="text/javascript" src="../Scripts/config.js"></script>
<script type="text/javascript" src="../Comm/Gener.js"></script>
<!-- 加载通用的配置文件. -->
<script type="text/javascript" src="../../DataUser/JSLibData/CommonShowConfig.js"></script>
<script type="text/javascript" src="../../DataUser/JSLibData/ReturnWork.js"></script>
<script src="../InitMapAttr.js"></script>
<link href="../Scripts/layui/layui/css/layui.css" rel="stylesheet" />
<style type="text/css">
body {
background: transparent;
}
body div {
text-align: left;
margin: 20px auto;
}
#Message {
width: 100%;
}
</style>
<script type="text/javascript">
function isExitsVariable(variableName) {
try {
if (typeof (cceval(variableName)) == "undefined") {
console.log("已声明变量,但未初始化");
return false;
} else {
console.log("已声明变量,且已经初始化");
return true;
}
} catch (e) {
console.log("未声明变量");
}
return false;
}
var pageData = {};
// ?
var isFrameCross = GetQueryString("isFrameCross");
isFrameCross = isFrameCross == null || isFrameCross == undefined ? 0 : isFrameCross;
var node = null;
//是否全局设置了,强制每个节点都是原路返回?
var _ReturnWin_IsBackTracking_Selected = getConfigByKey("ReturnWin_IsBackTracking_Selected", false);;
$(function () {
//初始化页面退回信息.
pageData = {
FK_Node: GetQueryString('FK_Node'),
WorkID: GetQueryString('WorkID'),
FID: GetQueryString('FID'),
Message: GetQueryString('Info'),
FK_Flow: GetQueryString("FK_Flow"),
WorkIDs: GetQueryString("WorkIDs")
};
//如果有退回信息字段,就让其绑定到,退回原因的文本框里.
if (pageData.Message != undefined && pageData.Message != '') {
$('#TB_Doc').val(pageData.Message);
}
//调用接口传入url的参数。
var handler = new HttpHandler("BP.WF.HttpHandler.WF_WorkOpt");
handler.AddUrlData(); //FK_Flow, FK_Node,WorkID,Info info=退回信息字段.
//初始化数据.
var data = handler.DoMethodReturnString("Return_Init");
if (data.indexOf('info@') == 0) {
//这种情况下,有可能是自动退回,自动退回就提示退回消息.
//设置弹出框的大小
$(".modal-content", parent.document).css("width", "");
$(".modal-content", parent.document).css("height", "300px");
$("#iframeReturnWorkForm", parent.document).css("height", "300px");
data = data.replace('info@', '');
data = data.replace(/null/g, '');
data = "<font>" + data + "</font>";
$("#Msg").html("");
$("#DIV_Nodes").html(data);
$("#DIV_Doc").html("");
$("#btnReturn").css("display", "none");
// $("#btnIsBackTracking").css("display", "block");
//$("#btnIsKillEtcThread").css("display", "block");
$("#btnClose").attr("onclick", "Close(1)");
return;
}
//对与非法的调用,系统会提示,比如:不应该退回而退回,已经发送到下一个节点还要执行退回等等.
if (data.indexOf('err@') == 0) {
//console.error("退回窗口错误信息" + data);
data = data.replace('err@', '');
data = "<font color=red>" + data + "</font>";
$("#Msg").html(data);
// alert(data);
return;
}
node = new Entity("BP.WF.Node", pageData.FK_Node);
//子线程退回到分流节点:子线程删除规则. 不删除其他的子线程.
if (node.IsKillEtcThread == 0 && node.RunModel==4 ) {
document.getElementById("btnIsKillEtcThread").style.display = 'none';
document.getElementById("CB_IsKillEtcThread").checked = false;
}
//子线程退回到分流节点:删除其他的子线程.
if (node.IsKillEtcThread == 1 && node.RunModel == 4) {
document.getElementById("btnIsKillEtcThread").style.display = 'inline';
document.getElementById("CB_IsKillEtcThread").checked = true;
$('#CB_IsKillEtcThread').attr("disabled", 'disabled'); //让其不可编辑.
}
//子线程退回到分流节点:由用户决定.
if (node.IsKillEtcThread == 2 && node.RunModel == 4) {
document.getElementById("btnIsKillEtcThread").style.display = 'inline';
document.getElementById("CB_IsKillEtcThread").checked = true;
// $('#CB_IsKillEtcThread').attr("disabled", 'disabled'); //让其不可编辑.
}
////是否选择. 退回并原路返回. 强制设置,退回并原路返回.
if (_ReturnWin_IsBackTracking_Selected == true) {
// document.getElementById("btnIsKillEtcThread").style.display = 'inline';
document.getElementById("CB_IsBackTracking").checked = true;
// document.getElementById("CB_IsBackTracking").checked = true;
$('#CB_IsBackTracking').attr("disabled", 'disabled');
} else {
//不允许原路返回.
if (node.IsBackTracking === 0) {
document.getElementById("CB_IsBackTracking").checked = false;
$('#CB_IsBackTracking').attr("disabled", 'disabled');
// $("#btnIsBackTracking").css("display", "inline");
}
//强制设置原路返回.
if (node.IsBackTracking === 2) {
document.getElementById("CB_IsBackTracking").checked = true;
$('#CB_IsBackTracking').attr("disabled", 'disabled');
$("#btnIsBackTracking").css("display", "inline");
}
//让用户决定,是否可以原路返回.
if (node.IsBackTracking === 1) {
$("#btnIsBackTracking").css("display", "inline");
}
}
if (node.ReturnCHEnable == 1) {
var mapAttrs = new Entities("BP.Sys.MapAttrs");
mapAttrs.Retrieve("FK_MapData", "BP.WF.ReturnWorks", "Idx");
var idx = 0;
if (mapAttrs.length != 0) {
$("#ReturnCH").show();
var html = " 退回考核规则信息:";
html += "<table style='width:100%;'>";
for (var i = 0; i < mapAttrs.length; i++) {
if (mapAttrs[i].AtPara.indexOf("FK_Flow=" + pageData.FK_Flow) != -1) {
idx++;
if ((idx + 1) % 2 == 0)
html += "<tr>";
html += "<td>" + mapAttrs[i].Name + "</td>";
html += "<td style='text-align:left'>";
html += InitAthMapAttrOfCtrlFool(null, mapAttrs[i], null);
html += "</td>";
if (idx % 2 == 0)
html += "</tr>";
}
}
html += "</table>";
if (idx != 0) {
$("#ReturnCH").html(html);
}
}
}
//获得可以退回的节点集合。
var returnNodeArr = JSON.parse(data);
var nodeListHtml = '';
$.each(returnNodeArr, function (i, returnNode) {
if (returnNode.AtPara && returnNode.AtPara.indexOf('IsHuiQian=1') >= 0) {
return true; //退回这个字段里包含 IsHuiQian=1的字符就排除掉.
}
if (nodeListHtml.indexOf(returnNode.No + '@') != -1)
return true;
nodeListHtml += '<option data-IsKillEtcThread=' + returnNode.IsKillEtcThread + ' data-IsBackTracking=' + returnNode.IsBackTracking + ' value="' + returnNode.No + '@' + returnNode.Rec + '">' + returnNode.RecName + '=&gt;' + returnNode.Name + '</option>';
});
//绑定退回到节点的数据.
$('#DDL_Nodes').html(nodeListHtml);
//获取当前节点属性,是否可以执行退回并原路返回的按钮?
//var node = new Entity("BP.WF.Node", pageData.FK_Node)
if (node.IsBackTracking != "0")
$('#btnIsBackTracking').css("display", "inline");
if (node.IsKillEtcThread == "1" && (node.RunModel == 4))
$('#btnIsKillEtcThread').css("display", "inline");
$("section").show();
$(".wait").hide();
Common.MaxLengthError();
//临时处理sls 的需求, 退回任意节点 \datauser\JsLab\ReturnWork.js 代码.
try {
LoaclOperation();
} catch (e) {
}
});
//确定 退回 执行退回操作
// isBack=0 是退回按钮调用, =1是退回并原路返回按钮调用.
function Save(isBack) {
//判断退回并原路返回复选框是否被选中
if ($("#CB_IsBackTracking").prop("checked") == true)
isBack = 1;
//是否全部(子线程)退回?
var IsKillEtcThread = 0;
if ($("#CB_IsKillEtcThread").prop("checked") == true)
IsKillEtcThread = 1;
if (node.IsKillEtcThread == "1")
IsKillEtcThread = 1;
//获得选择退回的节点.
var selectedNodeID = $('#DDL_Nodes').val();
if (selectedNodeID == null || selectedNodeID == undefined || selectedNodeID == "") {
alert('请选择要退回的节点');
return;
}
//获得退回原因.
var val = escape($('#TB_Doc').val().trim());
if (val == null || val == "" || val == undefined) {
alert("请输入退回原因.");
return;
}
$('.foot input').attr('disabled', 'disabled');
$('.foot input').css('background', 'gray');
var doc = "";
doc = $('#TB_Doc').val();
//调动退回接口.
var handler = new HttpHandler("BP.WF.HttpHandler.WF_WorkOpt");
var doMethod = "DoReturnWork";
if (pageData.WorkIDs != null && pageData.WorkIDs != undefined && pageData.WorkIDs != "") {
handler = new HttpHandler("BP.WF.HttpHandler.WF_WorkOpt_Batch");
handler.AddPara("WorkIDs", pageData.WorkIDs);
doMethod = "Batch_Return";
}
handler.AddPara("FK_Flow", pageData.FK_Flow);
handler.AddPara("WorkID", pageData.WorkID);
handler.AddPara("FID", pageData.FID);
handler.AddPara("FK_Node", pageData.FK_Node);
handler.AddPara("ReturnToNode", selectedNodeID);
handler.AddPara("ReturnInfo", doc);
//如果强制设置了退回并原路返回.
if (_ReturnWin_IsBackTracking_Selected != undefined && _ReturnWin_IsBackTracking_Selected == true)
isBack = 1;
handler.AddPara("IsBack", isBack);
//是否全部子线程退回?
handler.AddPara("IsKillEtcThread", IsKillEtcThread);
// alert(IsKillEtcThread);
//增加字段属性, 这部分vue可以不翻译.
var parasData = $("form").serialize();
handler.AddPara("PageData", parasData);
//调用退回方法.
var data = handler.DoMethodReturnString(doMethod); //执行方法.
if (isFrameCross == 0) {
if (window.parent != null && window.parent.WindowCloseReloadPage != null && typeof window.parent.WindowCloseReloadPage === "function") {
window.parent.WindowCloseReloadPage(data);
} else {
if (typeof WindowCloseReloadPage != 'undefined'
&& WindowCloseReloadPage instanceof Function)
WindowCloseReloadPage(data);
}
} else {
ChildrenPostMessage(data, "WindowCloseReloadPage");
}
//提示退回消息, 并关闭窗口,刷新父父窗口.
data = data.replace(/null/g, '');
if (isFrameCross == 0) {
var url = window.parent ? window.parent.location.href : "";
if (window.parent && typeof window.parent.returnWorkWindowClose == "function" && url.indexOf("WorkCheckModel") == -1) {
window.parent.returnWorkWindowClose(data);
} else if (window.opener && typeof window.opener.returnWorkWindowClose == "function" && url.indexOf("WorkCheckModel") == -1) {
window.opener.returnWorkWindowClose(data);
} else {
$("#DIV_Nodes").hide();
$("#DIV_Doc").hide();
$("#btnReturn").hide();
$('body').append($('<div>' + data + '</div>'));
$('#btnOk').attr('disabled', true);
}
} else {
ChildrenPostMessage(data, "returnWorkWindowClose");
}
$(".foot").hide();
}
//取消退回
function Close(flag) {
if (isFrameCross == 0) {
var url = window.parent ? window.parent.location.href : "";
if (window.parent && typeof window.parent.returnWorkWindowClose == "function" && url.indexOf("WorkCheckModel") == -1) {
window.parent.returnWorkWindowClose("取消");
if (flag == 1)
window.parent.close();
}
else if (window.parent && typeof window.parent.CloseBootstrapDialog == "function") {
window.parent.CloseBootstrapDialog("");
}
else {
$('body').append($('<div>' + "已取消操作" + '</div>'));
window.close();
}
} else {
ChildrenPostMessage("取消", "returnWorkWindowClose");
if (flag == 1)
window.parent.close();
}
}
</script>
</head>
<body>
<div style="padding:0 15px;">
<div class="wait" style="text-align: center;" id="Msg">页面数据正在加载中,请稍候......</div>
<div id="DIV_Nodes">
要退回到:
<select id="DDL_Nodes" name="DDL_Nodes" style="width: 60%;border:solid 1px #ccc" class="layui-select"></select>
</div>
<!--启用了退回考核规则的设置-->
<form id="cc">
<div id="ReturnCH" style="display:none;"></div>
</form>
<div id="DIV_Doc">
<textarea id="TB_Doc" name="TB_Doc" placeholder="请输入退回原因..."
style="width: 100%; height:100px;border:solid 1px #ccc"
maxlength="500" class="layui-textarea"></textarea>
</div>
</div>
<!--<div> 上传附件:</div>
<div style="height:100px;">上传附件预留:该功能正在建设中</div>
-->
<div class="form-inline" style="margin-right:15px;text-align:right;bottom: 20px;">
<div id="btnIsBackTracking" style="margin-top:6px;display:none">
<label>
<input type="checkbox" id="CB_IsBackTracking" />
本次退回后,并由被退回节点直接发送到本环节&nbsp;&nbsp;
</label>
</div>
<div id="btnIsKillEtcThread" style="margin-top: 6px; display: none">
<label>
<input type="checkbox" id="CB_IsKillEtcThread" />
全部子线程退回&nbsp;&nbsp;
</label>
</div>
<button type="button" onclick="Close();" id="btnClose" class="layui-btn layui-btn-primary">
<!--<img src="../Img/Btn/Close.png" />--> 关闭
</button>
<button type="button" onclick="Save(0);" id="btnReturn" class="layui-btn layui-btn-normal">
<!--<img src="../Img/Btn/Confirm.png" />--> 退回
</button>
</div>
</body>
</html>