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.

260 lines
7.8 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.

var StarStepNum = 0;
var step = 0;
$(function () {
var v = $("#JobSchedule");
if (v == null || v == undefined)
return;
var workid = GetQueryString("WorkID");
var oid = GetQueryString("OID");
if (workid==null) {
workid = oid;
}
var handler = new HttpHandler("BP.WF.HttpHandler.WF_WorkOpt_OneWork");
handler.AddPara("WorkID", workid);
var ds = handler.DoMethodReturnJSON("JobSchedule_Init");
var gwf = ds["WF_GenerWorkFlow"][0]; //工作记录.
var nodes = ds["WF_Node"]; //节点.
var dirs = ds["WF_Direction"]; //连接线.
var tracks = ds["Track"]; //历史记录.
var html = "<div class='step'>";
html += "<tr>";
var step = 0;
//循环历史记录, 生成唯一的节点连续字符串比如 101,102,103
var nds = "";
for (var i = 0; i < tracks.length; i++) {
var tk = tracks[i];
if (nds.indexOf(tk.FK_Node) != -1)
continue;
if (tk.ActionType == 2)
continue;
nds += "," + tk.FK_Node;
}
//把节点转化为数组.
var nds = nds.split(",");
for (var i = 0; i < nds.length; i++) {
var nodeID = nds[i];
if (nodeID == "")
continue;
var nodeNums = 0;
for (var myidx = 0; myidx < tracks.length; myidx++) {
var tk = tracks[myidx];
if (tk.FK_Node == nodeID)
nodeNums++;
}
//如果是单个节点.
if (nodeNums == 1) {
html += GenerSingerNode(tracks, nodeID, gwf);
continue;
}
if (nodeNums > 1) { //多个人的节点.
html += GenerMNode(tracks, nodeID, gwf);
continue;
}
}
//流程未完成的状态, 输出没有经过的节点。
if (gwf.WFState != 3) {
//当前停留的节点.
var currNode = gwf.FK_Node;
var nodeName = "";
for (var i = 0; i < 100; i++) {
var nextNode = GetNextNodeID(currNode, dirs);
if (nextNode == 0)
break;
for (var idx = 0; idx < nodes.length; idx++) {
var nd = nodes[idx];
if (nd.NodeID == nextNode) {
nodeName = nd.Name;
break;
}
}
var doc = "<b>-</b>";
doc += "<br>";
doc += "<br>";
doc += "<br>";
// doc = "";
step = step + 1;
currNode = nextNode;
if (nextNode == 0)
var info = GenerIcon("DotEnd", step, doc, true, nodeName);
else
var info = GenerIcon("DotEnd", step + StarStepNum, doc, false, nodeName);
html += "<td style='text-align:center;vertical-align:top;'>" + info + "</td>";
if (nextNode == 0)
break;
}
}
html += "</tr>";
html += "</table>";
$("#JobSchedule").html(html);
return;
});
//生成多个节点处理人. .
function GenerMNode(tracks, nodeID, gwf) {
step = step + 1;
var info = "<ul>";
var emps = "";
var track;
for (var i = 0; i < tracks.length; i++) {
var tk = tracks[i];
if (tk.FK_Node != nodeID) continue;
if (emps.indexOf(tk.EmpNo + ',') >= 0) continue; //已经出现的,就不处理了.
track = tk;
emps += tk.EmpNo + ",";
if (tk.IsPass == 1) {
info += "<ol><font color=blue><b>" + tk.DeptName + " " + tk.EmpName + "</b></font> " + tk.RDT.substring(5, 16) + "</ol>";
}
else {
info += "<ol>" + tk.DeptName + " " + tk.EmpName + "</ol>";
}
}
info += "</ul>";
if(track != null && track != undefined) {
if (track.FK_Node == gwf.FK_Node)
info = GenerIcon("DotGreen", step, info, false, track.NodeName);
else
info = GenerIcon("DotBlue", step, info, false, track.NodeName);
}
return "<td style='text-align:center;vertical-align:top;'>" + info + "</td>";
}
//生成单个节点的样式风格.
function GenerSingerNode(tracks, nodeID, gwf) {
for (var i = 0; i < tracks.length; i++) {
var tk = tracks[i];
if (tk.FK_Node != nodeID)
continue;
var doc = "";
doc += "<br>" + tk.EmpName;
doc += "<br>" + tk.RDT.substring(0, 16);
step = i + 1;
var info = "";
if (tk.FK_Node == gwf.FK_Node)
info = GenerIcon("DotGreen", step, doc, false, tk.NodeName);
else
info = GenerIcon("DotBlue", step, doc, false, tk.NodeName);
StarStepNum = step;
return "<td style='text-align:center;vertical-align:top;'>" + info + "</td>";
}
}
function GenerIcon(icon, step, docs, isEndNode, nodeName) {
var url = basePath + "/WF/WorkOpt/OneWork/Img/" + icon + "-" + step + ".png";
var barUrlLeft = "";
var barUrlRight = "";
if (icon == 'DotGreen') {
barUrlRight = "<img src='" + basePath + "/WF/WorkOpt/OneWork/Img/BarGreen.png' style='width:100%;margin-right:0px;margin-left:0px;padding-left:0px;padding-right:0px;' />";
barUrlLeft = "<img src='" + basePath + "/WF/WorkOpt/OneWork/Img/BarGreen.png' style='width:100%;margin-right:0px;margin-left:0px;padding-left:0px;padding-right:0px;' />";
}
if (icon == "DotBlue") {
barUrlRight = "<img src='" + basePath + "/WF/WorkOpt/OneWork/Img/BarGreen.png' style='width:100%;margin-right:0px;margin-left:0px;padding-left:0px;padding-right:0px;' />";
barUrlLeft = "<img src='" + basePath + "/WF/WorkOpt/OneWork/Img/BarGreen.png' style='width:100%;margin-right:0px;margin-left:0px;padding-left:0px;padding-right:0px;' />";
}
if (icon == 'DotEnd') {
barUrlRight = "<img src='" + basePath + "/WF/WorkOpt/OneWork/Img/BarGiay.png' style='width:100%;margin-right:0px;margin-left:0px;padding-left:0px;padding-right:0px;' />";
barUrlLeft = "<img src='" + basePath + "/WF/WorkOpt/OneWork/Img/BarGiay.png' style='width:100%;margin-right:0px;margin-left:0px;padding-left:0px;padding-right:0px;' />";
}
if (isEndNode == true)
barUrlRight = "";
var html = "";
html += "<table style='height:100px;width: 100%; table-layout: fixed;border:none;margin:0px; padding:0px;'>";
html += "<tr>";
html += "<td style='border:none;margin:0px; padding:0px;width:40%;text-align:center;vertical-align:top;background-image: url('" + url + "'); background-repeat: no-repeat; background-attachment: fixed; background-position: center center'><table style='border:none;'><tr><td style='border:none;'><img src='" + url + "' style='width:18px;'/></td></tr><tr><td style='border:none;'><nobr>" + nodeName + "</nobr></td></tr><tr><td style='border:none;'>" + barUrlRight + "</td></tr><tr><td style='border:none;'>" + docs + "</td></tr></table></td>";
html += "<tr>";
html += "</table>";
return html;
}
function GenerStart() {
var str = "<div><img src='" + basePath + "/WF/WorkOpt/OneWork/Img/DotGreen1.png' /></div>";
}
//根据当前节点获得下一个节点.
function GetNextNodeID(nodeID, dirs) {
var toNodeID = 0;
for (var i = 0; i < dirs.length; i++) {
var dir = dirs[i];
if (dir.Node == nodeID) {
toNodeID = dir.ToNode;
break;
}
}
var toNodeID2 = 0;
for (var i = 0; i < dirs.length; i++) {
var dir = dirs[i];
if (dir.Node == nodeID) {
toNodeID2 = dir.ToNode;
}
}
//两次去的不一致就有分支有分支就reutrn 0 .
if (toNodeID2 == toNodeID)
return toNodeID;
return 0;
}
function GetNextNodeIDExpSpecNode_del(nodeID, specToNode, dirs) {
for (var i = 0; i < dirs.length; i++) {
var dir = dirs[i];
if (dir.Node == currNode) {
if (dir.ToNode == specToNode)
return 0;
}
}
return 0;
}