ZhiYeJianKang_PeiXun/Song.Site/Manage/Panel/Scripts/TreePanel.js
2025-02-20 15:41:53 +08:00

257 lines
9.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*!
* 主 题:《菜单树生成》
* 说 明:用于管理页面左侧树形菜单。
* 功能描述:
* 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));
}