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.

320 lines
12 KiB
Plaintext

9 months ago
<!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>
<!-- 引用通用的js文件. -->
<script language="JavaScript" src="../Comm/JS/Calendar/WdatePicker.js" defer="defer"
type="text/javascript"></script>
<link href="../../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="../Img/ccbpm.ico" type="image/x-icon" />
<script type="text/javascript" src="../Scripts/jquery-1.7.2.min.js"></script>
<script language="JavaScript" src="../Comm/JScript.js" type="text/javascript"></script>
<script type="text/javascript" src="../Scripts/QueryString.js"></script>
<!-- 导入配置文件. -->
<script type="text/javascript" src="../Scripts/config.js"></script>
<script type="text/javascript" src="../Comm/Gener.js"></script>
<script type="text/javascript" language="javascript">
var node = null; //公共变量.
$(function () {
// alert(html);
$("#Msg").html('正在加载,请稍候...');
var nodeID = GetQueryString("FK_Node");
var workID = GetQueryString("WorkID");
var fid = GetQueryString("FID");
fid = fid == null || fid == undefined || fid == "" ? 0 : fid;
node = new Entity("BP.WF.Node", nodeID);
//子线程流程引擎注册表.
if (workID == null || workID == undefined)
workID = 0;
var gwfs = new Entities("BP.WF.GenerWorkFlows");
gwfs.Retrieve("FID", workID);
//工作人员表.
var gwls = new Entities("BP.WF.GenerWorkerLists");
gwls.Retrieve("FID", workID);
//获得子线节点的数量,如果1个就用单独列表的模式展现多个就用多列表模式展现.
var numOfSubNods = 0;
var numOfSubNodsStrs = "";
for (var i = 0; i < gwls.length; i++) {
var gwl = gwls[i];
if (gwl.IsPass == -2)
continue; //这个节点是干流程发起的人员.
if (numOfSubNodsStrs.indexOf(gwl.FK_Node) == -1) {
numOfSubNodsStrs += gwl.FK_Node + ",";
numOfSubNods++;
}
}
//只有一个子线程,就是用列表模式.
if (numOfSubNods == 1 && 1 == 2) {
BindModelOne(gwfs, gwls, fid == 0 ? false : true);
} else {
//使用分组列表的模式.
BindModelMore(gwfs, gwls, fid == 0 ? false : true);
}
if (fid == 0)
$("#addEmp").html("<center><a href='javascript:AddEmp()'><img src='./../Img/Auth.png' />增加人员(线程)</a></center>");
})
function AddEmp() {
if (node.RunModel == 2 || node.RunModel == 1) {
var msg = "说明:";
msg += "\t\n 1. 新增加的人员,从分流节点的下一个节点开始执行.";
msg += "\t\n 2. 输入人员账号,点击确定后,系统就会自动为该人员分配一个任务.";
var empNo = window.prompt(msg + ' 请输入要增加的人员账号,多个人员用逗号分开(比如:zhangsan,lisi):');
if (empNo == null || empNo == '')
return;
// var empNo = 'zhoupeng';
var workid = GetQueryString("WorkID");
var en = new Entity("BP.WF.GenerWorkFlow", workid);
var data = en.DoMethodReturnString("DoSubFlowAddEmps", empNo);
alert(data);
Reload();
return;
}
alert('您没有权限增加人员.');
}
var webUser = new WebUser();
function BindModelOne(gwfs, gwls, isThread) {
var strs = "<table style='width:100%;'>";
strs += "<tr>";
strs += "<th>序</th>";
strs += "<th>节点</th>";
strs += "<th>处理人</th>";
strs += "<th>状态</th>";
strs += "<th>应完成日期</th>";
strs += "<th>实际完成日期</th>";
strs += "<th>表单</th>";
if (node.ThreadKillRole == 1)
strs += "<th>终止</th>";
if (isThread == false)
strs += "<th>操作</th>";
strs += "</tr>";
var idx = 0;
for (var i = 0; i < gwls.length; i++) {
var gwl = gwls[i];
if (gwl.IsPass == -2)
continue; //这个节点是干流程发起的人员.
//是当前人员
if (isThread == true && gwl.FK_Emp == webUser.No)
continue;
idx++;
strs += "<tr>";
strs += "<td class=Idx >" + idx + "</td>";
strs += "<td>" + gwl.NodeName + "</td>";
strs += "<td>" + gwl.FK_Emp + " " + gwl.EmpName + "</td>";
var openStr = "";
if (gwl.IsPass == 1) {
strs += "<td>已完成</td>";
strs += "<td>" + gwl.SDT + "</td>";
strs += "<td>" + gwl.RDT + "</td>";
openStr += "<a href='ReturnWork.htm?WorkID=" + gwl.WorkID + "&FID=" + gwl.FID + "&FK_Flow=" + gwl.FK_Flow + "&FK_Node=" + GetQueryString("FK_Node") + "' >退回</a>";
} else {
if (gwl.IsRead == 0)
strs += "<td> 未读 </td>";
else
strs += "<td> 已读,未处理 </td>";
strs += "<td>" + gwl.SDT + "</td>";
strs += "<td>无</td>";
}
strs += "<td><a href=\"javascript:OpenFrm('" + gwl.WorkID + "','" + gwl.FID + "','" + gwl.FK_Flow + "','" + gwl.FK_Node + "')\">表单</a></td>";
if (node.ThreadKillRole == 1)
strs += "<td><a href=\"javascript:DoDelSubFlow('" + gwl.FK_Flow + "','" + gwl.WorkID + "')\"><img src='../Img/Btn/Delete.gif' border=0/>终止</a></td>";
if (isThread == false)
strs += "<td>" + openStr + "</td>";
strs += "<tr>";
}
strs += "</table>";
$("#Msg").html(strs);
}
function BindModelMore(gwfs, gwls, isThread) {
//判断有几个子子线程ID, 如果只有一个,就用列表模式展现.
var html = "<table style='width:100%;' >";
// html += "<tr>";
// html += "<th >标题</th>";
// html += "<th>停留节点</th>";
//// html += "<th>状态</th>";
// html += "<th>处理人</th>";
// html += "<th>发起日期</th>";
// html += "</tr>";
for (var i = 0; i < gwfs.length; i++) {
var gwf = gwfs[i];
html += "<tr class=Sum >";
html += "<td> <img src='./../Img/Auth.png' style='width:20px;' /> <font color=green>#" + (i + 1) + ",标题:" + gwf.Title + "</font></td>";
// html += "<td>" + gwf.NodeName + "</td>";
// html += "<td>sss</td>";
html += "<td>" + gwf.TodoEmps + "</td>";
html += "<td>" + gwf.RDT + "</td>";
html += "</tr>";
html += "<tr>";
html += "<td colspan=4 > " + GenerHtml(gwf, gwls, isThread) + " </td>";
html += "</tr>";
}
$("#Msg").html(html);
}
function GenerHtml(gwf, gwls, isThread) {
var strs = "<table style='width:100%;'>";
strs += "<tr>";
strs += "<th>节点</th>";
strs += "<th>处理人</th>";
// strs += "<td>名称</td>";
strs += "<th>状态</th>";
strs += "<th>应完成日期</th>";
strs += "<th>实际完成日期</th>";
strs += "<th>操作</th>";
strs += "</tr>";
for (var i = 0; i < gwls.length; i++) {
var gwl = gwls[i];
if (gwl.WorkID != gwf.WorkID)
continue;
if (gwl.IsPass == -2)
continue; //这个节点是干流程发起的人员.
//是当前人员
if (isThread == true && gwl.FK_Emp == webUser.No)
continue;
strs += "<tr>";
strs += "<td>" + gwl.NodeName + "</td>";
strs += "<td>" + gwl.FK_Emp + " " + gwl.EmpName + "</td>";
var openStr = "";
openStr += "<a href=\"javascript:OpenFrm('" + gwl.WorkID + "','" + gwl.FID + "','" + gwl.FK_Flow + "','" + gwl.FK_Node + "')\">表单</a>";
if (gwl.IsPass == 1) {
strs += "<td>已完成</td>";
strs += "<td>" + gwl.SDT + "</td>";
strs += "<td>" + gwl.RDT + "</td>";
if (isThread == false)
openStr += "-<a href='ReturnWork.htm?WorkID=" + gwl.WorkID + "&FID=" + gwl.FID + "&FK_Flow=" + gwl.FK_Flow + "&FK_Node=" + GetQueryString("FK_Node") + "' >退回</a>";
} else {
if (gwl.IsRead == 0)
strs += "<td> 未读 </td>";
else
strs += "<td> 已读,未处理 </td>";
strs += "<td>" + gwl.SDT + "</td>";
strs += "<td>无</td>";
}
if (node.ThreadKillRole == 1)
openStr += "-<a href=\"javascript:DoDelSubFlow('" + gwl.FK_Flow + "','" + gwl.WorkID + "')\"><img src='../Img/Btn/Delete.gif' border=0/>终止</a>";
strs += "<td>" + openStr + "</td>";
strs += "<tr>";
}
strs += "</table>";
return strs;
}
function OpenFrm(workID, fid, flowNo, nodeID) {
var url = "../MyView.htm?FK_Flow=" + flowNo + "&WorkID=" + workID + "&FK_Node=" + nodeID + "&FID=" + fid;
window.open(url);
return;
var handler = new HttpHandler("BP.WF.HttpHandler.WF_WorkOpt_OneWork");
handler.AddUrlData();
handler.AddPara("FromWorkOpt", "1");
handler.AddPara("WorkID", workID);
handler.AddPara("FK_Node", nodeID);
handler.AddPara("FK_Flow", flowNo);
handler.AddPara("FID", fid);
var data = handler.DoMethodReturnString("Runing_OpenFrm");
data = data.replace('url@./CCForm', 'url@../CCForm');
if (data.indexOf('err@') == 0) {
alert(data);
return;
}
if (data.indexOf('url@') == 0) {
data = data.replace('url@', '');
if (data.indexOf('FromWorkOpt') == -1)
data = data + "&FromWorkOpt=1";
//window.location.href = filterXSS(data);
window.open(data);
return;
}
alert(data);
}
//删除子线城.
function DoDelSubFlow(flowNo, workID) {
if (confirm('您缺少要终止该子线程吗?') == false)
return;
var handler = new HttpHandler("BP.WF.HttpHandler.WF_WorkOpt");
handler.AddPara("FK_Flow", flowNo);
handler.AddPara("WorkID", workID);
var data = handler.DoMethodReturnString("ThreadDtl_DelSubThread");
Reload();
}
</script>
</head>
<body>
<form id="cc">
<center>
<div id="Msg">
<img src='../Img/loading.gif' alt="" />正在加载,请稍后。。。
</div>
</center>
<div id="addEmp"></div>
</form>
</body>
</html>