ZhiYeJianKang_PeiXun/Song.Site/Manage/Sys/Scripts/Purview/StateTree.js

146 lines
4.5 KiB
JavaScript
Raw Normal View History

2025-02-20 15:41:53 +08:00

//生成管理树
function Tree(area) {
if (area != null) Tree.Area = $(area);
if (Tree.InitNumber > 0) return;
//重新定义ico
for (var t in Tree.ico) Tree.ico[t] = "<img src=\"" + Tree.icoPath + Tree.ico[t] + "\" />";
Tree.InitNumber++;
}
//初始变量,每实例化一次,加一
Tree.InitNumber = 0;
//树形菜单所在区域
Tree.Area = "";
//图标的路径
Tree.icoPath = "/Manage/Images/tree/";
//图标
Tree.ico = {
root: 'root.gif',
folder: 'folder.gif',
folderOpen: 'folderopen.gif',
page: 'page.gif',
empty: 'empty.gif',
line: 'line.gif',
join: 'join.gif',
joinBottom: 'joinbottom.gif',
plus: 'plus.gif',
plusBottom: 'plusbottom.gif',
minus: 'minus.gif',
minusBottom: 'minusbottom.gif',
nlPlus: 'nlPlus.gif',
nlMinus: 'nlMinus.gif',
sel: 'Select.gif',
nosel: 'noSel.gif',
halfsel: 'halfSel.gif'
};
//处理点前图片的替换效果
//element:节点的元素
//img1:原图片
//img2:新图片
Tree.prototype.tranImg = function (el, img1, img2) {
if (el.attr("src").indexOf(img1) > 0)
el.attr("src", el.attr("src").replace(img1, img2));
else
if (el.attr("src").indexOf(img2) > 0)
el.attr("src", el.attr("src").replace(img2, img1));
}
//树形菜单事件,如打开折叠等
Tree.prototype.TreeEvent = function () {
var tree = new Tree();
//当点击节点前的图标时,如加减号文件夹图标
$("div[type='select']").click(function () {
Tree.SetSelectBox($(this));
});
$("div[type='text']").click(function () {
Tree.SetSelectBox($(this).prev());
});
}
//设置复选框
Tree.SetSelectBox = function (node) {
//复选框状态
var state = node.attr("state");
//是否有子结点
var ischild = node.attr("IsChilds") == "True" ? true : false;
var tree = new Tree();
if (state == "nosel") Tree.ToSelect(node);
if (state == "sel") Tree.ToNoSelect(node);
if (state == "half") Tree.ToSelect(node);
//如果有子节点,则设置所有下级本节点相同
if (ischild) Tree.SearchChild(node);
Tree.SearchParent(node);
}
//查找当前节点像的所有子级
Tree.SearchChild = function (box) {
var state = box.attr("state");
var panel = box.parent().next();
var sels = panel.find("div[type='select']");
var tree = new Tree();
if (state == "nosel") Tree.ToNoSelect(sels);
if (state == "sel") Tree.ToSelect(sels);
}
//查找当前节点项的所有父级
Tree.SearchParent = function (box) {
//取兄弟节点复选框状态
var panel = box.parent().parent();
//兄弟个数
var sels = panel.children("[type='nodeline']");
//alert(sels.size());
var selNum = 0;
var halfNum = 0;
sels.each(function () {
var thisBox = $(this).find("div[type='select']");
if (thisBox.attr("state") == "sel") selNum++;
if (thisBox.attr("state") == "half") halfNum++;
});
//取父节点复选框
var pbox = panel.prev("[type='nodeline']").find("div[type='select']");
if (pbox.length < 1) return;
var tree = new Tree();
//子节点全部选中
if (selNum == sels.size()) Tree.ToSelect(pbox);
//子节点全部没选中
if (selNum == 0 && halfNum == 0) {
Tree.ToNoSelect(pbox);
}
//子节点存在半选
if ((selNum > 0 && selNum < sels.size()) || halfNum != 0) {
Tree.ToHalfSelect(pbox);
}
Tree.SearchParent(pbox);
}
//设置为选中状态
Tree.ToSelect = function (box) {
box.find("img:first").attr("src", Tree.icoPath + "Select.gif");
box.attr("state", "sel");
}
//设置为非选中状态
Tree.ToNoSelect = function (box) {
box.find("img:first").attr("src", Tree.icoPath + "noSel.gif");
box.attr("state", "nosel");
}
//设置为半选中状态
Tree.ToHalfSelect = function (box) {
box.find("img:first").attr("src", Tree.icoPath + "halfsel.gif");
box.attr("state", "half");
}
//获取树的状态
function getTreeState() {
var sels = Tree.Area.find("div[type='select']");
//结果
var tmp = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
var id = $().getPara("id") == "" ? -1 : Number($().getPara("id"));
tmp += "<nodes type=\"" + $().getPara("type") + "\" memberId=\"" + id + "\">";
sels.each(function () {
var stat = $(this).attr("state");
if (stat != "nosel") {
var mmid = $(this).attr("nodeId");
tmp += "<node MM_Id=\"" + mmid + "\" state=\"" + stat + "\"/>";
}
});
tmp += "</nodes>";
//alert(tmp);
return tmp;
}