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.

556 lines
17 KiB
Plaintext

9 months ago

function InitPage() {
//加载标签页
var handler = new HttpHandler("BP.WF.HttpHandler.CCMobile_WorkOpt_OneWork");
handler.AddPara("FK_Node", fk_node);
handler.AddPara("FK_Flow", fk_flow);
handler.AddPara("WorkID", workid);
handler.AddPara("FID", fid);
var data = handler.DoMethodReturnString("TimeBase_Init");
if (data.indexOf('err@') == 0) {
alert(data);
return;
}
if (data == "[]") {
return;
}
data = cceval('(' + data + ')');
//日志列表.
var tracks = data["Track"];
//工作列表.
var gwf = data["WF_GenerWorkFlow"][0];
if (gwf.WFState == 3)
$("#Undo").hide();
//获得工作人员列表.
var gwls = data["WF_GenerWorkerlist"];
var timeDay = "";
var checkStr = "";
var dotColor = -1;
var idx = 1;
//输出列表.
for (var i = 0; i < tracks.length; i++) {
var track = tracks[i];
if (track.FID != 0)
continue;
if (track.ActionType == ActionType.FlowBBS)
continue;
if (track.ActionType == ActionType.WorkCheck)
continue;
//如果是协作发送,就不输出他. edit 2016.02.20 .BBS也不显示added by liuxc,2016-12-15
if (track.ActionType == ActionType.TeampUp || track.ActionType == ActionType.FlowBBS)
continue;
// 记录审核节点。
if (track.ActionType == ActionType.WorkCheck)
checkStr = track.NDFrom; //记录当前的审核节点id.
//审核信息过滤,
if (track.ActionType == ActionType.WorkCheck) {
if (gwf.FK_Node == checkStr && gwf.WFState != 3)
continue;
//如果当前节点与审核信息节点一致,就说明当前人员的审核意见已经保存,但是工作还没有发送,就不让他显示。
}
// 前进.
if (track.ActionType == ActionType.Forward) {
if (checkStr == track.NDFrom)
continue;
}
var rdt = track.RDT;
if (timeDay == "") {
timeDay = rdt.substring(0, 10);
dotColor = dotColor + 1;
if (dotColor == 3)
dotColor = 1;
var rowDay = "<tr>";
rowDay += "<td colspan=3 class=TDDay >" + timeDay + "</td>";
rowDay += "</tr>";
$("#Table1 tr:last").after(rowDay);
} else if (rdt.indexOf(timeDay) != 0) {
timeDay = rdt.substring(0, 10);
dotColor = dotColor + 1;
if (dotColor == 3)
dotColor = 1;
var rowDay = "<tr>";
rowDay += "<td colspan=3 class=TDDay >" + timeDay + "</td>"
rowDay += "</tr>";
$("#Table1 tr:last").after(rowDay);
}
//左边的日期点.
var left = "";
var time = rdt.substring(10, 16);
time = time.replace(':', '时');
time = time + "分";
left += "<br><img src='../../DataUser/UserIcon/" + track.EmpFrom + ".png' onerror=\"src='../../../DataUser/UserIcon/Default.png'\" class='UserIcon' /><br>" + track.EmpFromT;
left += " - " + time;
//时间轴.
var timeBase = "";
var imgUrl = ActionTypeStr(track.ActionType);
timeBase = "<img src='" + imgUrl + "' class='ImgOfAC' alt='" + track.ActionTypeText + "' />";
//内容.
var doc = "";
doc = track.NDFromT + " - " + timeBase + track.ActionTypeText;
var at = track.ActionType;
if (at == ActionType.Forward || at == ActionType.ForwardAskfor || at == ActionType.WorkCheck || at == ActionType.Order
|| at == ActionType.SubFlowForward //分流节点也显示表单
|| at == ActionType.FlowOver //added by liuxc,2014-12-3,正常结束结点也显示表单
|| at == ActionType.Skip) //added by liuxc,2015-7-13,自动跳转的也显示表单
{
//this.AddTD("<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
var url = "../../WFRpt.htm?OID=" + track.WorkID + "&WorkID=" + track.WorkID + "&FK_Flow=" + fk_flow + "&FK_Node=" + track.NDFrom + "&DoType=View&MyPK=" + track.MyPK;
url += "&PWorkID=" + gwf.PWorkID;
url += "&PFlowNo=" + gwf.PFlowNo;
url += "&PNodeID=" + gwf.PNodeID;
url += "&Frms=" + gwf.Paras_Frms;
//暂时去掉表单.
//doc += " - <a href=\"javascript:WinOpen('" + url + "','" + track.MyPK + "');\">表单</a>";
}
if (at == ActionType.FlowOver
|| at == ActionType.CC
|| at == ActionType.UnSend) {
doc += "<p></p>";
doc += "<p></p>";
}
else {
doc += "<p>到节点:" + track.NDToT + "</p>";
}
//增加两列,到达时间、用时 added by liuxc,2014-12-4
if (idx > 1) {
var toTime = tracks[idx - 1 - 1]["RDT"];
var toTimeDot = toTime.replace(/\-/g, "/");
toTimeDot = new Date(toTimeDot);
//当前发生日期.
var timeDot = tracks[i]["RDT"].replace(/\-/g, "/");
timeDot = new Date(timeDot);
//doc += "<p>到达时间:<font color=green>" + toTime + "</font> 用时:<font color=green>" + GetSpanTime(toTimeDot, timeDot) + "</font></p>";
}
if ((at == ActionType.Forward || ActionType.Start) && Hide_IsOpenFrm == true ) {
doc += "<p><a href=\"javascript:ToFrm('" + track.NDFrom + "','" + track.WorkID + "','"+track.MyPK+"')\" >查看表单</a></p>";
}
// 删除信息.
var tag = track.Tag;
if (tag != null)
tag = tag.replace("~", "'");
var msg = track.Msg;
if (msg != "")
doc += "<font size='2' color=green>" + msg + "</font><br>";
msg = msg.replace("WorkCheck@", "");
var newRow = "";
newRow = "<tr title='" + track.ActionTypeText + "' >";
newRow += "<td class='TDTime' >" + left + "</td>";
newRow += "<td class='TDBase' ></td>";
newRow += "<td class='TDDoc' >" + doc + "</td>";
newRow += "</tr>";
$("#Table1 tr:last").after(newRow);
idx++;
} //结束循环track.
//增加等待审核的人员, 在所有的人员循环以后.
if (gwls) {
var isHaveNoChecker = false;
for (var i = 0; i < gwls.length; i++) {
var gwl = gwls[i];
if (gwl.IsPass == 1)
continue;
isHaveNoChecker = true;
}
//如果有尚未审核的人员,就输出.
if (isHaveNoChecker == true) {
var rowDay = "<tr>";
rowDay += "<td colspan=3 class='TDDay'>等待审批</td>";
rowDay += "</tr>";
$("#Table1 tr:last").after(rowDay);
for (var i = 0; i < gwls.length; i++) {
var html = "";
var gwl = gwls[i];
if (gwl.IsPass == 1)
continue;
var doc = "";
doc += "<span>审批人:</span>";
doc += gwl.FK_EmpText;
//判断是否隐藏
if (Hide_IsRead == true) {
doc += "<br>";
doc += "<span>阅读状态:</span>";
if (gwl.IsRead == "1")
doc += "<span><font color=green>已阅读.</font></span>";
else
doc += "<span><font color=green>尚未阅读.</font></span>";
}
doc += "<br>";
doc += "<span>工作到达日期:</span>";
doc += gwl.RDT;
//到达时间.
var toTime = gwl.RDT;
var toTimeDot = toTime.replace(/\-/g, "/");
toTimeDot = new Date(toTimeDot);
//当前发生日期.
timeDot = new Date();
doc += "<br>";
doc += "<span>已经耗时:</span>";
doc += GetSpanTime(toTimeDot, timeDot);
doc += "<br>";
doc += "<span >应完成日期:</span>";
doc += gwl.SDT;
//应该完成日期.
toTime = gwl.SDT;
toTimeDot = toTime.replace(/\-/g, "/");
toTimeDot = new Date(toTimeDot);
//当前发生日期.
timeDot = new Date();
doc += "<br>";
doc += "<span >还剩余:</span>";
if (toTime == '无') {
doc += '无';
} else {
doc += GetSpanTime(timeDot, toTimeDot);
}
var left = "";
left += "<br><img src='../../../DataUser/UserIcon/" + gwl.FK_Emp + ".png' onerror=\"src='../../../DataUser/UserIcon/Default.png'\" style='width:60px;' /><br>";
left += "" + gwl.FK_EmpText;
var newRow = "";
newRow = "<tr title='等待审批人员' >";
newRow += "<td class='TDTime'style='font-family:\"Microsoft YaHei\";font-size:16px' >" + left + "</td>";
newRow += "<td class='TDBase' ></td>";
newRow += "<td class='TDDoc' style='font-family:\"Microsoft YaHei\";font-size:16px'>" + doc + "</td>";
newRow += "</tr>";
$("#Table1 tr:last").after(newRow);
}
}
}
if (window.screen) {
var w = screen.availWidth;
var h = screen.availHeight;
window.moveTo(0, 0);
window.resizeTo(w, h);
}
}
function UnSend() {
mui.confirm('您确定要撤销发送吗?', function (e) {
if (e.index == 1) {
//加载标签页
var handler = new HttpHandler("BP.WF.HttpHandler.CCMobile_WorkOpt_OneWork");
handler.AddPara("FK_Node", fk_node);
handler.AddPara("FK_Flow", fk_flow);
handler.AddPara("WorkID", workid);
handler.AddPara("FID", fid);
var data = handler.DoMethodReturnString("TimeBase_UnSend");
if (data.indexOf('err@') == 0) {
mui.alert(data);
return;
}
var url = "../../MyFlow.htm?FK_Flow=" + fk_flow + "&WorkID=" + workid + "&t=" + Math.random();
SetHref(url);
}
})
}
function ToFrm(ndFrom,workID,trackID) {
var fk_flow = GetQueryString("FK_Flow");
var workID = GetQueryString("WorkID");
var url = GetHrefUrl();
url = url.substring(url.indexOf("?"));
url = "../../MyFrm.htm" + url;
var isShow = GetQueryString("IsShowUnSend");
if (isShow == null || isShow == '')
isShow = "0";
url = "../../MyFrm.htm" + url + "&IsShowUnSend=" + isShow;
SetHref(url);
}
function GetSpanTime(date1, date2) {
///<summary>计算date2-date1的时间差返回使用“x天x小时x分x秒”形式的字符串表示</summary>
var date3 = date2.getTime() - date1.getTime(); //时间差秒
var str = '';
//计算出相差天数
var days = Math.floor(date3 / (24 * 3600 * 1000));
if (days > 0) {
str += days + '天';
}
//计算出小时数
var leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
var hours = Math.floor(leave1 / (3600 * 1000));
if (hours > 0) {
str += hours + '小时';
}
//计算相差分钟数
var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
var minutes = Math.floor(leave2 / (60 * 1000));
if (minutes > 0) {
str += minutes + '分';
}
if (str.length == 0) {
var leave3 = leave2 % (60 * 1000);
var seconds = Math.floor(leave3 / 1000);
str += seconds + '秒';
}
return str;
}
/**Begin - Form Controls ***************/
var ActionType = {
/// <summary>
/// 发起
/// </summary>
Start: 0,
/// <summary>
/// 前进(发送)
/// </summary>
Forward: 1,
/// <summary>
/// 退回
/// </summary>
Return: 2,
/// <summary>
/// 退回并原路返回.
/// </summary>
ReturnAndBackWay: 201,
/// <summary>
/// 移交
/// </summary>
Shift: 3,
/// <summary>
/// 撤消移交
/// </summary>
UnShift: 4,
/// <summary>
/// 撤消发送
/// </summary>
UnSend: 5,
/// <summary>
/// 分流前进
/// </summary>
ForwardFL: 6,
/// <summary>
/// 合流前进
/// </summary>
ForwardHL: 7,
/// <summary>
/// 流程正常结束
/// </summary>
FlowOver: 8,
/// <summary>
/// 调用起子流程
/// </summary>
CallChildenFlow: 9,
/// <summary>
/// 启动子流程
/// </summary>
StartChildenFlow: 10,
/// <summary>
/// 子线程前进
/// </summary>
SubFlowForward: 11,
/// <summary>
/// 取回
/// </summary>
Tackback: 12,
/// <summary>
/// 恢复已完成的流程
/// </summary>
RebackOverFlow: 13,
/// <summary>
/// 强制终止流程 For lijian:2012-10-24.
/// </summary>
FlowOverByCoercion: 14,
/// <summary>
/// 挂起
/// </summary>
Hungup: 15,
/// <summary>
/// 取消挂起
/// </summary>
UnHungup: 16,
/// <summary>
/// 强制移交
/// </summary>
ShiftByCoercion: 17,
/// <summary>
/// 催办
/// </summary>
Press: 18,
/// <summary>
/// 逻辑删除流程(撤销流程)
/// </summary>
DeleteFlowByFlag: 19,
/// <summary>
/// 恢复删除流程(撤销流程)
/// </summary>
UnDeleteFlowByFlag: 20,
/// <summary>
/// 抄送
/// </summary>
CC: 21,
/// <summary>
/// 工作审核(日志)
/// </summary>
WorkCheck: 22,
/// <summary>
/// 删除子线程
/// </summary>
DeleteSubThread: 23,
/// <summary>
/// 请求加签
/// </summary>
AskforHelp: 24,
/// <summary>
/// 加签向下发送
/// </summary>
ForwardAskfor: 25,
/// <summary>
/// 自动条转的方式向下发送
/// </summary>
Skip: 26,
/// <summary>
/// 队列发送
/// </summary>
Order: 27,
/// <summary>
/// 协作发送
/// </summary>
TeampUp: 28,
/// <summary>
/// 流程评论
/// </summary>
FlowBBS: 29,
/// <summary>
/// 信息
/// </summary>
Info: 100
};
function ActionTypeStr(at) {
switch (at) {
case ActionType.Start:
return "../../Img/Action/Start.png";
case ActionType.Forward:
return "../../Img/Action/Forward.png";
case ActionType.Return:
return "../../Img/Action/Return.png";
case ActionType.ReturnAndBackWay:
return "../../Img/Action/ReturnAndBackWay.png";
case ActionType.Shift:
return "../../Img/Action/Shift.png";
case ActionType.UnShift:
return "../../Img/Action/UnShift.png";
case ActionType.UnSend:
return "../../Img/Action/UnSend.png";
case ActionType.ForwardFL:
return "../../Img/Action/ForwardFL.png";
case ActionType.ForwardHL:
return "../../Img/Action/ForwardHL.png";
case ActionType.CallChildenFlow:
return "../../Img/Action/CallChildenFlow.png";
case ActionType.StartChildenFlow:
return "../../Img/Action/StartChildenFlow.png";
case ActionType.SubFlowForward:
return "../../Img/Action/SubFlowForward.png";
case ActionType.RebackOverFlow:
return "../../Img/Action/RebackOverFlow.png";
case ActionType.FlowOverByCoercion:
return "../../Img/Action/FlowOverByCoercion.png";
case ActionType.Hungup:
return "../../Img/Action/Hungup.png";
case ActionType.UnHungup:
return "../../Img/Action/UnHungup.png";
case ActionType.ShiftByCoercion:
return "../../Img/Action/ShiftByCoercion.png";
case ActionType.Press:
return "../../Img/Action/Press.png";
case ActionType.DeleteFlowByFlag:
return "../../Img/Action/DeleteFlowByFlag.png";
case ActionType.UnDeleteFlowByFlag:
return "../../Img/Action/UnDeleteFlowByFlag.png";
case ActionType.CC:
return "../../Img/Action/CC.png";
case ActionType.WorkCheck:
return "../../Img/Action/WorkCheck.png";
case ActionType.AskforHelp:
return "../../Img/Action/AskforHelp.png";
case ActionType.Skip:
return "../../Img/Action/Skip.png";
case ActionType.Order:
return "../../Img/Action/Order.png";
case ActionType.TeampUp:
return "../../Img/Action/TeampUp.png";
case ActionType.FlowBBS:
return "../../Img/Action/FlowBBS.png";
case ActionType.Info:
return "../../Img/Action/Info.png";
default:
return "../../Img/Dot.png";
}
}