ZhiYeJianKang_PeiXun/Song.Site/Manage/Panel/Scripts/TreePanel.js

257 lines
9.3 KiB
JavaScript
Raw Normal View History

2025-02-20 15:41:53 +08:00
/*!
* 菜单树生成
* 用于管理页面左侧树形菜单
* 功能描述
* 1首先生成最左侧的选项卡
* 2再生成相关的菜单树
*
*
* 宋雷鸣
* 开发时间: 2011年4月4日
*/
//页面左侧树形菜单的面板
function TreePanel() {
//this.load();
}
//三级菜单(树形菜单),是否全部展开
//yes全部展开no:全部关闭def:默认,打开第一个
TreePanel.TreeIsShow = "yes";
//菜单条的打开方式1同时打开多个2同一时刻只打开一个
TreePanel.TreeBarOpen = "1";
//数据源
TreePanel.DataSource = null;
//载入数据
TreePanel.prototype.load = function () {
$.ajax({
type: "get",
url: "Panel/TreePanel.aspx?timestamp=" + new Date().getTime(),
dataType: "html",
data: {},
//开始,进行预载
beforeSend: function (XMLHttpRequest, textStatus) {
treePanleLoading();
},
//加载出错
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (unloadfunc != null) {
alert(textStatus);
unloadfunc();
}
},
//加载成功!
success: function (data) {
//alert(data);
SetManageMenu(data);
unTreePanleLoading();
}
});
//生成左侧的根菜单树
function SetManageMenu(data) {
var tree = new TreePanel();
//左侧区域
var pl = $("#consTreePanel");
pl.html(data);
TreeInit("#consTreePanel");
TreeEvent("#consTreePanel");
tree.focus();
//设置节点前的图标与连线样式
pl.find(".nodeIco").each(function () {
var num = Number($(this).find("img").size());
$(this).width(num * 18);
$(this).css("float", "left");
});
$(".treepanel").height($("#consContextPanel").height());
$(".treepanel").css("background-image", "url(" + $("#consTreePanel").attr("bg") + ")");
//如果不是超管,则进行权限判断;
//emplyeeIsAdmin与emplyeeId参数来自于console.aspx页面初始化
if (emplyeeIsAdmin != 0) {
//$().SoapAjax("Purview","GetAll4Array",{empId:emplyeeId},RemoveOnPur,treePanleLoading,unTreePanleLoading);
}
}
//管理界面左侧,功能菜单区的预载框
function treePanleLoading() {
var treepanel = $("#consTreePanel");
var offset = treepanel.offset();
var html = "<div id=\"treePanleLoadingMask\">";
html += "<div>正在加载……<br/>";
html += "<img src=\"Images/loading/load_016.gif\"></div>";
html += "</div>";
$("body").append(html);
var mask = $("#treePanleLoadingMask");
mask.css("position", "absolute");
mask.css("z-index", "2000");
var h = document.documentElement.clientHeight;
var offset = $("#consBody").offset();
var height = h - offset.top - $("#consFoot").height();
mask.css("width", treepanel.width());
mask.css("height", height);
mask.css("top", offset.top);
mask.css("left", offset.left);
mask.css("background-color", "#ffffff");
var alpha = 100;
mask.css("filter", "Alpha(Opacity=" + alpha + ")");
mask.css("display", "block");
mask.css("-moz-opacity", alpha / 100);
mask.css("opacity", alpha / 100);
mask.fadeIn("slow");
}
//去除,管理界面左侧,功能菜单区的预载界面
function unTreePanleLoading() {
$("#treePanleLoadingMask").fadeOut();
}
}
//设置当前面板为焦点
TreePanel.prototype.focus = function (id) {
//左侧区域
var pl = $("#consTreePanel");
//标题的焦点
pl.find(".titlePanel div").attr("class", "out");
pl.find("div[class='treepanel']").hide();
if (id != null) {
pl.find(".titlePanel div[id='consTreeTitle_" + id + "']").attr("class", "current");
pl.find("div[id='consTreePanel_" + id + "']").show();
} else {
pl.find(".titlePanel div:first").attr("class", "current");
pl.find("div[class='treepanel']:first").show();
}
//取出所有的tree面板
var panel = pl.find("div[class='treepanel']");
}
//树形的初始化,例如图标设置
function TreeInit(panel) {
//菜单条,有下级节点的
var bar = $(panel + " div[type='menuBar'][IsChilds='True']");
//设置所有为关闭状态
//bar.attr("class","menuBar menuBarClose");
//如果全部展开
if (TreePanel.TreeIsShow == "yes") {
bar.attr("openstate", "true");
bar.attr("class", "menuBar menuBarOpen");
bar.next().show();
}
//如果全部关闭
if (TreePanel.TreeIsShow == "no") {
bar.attr("openstate", "false");
bar.attr("class", "menuBar menuBarClose");
bar.next().hide();
}
//默认状态,打开第一个菜单,其余关闭
if (TreePanel.TreeIsShow == "def") {
bar.attr("openstate", "false");
bar.attr("class", "menuBar menuBarClose");
bar.next().hide();
var first = $("div[class='treepanel']").find("div[type='menuBar']:first");
first.attr("openstate", "true");
first.attr("class", "menuBar menuBarOpen");
first.next().show();
}
}
//树形菜单事件,如打开折叠等
function TreeEvent(panel) {
//左侧区域标题项的事件
$(panel + " .titlePanel div").click(function () {
var thisId = $(this).attr("id");
thisId = thisId.substring(thisId.indexOf("_") + 1);
var tree = new TreePanel();
tree.focus(thisId);
});
//菜单条的事件
$(panel + " div[IsChilds='True'][type='menuBar']").click(function () {
var n = $(this).next();
var state = $(this).attr("openstate");
if (TreePanel.TreeBarOpen == "1") {
if (state == "true") {
n.slideUp();
$(this).attr("openstate", "false");
$(this).attr("class", "menuBar menuBarClose");
} else {
n.slideDown();
$(this).attr("openstate", "true");
$(this).attr("class", "menuBar menuBarOpen");
}
}
//打开当前的,其它的则关闭
if (TreePanel.TreeBarOpen == "2") {
//兄弟节点
var sibl = $(this).siblings("div[IsChilds='True'][type='menuBar']");
//自身节点的处理
if (state == "true") {
n.slideUp();
$(this).attr("openstate", "false");
$(this).attr("class", "menuBar menuBarClose");
} else {
n.slideDown();
$(this).attr("openstate", "true");
$(this).attr("class", "menuBar menuBarOpen");
}
//兄弟节点的处理
sibl.attr("openstate", "false");
sibl.attr("class", "menuBar menuBarClose");
sibl.next().slideUp();
}
});
//当点击节点前的图标时,如加减号文件夹图标
$(panel + " div[IsChilds='True'][type='nodeIco']").click(function () { //alert(1);
//栏目图标,文件夹或文件图标
var last = $(this).find("img:last");
//节点图标,加号或┝号
var pre = last.prev();
tranImg(pre, "plus.gif", "minus.gif");
tranImg(pre, "minusbottom.gif", "plusbottom.gif");
tranImg(last, "folderopen.gif", "folder.gif");
$(this).parent().next().slideToggle();
var state = $(this).attr("state");
$(this).attr("state", state == "true" ? "false" : "true");
});
//当点击节点文本时
$(panel + " div[type='text'][IsChilds='True']").click(
function () { //alert($(this).parent().html());
//栏目图标,文件夹或文件图标
var last = $(this).parent().find("div:first").find("img:last");
//节点图标,加号或┝号
var pre = last.prev();
tranImg(pre, "plus.gif", "minus.gif");
tranImg(pre, "minusbottom.gif", "plusbottom.gif");
tranImg(last, "folderopen.gif", "folder.gif");
$(this).parent().next().slideToggle();
var state = $(this).attr("state");
$(this).attr("state", state == "true" ? "false" : "true");
}
);
//根节点事件
$(panel).find("a").click(function () {
var type = $(this).parent().attr("nodetype");
var link = $(this).attr("href");
var id = $(this).parent().attr("nodeId");
var name = $(this).text();
var path = $(this).parent().attr("path");
switch (type) {
case "link": //如果是外部链接,直接打开
return true;
case "open": //如果是弹出窗口
new PageBox(name, link, 50, 50).Open();
return false;
case "item":
default:
var p = new PagePanel();
p.add(name, path, link, id);
return false;
}
});
}
//处理点前图片的替换效果
//element:节点的元素
//img1:原图片
//img2:新图片
function tranImg(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));
}