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.

446 lines
17 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>
<html>
<head>
<title></title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="../../../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/jquery-1.11.0.min.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 src="../../Scripts/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<link href="../../Scripts/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="../../Scripts/bootstrap/css/font-awesome.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/bootstrap/bootstrap-table/src/bootstrap-table.js" type="text/javascript"></script>
<link href="../../Scripts/bootstrap/bootstrap-table/src/bootstrap-table.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/bootstrap/bootstrap-table/src/locale/bootstrap-table-zh-CN.js" type="text/javascript"></script>
<script src="../../Scripts/bootstrap/bootstrap-treeview/src/js/bootstrap-treeview.js" type="text/javascript"></script>
<link href="../../Scripts/bootstrap/bootstrap-treeview/src/css/bootstrap-treeview.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.row-margin-top {
margin-top: 20px;
}
.search-margin {
margin-top: 15px;
}
</style>
<script type="text/javascript">
var mapExt = null;
var rootNo;
var webUser = new WebUser();
$(function () {
//global
var global = window;
global.selectedNodes = [];
global.selectedRows = [];
var pkval = GetQueryString("PKVal");
var tip = "请输入关键字"; //mapExt.GetPara("SearchTip");
$("#TB_Key").attr("placeholder", tip); //设置查询提示.
//跟节点编号.
rootNo = GetQueryString("RootNo");
if (rootNo == "@WebUser.FK_Dept")
rootNo = webUser.FK_Dept;
if (webUser.CCBPMRunModel == 2)
rootNo = webUser.OrgNo;
if (rootNo == null || rootNo == undefined || rootNo == "")
rootNo = "0";
//多对多实体.
var dot2DotEnsName = new Entities(GetQueryString("Dot2DotEnsName"));
var dot2DotEnName = new Entities(GetQueryString("Dot2DotEnName"));
dot2DotEnsName.Retrieve(GetQueryString("AttrOfOneInMM"), pkval);
$.each(dot2DotEnsName, function (i, o) {
var enDot = new Entity(dot2DotEnName, o);
var no = enDot[GetQueryString("AttrOfMInMM")];
var name = enDot[GetQueryString("AttrOfMInMM") + "Text"];
global.selectedNodes.push({
"No": no,
"Name": name
});
});
$('#viewGrid').hide();
$('#tree').show();
loadTree(rootNo, global);
});
function Search() {
var keyWord = $("#TB_Key").val();
if (keyWord == "") {
$('#viewGrid').hide();
$('#tree').show();
return;
}
loadSelectGridByKey(keyWord);
}
//树形结构转换
function findChildren(jsonArray, parentNo) {
var appendToTree = function (treeToAppend, child) {
$.each(treeToAppend, function (i, o) {
if (o.id == child.ParentNo) {
var checked = false;
var selectedNodes = window.selectedNodes;
var sel = $.grep(selectedNodes, function (obj) {
return child.No == obj.No;
});
if (sel.length > 0) {
checked = true;
}
o.nodes.push({
"id": child.No,
"text": child.Name,
"nodes": [],
"state": { checked: checked, disabled: checked }
});
} else {
appendToTree(o.nodes, child);
}
});
};
var jsonTree = [];
if (jsonArray.length>0 && typeof parentNo !== "undefined") {
//如果parentNo不为0则增加parentNo的部门数据
if (parentNo != 0 && parentNo == rootNo) {
$.each(jsonArray, function (i, item) {
if (item.No == parentNo) {
jsonTree.push({
"id": parentNo,
"text": item.Name,
"nodes": []
});
return;
}
});
}
$.each(jsonArray, function (i, o) {
if (o.ParentNo == parentNo) {
var checked = false;
var selectedNodes = window.selectedNodes;
var sel = $.grep(selectedNodes, function (obj) {
return o.No == obj.No;
});
if (sel.length > 0) {
checked = true;
}
jsonTree.push({
"id": o.No,
"text": o.Name,
"nodes": [],
"state": { checked: checked }
});
} else {
appendToTree(jsonTree, o);
}
});
}
function _(treeArray) {
$.each(treeArray, function (i, o) {
if ($.isArray(o.nodes)) {
if (o.nodes.length == 0) {
//o.nodes = undefined;
} else {
_(o.nodes);
}
}
});
}
_(jsonTree);
return jsonTree;
}
function loadTree(rootNo, global) {
var ens = new Entities(GetQueryString("EnsOfM")); //BP.Port.Depts
if (rootNo == 0)
ens.Retrieve("ParentNo", rootNo);
else
ens.Retrieve("No", rootNo);
//ens.RetrieveAll();
var jsonTree = findChildren(ens, rootNo);
$('#tree').treeview({
data: jsonTree, // 数据源
showCheckbox: true, //是否显示复选框
highlightSelected: false, //是否高亮选中
nodeIcon: 'glyphicon',
emptyIcon: '', //没有子节点的节点图标
multiSelect: false, //多选
onNodeChecked: function (event, node) {
var selectNodes = getChildNodeIdArr(node, true); //获取所有子节点
if (selectNodes.length > 0) { //子节点不为空,则选中所有子节点
$('#tree').treeview('checkNode', [selectNodes, { silent: true }]);
saveCheckNodes(selectNodes, 1);
}
var en = new Entity(GetQueryString("Dot2DotEnName"));
en[GetQueryString("AttrOfOneInMM")] = GetPKVal();
en[GetQueryString("AttrOfMInMM")] = node.id;
en.Save();
// var parentNode = $("#tree").treeview("getNode", node.parentId);
//setParentNodeCheck(parentNode);
},
onNodeUnchecked: function (event, node) {
var selectNodes = getChildNodeIdArr(node, false); //获取所有子节点
if (selectNodes.length > 0) { //子节点不为空,则取消选中所有子节点
$('#tree').treeview('uncheckNode', [selectNodes, { silent: true }]);
deleteCheckNodes(selectNodes, 1);
}
var en = new Entity(GetQueryString("Dot2DotEnName"));
en[GetQueryString("AttrOfOneInMM")] = GetPKVal();
en[GetQueryString("AttrOfMInMM")] = node.id;
en.Delete(GetQueryString("AttrOfOneInMM"), GetPKVal(), GetQueryString("AttrOfMInMM"), node.id);
//$('#checkable-output').prepend('<p>' + node.text + ' was unchecked</p>');
},
onNodeSelected: function (event, node) {
var tree = $('#tree');
if (node.state.expanded) {
//处于展开状态则折叠
tree.treeview('collapseNode', node.nodeId);
} else {
//展开
tree.treeview('expandNode', node.nodeId);
}
},
onNodeExpanded: function (event, data) {
var ens = new Entities(GetQueryString("EnsOfM")); //BP.Port.Depts
ens.Retrieve("ParentNo", data.id);
var jsonTree = findChildren(ens, data.id, global.lazyLoad);
$("#tree").treeview("deleteChildrenNode", data.nodeId); //删除当前节点下的所有子节点
$("#tree").treeview("addNode", [data.nodeId, { node: jsonTree, silent: true }]);
}
});
}
//按照关键字加载数据.
function loadSelectGridByKey(key) {
var hander = new HttpHandler("BP.WF.HttpHandler.WF_CommEntity");
hander.AddUrlData();
hander.AddPara("Key", key.replace(/'/g, ''));
var json = hander.DoMethodReturnJSON("Branches_SearchByKey");
loadViewGrid(json);
}
//查询列表
function loadViewGrid(json) {
var columns ;
var searchTableColumns = [{
field: "_checkbox",
checkbox: true,
formatter: function (value, row, index) {
if (row.checked) {
return {
"checked": true,
"disabled": row.disabled
}
}
}
}];
//显示列的中文名称.
if (typeof columns == "string") {
$.each(columns.split(","), function (i, o) {
var exp = o.split("=");
var field;
var title;
if (exp.length == 1) {
field = title = exp[0];
} else if (exp.length == 2) {
field = exp[0];
title = exp[1];
}
if (!isLegalName(field)) {
return true;
}
searchTableColumns.push({
field: field,
title: title
});
});
} else {
// by default
searchTableColumns.push({
field: 'No',
title: '编号'
});
searchTableColumns.push({
field: 'Name',
title: '名称'
});
}
// grid
$('#viewGrid').bootstrapTable({
cache: false,
minimumCountColumns: 2,
clickToSelect: true,
sortable: false,
maintainSelected: true,
singleSelect: false,
uniqueId: "No",
columns: searchTableColumns
});
if ($.isArray(json)) {
$('#tree').hide();
$('#viewGrid').show();
var selectedRows = window.selectedNodes;
if ($.isArray(selectedRows)) {
$.each(json, function (i, o) {
var sel = $.grep(selectedRows, function (obj) {
return o.No == obj.No;
});
if (sel.length > 0) {
o.checked = true;
//多选时才需要禁用已选
//if (mapExt.ShowCheckBox == true) {
// o.disabled = true;
//}
}
});
}
$('#viewGrid').bootstrapTable("load", json);
}
}
function isLegalName(name) {
if (name == false) {
return false;
}
return name.match(/^[a-zA-Z\$_][a-zA-Z\d\$_]*$/);
}
function getChildNodeIdArr(node, checked) {
var ts = [];
if (node.nodes) {
for (x in node.nodes) {
ts.push(node.nodes[x].nodeId);
if (node.nodes[x].nodes) {
var getNodeDieDai = getChildNodeIdArr(node.nodes[x]);
for (j in getNodeDieDai) {
ts.push(getNodeDieDai[j]);
}
}
}
}
return ts;
}
function setParentNodeCheck(node) {
var parentNode = $("#tree").treeview("getNode", node.parentId);
if (parentNode.nodes) {
var checkedCount = 0;
for (x in parentNode.nodes) {
if (parentNode.nodes[x].state.checked) {
checkedCount++;
} else {
break;
}
}
if (checkedCount === parentNode.nodes.length) {
var en = new Entity(GetQueryString("Dot2DotEnName"));
en[GetQueryString("AttrOfOneInMM")] = GetPKVal();
en[GetQueryString("AttrOfMInMM")] = parentNode.nodeId;
en.Save();
$("#tree").treeview("checkNode", parentNode.nodeId);
setParentNodeCheck(parentNode);
}
}
}
var en = null;
function saveCheckNodes(selectNodes, flag) {
for (var i = 0; i < selectNodes.length; i++) {
en = new Entity(GetQueryString("Dot2DotEnName"));
en[GetQueryString("AttrOfOneInMM")] = GetPKVal();
if (flag == 0)
en[GetQueryString("AttrOfMInMM")] = selectNodes[i].id;
else
en[GetQueryString("AttrOfMInMM")] = $('#tree').treeview('getNode', selectNodes[i]).id;
en.Save();
}
}
function deleteCheckNodes(selectNodes, flag) {
for (var i = 0; i < selectNodes.length; i++) {
var en = new Entity(GetQueryString("Dot2DotEnName"));
en[GetQueryString("AttrOfOneInMM")] = GetPKVal();
if (flag == 0)
en[GetQueryString("AttrOfMInMM")] = selectNodes[i].id;
else
en[GetQueryString("AttrOfMInMM")] = $('#tree').treeview('getNode', selectNodes[i]).id;
en.Delete(GetQueryString("AttrOfOneInMM"), GetPKVal(), GetQueryString("AttrOfMInMM"), en[GetQueryString("AttrOfMInMM")]);
}
}
function CheckAll() {
$('#tree').treeview('checkAll', { silent: true });
var selectNodes = $('#tree').treeview('getChecked');
if (selectNodes) { //子节点不为空,则选中所有子节点
saveCheckNodes(selectNodes, 0);
}
}
function UnCheckAll() {
$('#tree').treeview('uncheckAll', { silent: true });
var selectNodes = $('#tree').treeview('getUnselected');
if (selectNodes) { //子节点不为空,则取消选中所有子节点
deleteCheckNodes(selectNodes, 0);
}
}
function Close() {
alert("尚未实现.");
}
</script>
</head>
<body>
<input class="form-control" style="display:inline;width:auto" type="text" placeholder="" id="TB_Key">
<input type="button" value="查询" id="Cancel" onclick="Search()" />
<input type="button" value="全选" id="Cancel" onclick="CheckAll()" />
<input type="button" value="全不选" id="Button1" onclick="UnCheckAll()" />
<div class="row row-margin-top" style="width:96%;margin-left:10px">
<div id="tree" style="overflow-y:auto; overflow-x:auto; width:auto; height:480px;"></div>
<table id="viewGrid"></table>
</div>
</body>
</html>