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.

473 lines
17 KiB
Plaintext

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="../../Scripts/jquery-1.11.0.min.js" type="text/javascript"></script>
<link href="../../../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />
<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 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;
}
.container-fluid {
display: flex;
justify-content: space-between;
align-items: center;
}
#back_btn {
margin-top: 15px;
margin-right: auto;
}
</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 == "")
rootNo = webUser.FK_Dept;
//多对多实体.
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"];
// alert(no + " - " + name);
global.selectedNodes.push({
"No": no,
"Name": name
});
});
// search
$("#TB_Key").on("keyup", function () {
var keyWord = $(this).val();
if (keyWord == "") {
$('#viewGrid_Panel').hide();
$('#tree_Panel').show();
return;
}
// var handler = new HttpHandler("BP.WF.HttpHandler.WF_Comm_RefFunc");
// handler.Domss();
// var gridUrl = replaceAll(mapExt.Tag1, "@Key", keyWord);
// tree
loadViewGrid(keyWord);
});
$('#viewGrid_Panel').hide();
$('#tree_Panel').show();
loadTree(rootNo, global);
});
//树形结构转换
var treeJson = [];
function createJsonToTree(jsonArray, parentNo) {
//获取ParentNo的数据
var items = $.grep(jsonArray, function (obj) {
return obj.No == parentNo;
});
if (items.length != 0) {
treeJson.push({
"id": items[0].No,
"text": items[0].Name,
"nodes": creatTreeChildern(jsonArray, items[0].No),
"state": { checked: checked, disabled: false }
});
} else {
for (var i = 0; i < jsonArray.length; i++) {
var data = jsonArray[i];
if (data.ParentNo.trim() == parentNo) {
var checked = false;
var selectedNodes = window.selectedNodes;
var sel = $.grep(selectedNodes, function (obj) {
return data.No == obj.No;
});
if (sel.length > 0) {
checked = true;
}
treeJson.push({
"id": data.No,
"text": data.Name,
"nodes": creatTreeChildern(jsonArray, data.No),
"state": { checked: checked, disabled: false }
});
}
}
}
function _(treeArray) {
$.each(treeArray, function (i, o) {
if ($.isArray(o.nodes)) {
if (o.nodes.length == 0) {
o.nodes = undefined;
} else {
_(o.nodes);
}
}
});
}
_(treeJson);
return treeJson;
}
function creatTreeChildern(jsonArray, parentNo) {
var childList = []
for (var i = 0; i < jsonArray.length; i++) {
var data = jsonArray[i];
if (data.ParentNo == parentNo) {
var checked = false;
var selectedNodes = window.selectedNodes;
var sel = $.grep(selectedNodes, function (obj) {
return data.No == obj.No;
});
if (sel.length > 0) {
checked = true;
}
childList.push({
"id": data.No,
"text": data.Name,
"nodes": creatTreeChildern(jsonArray, data.No),
"state": { checked: checked, disabled: false }
});
}
}
return childList;
}
function loadTree(rootNo, global) {
var ens = new Entities(GetQueryString("EnsOfM")); //BP.Port.Depts
ens.Retrieve("Idx");
var jsonTree = createJsonToTree(ens, rootNo);
$('#tree').treeview({
data: jsonTree, // 数据源
showCheckbox: true, //是否显示复选框
highlightSelected: false, //是否高亮选中
//nodeIcon: 'glyphicon glyphicon-user', //节点上的图标
nodeIcon: 'glyphicon',
emptyIcon: '', //没有子节点的节点图标
multiSelect: false, //多选
onNodeChecked: function (event, node) {
var selectNodes = getChildNodeIdArr(node, true); //获取所有子节点
//if (selectNodes) { //子节点不为空,则选中所有子节点
// $('#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) { //子节点不为空,则取消选中所有子节点
$('#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();
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);
}
}
});
}
//查询列表
function loadViewGrid(gridUrl) {
var global = window;
var columns = mapExt.Tag;
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: !mapExt.ShowCheckBox,
uniqueId: "No",
columns: searchTableColumns
});
var json = DBAccess.RunDBSrc(gridUrl, mapExt.DBType, mapExt.FK_DBSrc); //执行url返回json.
if ($.isArray(json)) {
$('#tree_Panel').hide();
$('#viewGrid_Panel').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]);
}
}
}
} else {
ts.push(node.nodeId);
}
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) {
var pkval = GetPKVal();
var dot2EnName = GetQueryString("Dot2DotEnName");
var AttrOfOneInMM = GetQueryString("AttrOfOneInMM");
for (var i = 0; i < selectNodes.length; i++) {
var en = new Entity(dot2EnName);
en[AttrOfOneInMM] = pkval;
var refVal = null;
if (flag == 0)
refVal = selectNodes[i].id;
else
refVal = $('#tree').treeview('getNode', selectNodes[i]).id;
en[GetQueryString("AttrOfMInMM")] = refVal;
en.Delete(AttrOfOneInMM, pkval, GetQueryString("AttrOfMInMM"), refVal);
}
}
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("尚未实现.");
}
//判断是否有上一路径;
function IsBack() {
if (document.referrer.includes("EmpDepts.htm")) {
window.history.go(-1);
} else {
window.history.go(0);
}
}
</script>
</head>
<body>
<div class="container-fluid" style=" width:100%;">
<button id="back_btn" onclick="IsBack()">返回</button>
<div class="pull-center search search-margin" style="text-align:right">
<input type="button" value="全选" id="Cancel" onclick="CheckAll()" />
<input type="button" value="全不选" id="Button1" onclick="UnCheckAll()" />
</div>
</div>
<div class="row row-margin-top">
<div id="tree"></div>
</div>
<!--</div>-->
</body>
</html>