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.
555 lines
24 KiB
Plaintext
555 lines
24 KiB
Plaintext
<!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>
|
|
<link href="../Scripts/bootstrap/css/bootstrap.css" rel="stylesheet" />
|
|
<link href="../Scripts/bootstrap/css/components-rounded.css" rel="stylesheet" />
|
|
<link href="../Scripts/bootstrap/css/font-awesome.css" rel="stylesheet" />
|
|
<link href="../Scripts/bootstrap/css/themes/default/style.min.css" rel="stylesheet" />
|
|
<script type="text/javascript" src="../Scripts/bootstrap/js/jquery.min.js"></script>
|
|
<script type="text/javascript" src="../Scripts/bootstrap/js/bootstrap.min.js"></script>
|
|
<script type="text/javascript" src="../Scripts/commonYangYH.js"></script>
|
|
<script src="../Scripts/QueryString.js" type="text/javascript"></script>
|
|
<script src="../Scripts/bootstrap/js/jquery.cokie.min.js" type="text/javascript" ></script>
|
|
<script type="text/javascript" src="../Scripts/config.js" ></script>
|
|
<script type="text/javascript" src="../Scripts/bootstrap/js/jstree.js"></script>
|
|
<link href="../../DataUser/Style/ccbpm.css" rel="Stylesheet" />
|
|
<!--
|
|
杨玉慧.
|
|
|
|
1. 初始化的标记是 ?DoType=Accepter_Init&FK_Node=xxxx&ToNode=0&WorkID=xxxxx. 参数: WorkID
|
|
返回的是 节点列表 Nodes, 部门列表 Depts, 人员列表 Emps
|
|
|
|
2, 用户选择一个节点,标记是 DoType=Accepter_Save&FK_Node=xxx&WorkID=xxx&ToNode=xxxx&SelectEmps=zhangsan,lisi.
|
|
返回的是: 保存结果.
|
|
-->
|
|
<style type="text/css">
|
|
* {
|
|
list-style: none;
|
|
text-align: left;
|
|
}
|
|
|
|
body .table tbody tr td {
|
|
line-height: 18px;
|
|
}
|
|
|
|
.portlet-body,.portlet-title {
|
|
background: #f4f9ff !important;
|
|
border-bottom: 0px;
|
|
}
|
|
|
|
.customthr tr:nth-child(2n) {
|
|
background: #d4e6fe;
|
|
}
|
|
|
|
.customthr tr:nth-child(2n+1) {
|
|
background: #f4f9ff;
|
|
}
|
|
|
|
.customthr thead tr {
|
|
background: #d4e6fe !important;
|
|
}
|
|
|
|
.btn {
|
|
background: #2884fa !important;
|
|
border-radius: 20px !important;
|
|
color: white !important;
|
|
padding: 4px 17px !important;
|
|
}
|
|
|
|
input[type=text], select {
|
|
border-radius: 15px !important;
|
|
border: #2884fa 1px solid !important;
|
|
margin: 8px 0px !important;
|
|
line-height: 25px;
|
|
padding-left: 6px;
|
|
}
|
|
|
|
#btnSearch {
|
|
height: 30px;
|
|
border: none;
|
|
border-radius: 20px;
|
|
padding: 6px 12px;
|
|
margin-bottom: 0;
|
|
font-size: 14px;
|
|
background: #2884fa !important;
|
|
color: #fff;
|
|
}
|
|
|
|
#txbSearchVal {
|
|
font-size: 14px;
|
|
}
|
|
/*#poptable {
|
|
display: none;
|
|
}*/
|
|
#test {
|
|
}
|
|
|
|
.form_tree {
|
|
background: #f4f9ff;
|
|
}
|
|
|
|
.form_tree #orgTxt {
|
|
border-radius: 15px 0px 0px 15px !important;
|
|
margin: 0px !important;
|
|
/*border:#2884fa 1px solid;*/
|
|
}
|
|
|
|
.form_tree .input-group-addon {
|
|
border-radius: 0px 15px 15px 0px !important;
|
|
/*broder:#2884fa 1px solid;*/
|
|
}
|
|
|
|
#groupTable #dt ul {
|
|
/*background: #f4f9ff;*/
|
|
font-weight: normal;
|
|
background: #d4e6fe;
|
|
}
|
|
|
|
#groupTable #dt > li {
|
|
font-weight: bold;
|
|
}
|
|
#searchS {
|
|
overflow:hidden;
|
|
}
|
|
#searchS div{
|
|
height:40px;
|
|
line-height:40px;
|
|
text-align:left;
|
|
float: left;
|
|
}
|
|
</style>
|
|
<script type="text/javascript">
|
|
|
|
var doType = GetQueryString("DoType");
|
|
$(function () {
|
|
|
|
if (doType == null || doType == "")
|
|
doType = "Accepter_Save";
|
|
|
|
doType = "Accepter_Save";
|
|
if (doType == "Accepter_Send") {
|
|
$("#btnOk").text('发送');
|
|
} else {
|
|
$("#btnOk").text('保存');
|
|
}
|
|
|
|
dtTable();
|
|
|
|
initSelectEmpModal();
|
|
|
|
$("#groupTable").height($(window).height() - 80 + "px");
|
|
|
|
});
|
|
//配置数据
|
|
var firstLoad = true;
|
|
var toNode;
|
|
var pageUrlParam = { fk_node: GetQueryString("FK_Node"), WorkID: GetQueryString("WorkID"), FK_Flow: GetQueryString("FK_Flow"), toNode: GetQueryString("ToNode") != undefined ? GetQueryString("ToNode") : 0 };
|
|
|
|
function dtTable() {
|
|
|
|
if (pageUrlParam.toNode == 0) {
|
|
if (firstLoad) {
|
|
toNode = 0;
|
|
} else {
|
|
toNode = $("#searchS1 option:selected").val()
|
|
}
|
|
} else {
|
|
$("#searchS").css('display', 'none');
|
|
toNode = pageUrlParam.toNode;
|
|
}
|
|
|
|
$.ajax({
|
|
type: 'post',
|
|
async: true,
|
|
url: Handler + "?DoType=Accepter_Init&FK_Node=" + pageUrlParam.fk_node + '&WorkID=' +
|
|
pageUrlParam.WorkID + '&m=' + Math.random(),
|
|
dataType: 'html',
|
|
data: { ToNode: toNode },
|
|
success: function (data) {
|
|
|
|
|
|
if (data.indexOf('err@') == 0) {
|
|
alert(data);
|
|
return;
|
|
}
|
|
|
|
var initData = {};
|
|
if (data == null && data == undefined) {
|
|
alert("Accepter_Init&FK_Node=" + pageUrlParam.fk_node + '&WorkID=' +
|
|
pageUrlParam.WorkID + "未获取到数据" + data);
|
|
return;
|
|
}
|
|
|
|
try {
|
|
initData = cceval('(' + data + ')');
|
|
}
|
|
catch (err) {
|
|
alert("转换JSON 失败" + err + data);
|
|
return;
|
|
}
|
|
|
|
var selDataArr = initData.Nodes;
|
|
var dtgArr = initData.Depts;
|
|
var dteArr = initData.Emps;
|
|
|
|
//增加了: 默认选择接收人,与强制选择接收人的数据源,让其在打开的时候,可以把默认值选择上.
|
|
// 有可能值是空的.
|
|
var defaultSelected = initData.DefaultSelected;
|
|
var forceSelected = initData.ForceSelected;
|
|
|
|
//初始化到达节点数据
|
|
if (firstLoad == true) {
|
|
firstLoad = false;
|
|
var html = '';
|
|
|
|
$.each(selDataArr, function (i, obje) {
|
|
html += '<option value="' + obje.No + '">' + obje.Name + '</option>';
|
|
});
|
|
|
|
$("#searchS1").html("");
|
|
$("#searchS1").html(html);
|
|
|
|
if (pageUrlParam.toNode == 0) {
|
|
$("#searchS1 option:nth(0)").attr("selected", "selected");
|
|
} else {
|
|
$("#searchS1 option[value=" + pageUrlParam.toNode + "]").attr("selected", "selected");
|
|
}
|
|
}
|
|
|
|
var selectNodeVal = $('#searchS1').val();
|
|
var selectNode = $.grep(selDataArr, function (value) {
|
|
return value.NO == selectNodeVal;
|
|
});
|
|
|
|
//通过SQL 和树的时候可以显示为树.
|
|
if (selectNode[0].SelectorDBShowWay == "Tree" && selectNode[0].SelectorModel == "SQL") {
|
|
//树展示
|
|
$('#jstree').show();
|
|
var jsTreedata = [];
|
|
$.each(dtgArr, function (i, obj) {
|
|
//jsTreedata.push({ "id": obj.No, "parent": (obj.ParentNo == "0" ? '#' : obj.ParentNo), "text": obj.Name,"data":obj });
|
|
// 2016-12-05 by tianbaoyan 人员选择器默认展开 因为数据量通过sql过滤不是很大
|
|
jsTreedata.push({ "id": obj.No, "parent": (obj.ParentNo == "0" ? '#' : obj.ParentNo), "text": obj.Name, "data": obj, state: { opened: true} });
|
|
});
|
|
|
|
$.each(dteArr, function (i, obj) {
|
|
var disabled = false;
|
|
var selected = false;
|
|
//默认勾选
|
|
if (defaultSelected) {
|
|
for (var j = 0; j < defaultSelected.length; j++) {
|
|
if (obj.NO == defaultSelected[j].FK_Emp) {
|
|
selected = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
//强制勾选
|
|
if (forceSelected) {
|
|
for (var k = 0; k < forceSelected.length; k++) {
|
|
if (obj.NO == forceSelected[k].FK_Emp) {
|
|
selected = true;
|
|
disabled = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
jsTreedata.push({ children: {}, "id": "user" + obj.No, "parent": obj.FK_Dept, "text": obj.Name, "icon": "jstree-file", "data": obj, "state": { "disabled": disabled, "selected": selected} });
|
|
});
|
|
|
|
//没有父节点的给到根节点
|
|
for (var i = 0; i < jsTreedata.length; i++) {
|
|
if (jsTreedata[i].parent != '#') {
|
|
var pNode = $.grep(jsTreedata, function (value) {
|
|
return value.id == jsTreedata[i].parent;
|
|
});
|
|
if (pNode.length == 0) {
|
|
jsTreedata[i].parent = '#'
|
|
}
|
|
}
|
|
}
|
|
|
|
$('#jstree').jstree({
|
|
plugins: [
|
|
"checkbox",
|
|
//"state",
|
|
//"conditionalselect"
|
|
],
|
|
'core': {
|
|
"multiple": true,
|
|
'data': jsTreedata
|
|
}
|
|
})
|
|
$(".wait").hide();
|
|
$("section").show();
|
|
return;
|
|
}
|
|
if (selectNode[0].SELECTORMODEL == "GenerUserSelecter") {//通用人员选择
|
|
$('#selectEmpsDiv').css('display', 'block');
|
|
$('#groupTable').css('display', 'none');
|
|
|
|
$(".wait").hide();
|
|
$("section").show();
|
|
return;
|
|
} else {//其它均显示成分组
|
|
$('#groupTable').css('display', 'block');
|
|
$('#selectEmpsDiv').css('display', 'none');
|
|
}
|
|
window.fkName = '';
|
|
if (dteArr != undefined && dteArr.length > 0) {
|
|
for (var pro in dteArr[0]) {
|
|
if (pro.toLowerCase() != "no" && pro.toLowerCase() != "name") {
|
|
fkName = pro;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
var ultdg = '';
|
|
var ultde = '';
|
|
var ultdes = '';
|
|
var s = "";
|
|
$.each(dtgArr, function (i, obje) {
|
|
for (var k = 0; k < dteArr.length; k++) {
|
|
if (obje.No == dteArr[k][fkName]) {
|
|
ultde +=
|
|
"<li data-data='true' style='float:left;margin-right:10px;' class='lim'><input type='checkbox' style='margin: 5px 5px;'/>" + dteArr[k].Name + "</li>";
|
|
}
|
|
}
|
|
ultdg += "<li data-data='true' class='lif' name='" + obje.No + "'><input type='checkbox' class='ulm_head' style='margin: 5px 0px;'/>" + obje.Name + "<ul style='overflow:hidden;margin:10px 5px 10px 0px;'>" +
|
|
ultde + "</ul></li>";
|
|
ultde = "";
|
|
});
|
|
//
|
|
var groupFileds = $.grep(dteArr, function (value) {
|
|
return ($('[name="' + value.FK_Dept + '"]').length != "0");
|
|
});
|
|
|
|
$.each(groupFileds, function (j, objj) {
|
|
ultdes += "<li data-data='true' style='float:left;margin-right:10px;' class='lim'><input type='checkbox' style='margin: 5px 5px;'/>" + objj.Name + "</li>";
|
|
});
|
|
s = "<li class='lif'><input type='checkbox' class='ulm_head' style='margin: 5px 0px;'/>其他<ul style='overflow:hidden;margin:10px 5px 10px 0px;'>" +
|
|
ultdes + "</ul></li>";
|
|
ultdg += s;
|
|
|
|
//
|
|
$("#groupTable #dt").html(ultdg);
|
|
$(".wait").hide();
|
|
$("section").show();
|
|
$(".ulm_head").click(function () {
|
|
if (this.checked) {
|
|
$(this).parent("li").children("ul").find("input").prop("checked", "checked");
|
|
} else {
|
|
$(this).parent("li").children("ul").children("li").children("input").removeAttr("checked", "checked");
|
|
}
|
|
});
|
|
$(".ulm_head").click(function () {
|
|
if (this.checked) {
|
|
$(this).parent("li").children("ul").find("input").prop("checked", "checked");
|
|
} else {
|
|
$(this).parent("li").children("ul").children("li").children("input").removeAttr("checked", "checked");
|
|
}
|
|
});
|
|
//实体绑定
|
|
$.each(dteArr, function (k, obj) {
|
|
var lifs = $("#groupTable #dt .lif");
|
|
for (var i = 0; i < lifs.length; i++) {
|
|
if ($(lifs[i]).attr("name") == obj[fkName]) {
|
|
var limData = $(lifs[i]).find(".lim");
|
|
for (var m = 0; m < limData.length; m++) {
|
|
var lim = limData[m];
|
|
if ($(lim).text() == obj.NAME && $(lim) != undefined && $(lim).data != undefined && $(lim).data() != undefined && $(lim).data().data == true) {
|
|
$(lim).data().data = obj;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
});
|
|
}
|
|
function getSelectEmps() {
|
|
if ($('#groupTable').css('display') != 'none') {//分组
|
|
var checked = $('input:checked');
|
|
var selectedIdArrm = [];
|
|
for (var i = 0; i < checked.parent(".lim").length; i++) {
|
|
selectedIdArrm.push($(checked.parent(".lim")[i]).data().data.NO);
|
|
}
|
|
return selectedIdArrm.join(';');
|
|
} else if ($('#jstree').css('display') != 'none') {//树和BySql
|
|
//获取树选中的值
|
|
var instance = $('#jstree').jstree(true);
|
|
var selectedIdArr = instance.get_selected();
|
|
var selectedNodes = [];
|
|
var nodeDataArrs = [];
|
|
var noArr = [];
|
|
$.each(selectedIdArr, function (i, selectedId) {
|
|
selectedNodes.push(instance.get_node(selectedId));
|
|
});
|
|
$.each(selectedNodes, function (i, selectedNode) {
|
|
if (selectedNodes[i].icon != true) {
|
|
nodeDataArrs.push(selectedNode.data);
|
|
}
|
|
});
|
|
|
|
$.each(nodeDataArrs, function (i, nodeData) {
|
|
noArr.push(nodeData.NO);
|
|
});
|
|
return noArr.join(';');
|
|
} else {//通用人员选择器
|
|
return frames["iframeSelectEmpsForm"].window.returnVal.NO;
|
|
var checked = $('input:checked');
|
|
var selectedIdArrm = [];
|
|
for (var i = 0; i < checked.parent(".lim").length; i++) {
|
|
selectedIdArrm.push($(checked.parent(".lim")[i]).data().data.NO);
|
|
}
|
|
return selectedIdArrm.join(';');
|
|
}
|
|
}
|
|
|
|
//确定【选择接收人并发送】 / 保存. Accepter_Save Accepter_Send
|
|
function SendNode() {
|
|
|
|
//Accepter_Save&FK_Node=xxx&WorkID=xxx&ToNode=xxxx&SelectEmps=zhangsan,lisi
|
|
|
|
var empNos = getSelectEmps();
|
|
if (empNos == '' || empNos == null) {
|
|
alert('请选择人员.');
|
|
return;
|
|
}
|
|
|
|
if (pageUrlParam.toNode == 0) {
|
|
toNode = $("#searchS1 option:selected").val();
|
|
} else {
|
|
toNode = pageUrlParam.toNode;
|
|
}
|
|
|
|
$.ajax({
|
|
type: 'post',
|
|
async: true,
|
|
data: { "FK_Flow": pageUrlParam.FK_Flow, "WorkID": pageUrlParam.WorkID, ToNode: toNode, FK_Node: pageUrlParam.fk_node },
|
|
url: Handler + "?DoType=" + doType + "&m=" + Math.random() + "&SelectEmps=" + encodeURI(empNos) + "&FK_Flow=" + pageUrlParam.FK_Flow + "&WorkID=" + pageUrlParam.WorkID,
|
|
dataType: 'html',
|
|
success: function (data) {
|
|
// alert(data);
|
|
if (data.indexOf('err@') == 0) {
|
|
alert(data);
|
|
return;
|
|
}
|
|
|
|
if ("Accepter_Save" == doType) {
|
|
if (window.parent != null && window.parent.returnWorkWindowClose != null) {
|
|
window.parent.returnWorkWindowClose(data);
|
|
} else if (window.opener != undefined && window.opener.returnWorkWindowClose != undefined) {
|
|
window.opener.returnWorkWindowClose(data);
|
|
} else if (window.parent != undefined && window.parent.AccepterHtmlSave != undefined) {
|
|
//表单树使用
|
|
window.parent.AccepterHtmlSave(data);
|
|
} else {
|
|
$('body').append($('<div>' + data + '</div>'));
|
|
$('#btnOk').attr('disabled', true);
|
|
}
|
|
//alert('保存成功...');
|
|
window.close();
|
|
return;
|
|
}
|
|
|
|
|
|
if (window.parent != null && window.parent.returnWorkWindowClose != null) {
|
|
window.parent.returnWorkWindowClose(data);
|
|
} else if (window.opener != undefined && window.opener.returnWorkWindowClose != undefined) {
|
|
window.opener.returnWorkWindowClose(data);
|
|
} else {
|
|
$('body').append($('<div>' + data + '</div>'));
|
|
$('#btnOk').attr('disabled', true);
|
|
}
|
|
}
|
|
});
|
|
$(".foot").hide();
|
|
}
|
|
|
|
//取消【选择接收人并发送】
|
|
function Close() {
|
|
if (window.parent != null && window.parent.returnWorkWindowClose != null) {
|
|
window.parent.returnWorkWindowClose("取消");
|
|
|
|
window.close();
|
|
} else if (window.opener != undefined && window.opener.returnWorkWindowClose != undefined) {
|
|
window.opener.returnWorkWindowClose("取消");
|
|
|
|
window.close();
|
|
} else {
|
|
window.close();
|
|
}
|
|
}
|
|
//初始化人员选择窗口
|
|
function initSelectEmpModal() {
|
|
var selectEmpModalHtml = '<div class="modal fade" id="selectEmpsModal" style="width: 80%;margin: 40px auto;">' +
|
|
'<div class="modal-dialog" style="margin: 0px;">'
|
|
+ '<div class="modal-content" style="border-radius:0px;width:700px;">'
|
|
+ '<div class="modal-header">'
|
|
+ '<button type="button" class="close" style="color:white;opacity:1;" data-dismiss="modal" aria-hidden="true">×</button>'
|
|
+ '<h4 class="modal-title">选择人员</h4>'
|
|
+ '</div>'
|
|
+ '<div class="modal-body">'
|
|
+ '<iframe style="width:100%;border:0px;height:400px;" id="iframeSelectEmpsForm" name="iframeSelectEmpsForm"></iframe>'
|
|
+ '</div>'
|
|
+ '</div><!-- /.modal-content -->'
|
|
+ '</div><!-- /.modal-dialog -->'
|
|
+ '</div>';
|
|
|
|
$('body').append($(selectEmpModalHtml));
|
|
|
|
$('#BtnSelectEmps').bind('click', function () {
|
|
var dept = getQueryStringByNameFromUrl("?" + $.cookie('CCS'), "FK_Dept");
|
|
if (dept == null || dept == '' || dept == undefined) {
|
|
dept = $.cookie('FK_Dept');
|
|
}
|
|
$('#iframeSelectEmpsForm').attr('src', "SelectEmps.htm?FK_Dept=" + dept + "&s=" + Math.random() + "&IsSelectMore=1");
|
|
$('#selectEmpsModal').modal().show();
|
|
});
|
|
}
|
|
|
|
//设置选中的人员
|
|
function selectEmpsWindowClose(data) {
|
|
$('#selectEmpsModal').modal('hide');
|
|
if (data == '取消') {
|
|
return;
|
|
} else {
|
|
$('#ToEmp').val(frames["iframeSelectEmpsForm"].window.returnVal.NAME);
|
|
}
|
|
}
|
|
|
|
function Back() {
|
|
window.history.go(-1);
|
|
}
|
|
</script>
|
|
</head>
|
|
<body >
|
|
<section style="display: none;">
|
|
<div id="searchS">
|
|
请选择要到达到的节点:<select id="searchS1" onclick="dtTable()" style="width: 76%;"></select>
|
|
</div>
|
|
|
|
<div id="groupTable" style="display: none; overflow-y: auto; text-align: left;">
|
|
<ul id="dt" data-data="true" style="padding-left: 0px;"></ul>
|
|
</div>
|
|
<div id="jstree" style="display: none; overflow-y: auto; text-align: left;"></div>
|
|
<div id="selectEmpsDiv" style="display: none;">
|
|
<div style="margin: 20px auto;">
|
|
请选择接受人:
|
|
<input type="button" id="BtnSelectEmps" value='选择接受人' style="float: right; height: 27px;"/>
|
|
<textarea id="ToEmp" name="ToEmp" cols="20" rows="3" style="height: 120px; resize: none;"></textarea>
|
|
</div>
|
|
</div>
|
|
<div style="position: fixed; bottom: 0px; right: 0px;" class="foot">
|
|
<!--<button id="btnSaveAndClose" class="btn btn-info" onclick="SendNode('Accepter_Save')">确定</button>-->
|
|
<button id="btnOk" class="btn btn-info" onclick="SendNode()" >发送</button>
|
|
<button id="btnCancel" class="btn btn-info" onclick="Close()">取消</button>
|
|
</div>
|
|
</section>
|
|
</body>
|
|
</html>
|