258 lines
7.5 KiB
JavaScript
258 lines
7.5 KiB
JavaScript
|
||
/*!
|
||
* 主 题:《院系的节点》
|
||
* 说 明:生成院系的节点对象;
|
||
* 功能描述:
|
||
* 1、院系的节点对象,包括院系所有信息,与数据库信息一一对应;
|
||
* 2、节点属性包括上级、下级、有否子节点,是否为最后一个节点等;
|
||
* 3、如果他对像时为空,则默认生成“院系管理”的根节点
|
||
*
|
||
* 作 者:宋雷鸣
|
||
* 开发时间: 2012年12月23日
|
||
*/
|
||
//院系的节点
|
||
function Node(object, fulldata) {
|
||
this.object = object;
|
||
this.fulldata = fulldata;
|
||
if (object != null) {
|
||
this.evaluate1();
|
||
this.evaluate2();
|
||
} else {
|
||
this.Name = "全部";
|
||
this.Id = 0;
|
||
this.evaluate2();
|
||
}
|
||
}
|
||
//取院系的名称,如果为空,则为null
|
||
Node.prototype.Name = "null";
|
||
//节点的id
|
||
Node.prototype.Id = 0;
|
||
//院系的父节点id
|
||
Node.prototype.PatId = 0;
|
||
//排序号
|
||
Node.prototype.Tax = 0;
|
||
//院系是否启用,默认为true
|
||
Node.prototype.IsUse = true;
|
||
//该院系是否显示,默认为true
|
||
Node.prototype.IsShow = true;
|
||
//院系的介绍或说明
|
||
Node.prototype.Intro = ""; //
|
||
//节点的状态,如果为true则,在页面显示时为展开状态
|
||
Node.prototype.State = true;
|
||
//节点的业务属性
|
||
//院系代码
|
||
Node.prototype.Code = "";
|
||
//中文简称
|
||
Node.prototype.CnAbbr = "";
|
||
//英文名称
|
||
Node.prototype.EnName = "";
|
||
//英文简称
|
||
Node.prototype.EnAbbr = "";
|
||
//联系方式
|
||
Node.prototype.Phone = "";
|
||
Node.prototype.Fax = "";
|
||
Node.prototype.Email = "";
|
||
Node.prototype.Msn = "";
|
||
Node.prototype.WorkAddr = "";
|
||
|
||
//以下为系统属性
|
||
//该节点的子节点
|
||
Node.prototype.Childs = null;
|
||
//该节点的兄弟节点
|
||
Node.prototype.Siblings = null;
|
||
//该节点,是否有子级
|
||
Node.prototype.IsChilds = false;
|
||
//该节点,是否是第一个节点
|
||
Node.prototype.IsFirst = false;
|
||
//当前节点的上一个
|
||
Node.prototype.Pre = null;
|
||
//该节点,是否是最后一个节点
|
||
Node.prototype.IsLast = false;
|
||
//当前节点的下一个;
|
||
Node.prototype.Next = null;
|
||
//当前节点的上一级
|
||
Node.prototype.Parent = null;
|
||
//节点相对于根节点的路,路径名为中文,分隔符为逗号
|
||
Node.prototype.Path = "";
|
||
//给基本属性赋值
|
||
Node.prototype.evaluate1 = function () {
|
||
//属性参数
|
||
this.Name = this.getValue("Dep_CnName");
|
||
this.Id = Number(this.getValue("Dep_Id"));
|
||
this.PatId = Number(this.getValue("Dep_PatId"));
|
||
this.Tax = Number(this.getValue("Dep_Tax"));
|
||
this.IsUse = this.getValue("Dep_IsUse") == "false" ? false : true; ;
|
||
this.IsShow = this.getValue("Dep_IsShow") == "false" ? false : true;
|
||
this.Intro = this.getValue("Dep_Func");
|
||
//this.Path=this.GetPath();
|
||
this.State = this.getValue("Dep_State") == "false" ? false : true;
|
||
this.Code = this.getValue("Dep_Code");
|
||
this.CnAbbr = this.getValue("Dep_CnAbbr");
|
||
this.EnName = this.getValue("Dep_EnName");
|
||
this.EnAbbr = this.getValue("Dep_EnAbbr");
|
||
this.Phone = this.getValue("Dep_Phone");
|
||
this.Fax = this.getValue("Dep_Fax");
|
||
this.Email = this.getValue("Dep_Email");
|
||
this.Msn = this.getValue("Dep_Msn");
|
||
this.WorkAddr = this.getValue("Dep_WorkAddr");
|
||
};
|
||
//特性参数
|
||
Node.prototype.evaluate2 = function () {
|
||
//特性参数
|
||
this.State = this.Id == 0 ? true : this.State;
|
||
this.Childs = this.GetChilds();
|
||
this.Siblings = this.GetSiblings();
|
||
this.Parent = this.GetParent();
|
||
this.IsChilds = this.Childs.length > 0 ? true : false;
|
||
this.IsFirst = this.SetIsFirst();
|
||
this.IsLast = this.SetIsLast();
|
||
this.Pre = this.GetPre();
|
||
this.Next = this.GetNext();
|
||
}
|
||
//获取节点的相关属性
|
||
//keyName:属性名
|
||
Node.prototype.getValue = function (keyName) {
|
||
var node = this.object.find(">" + keyName);
|
||
if (node == null || node.length < 1) {
|
||
return "";
|
||
}
|
||
return node.text().toLowerCase();
|
||
}
|
||
//获取子级
|
||
Node.prototype.GetChilds = function () {
|
||
var fulldata = this.fulldata;
|
||
var nodes = this.fulldata.find("Depart");
|
||
var id = this.Id;
|
||
//alert(id);
|
||
var arr = new Array();
|
||
nodes.each(
|
||
function () {
|
||
var n = Number($(this).find("Dep_PatId").text().toLowerCase());
|
||
if (n == id) {
|
||
arr.push($(this));
|
||
}
|
||
}
|
||
);
|
||
arr = this.SetOrder(arr);
|
||
return arr;
|
||
}
|
||
//获取上级,xml对象,非node对象
|
||
Node.prototype.GetParent = function () {
|
||
var fulldata = this.fulldata;
|
||
var nodes = this.fulldata.find("Depart");
|
||
var pid = this.PatId;
|
||
//alert(pid);
|
||
var arr = new Array();
|
||
nodes.each(
|
||
function () {
|
||
var n = Number($(this).find("Dep_Id").text().toLowerCase());
|
||
if (n == pid) {
|
||
arr.push($(this));
|
||
}
|
||
}
|
||
);
|
||
if (arr.length > 0) return arr[0];
|
||
return null;
|
||
}
|
||
//获取兄弟子级
|
||
Node.prototype.GetSiblings = function () {
|
||
var nodes = this.fulldata.find("Depart");
|
||
var pid = this.PatId;
|
||
//alert(id);
|
||
var arr = new Array();
|
||
nodes.each(
|
||
function () {
|
||
var n = Number($(this).find("Dep_PatId").text().toLowerCase());
|
||
if (n == pid) {
|
||
arr.push($(this));
|
||
}
|
||
}
|
||
);
|
||
arr = this.SetOrder(arr);
|
||
return arr;
|
||
}
|
||
//将数组类的列排序
|
||
Node.prototype.SetOrder = function (array) {
|
||
for (var i = 0; i <= array.length - 1; i++) {
|
||
for (var j = array.length - 1; j > i; j--) {
|
||
var jj = Number(array[j].find("Dep_Tax").text().toLowerCase());
|
||
var jn = Number(array[j - 1].find("Dep_Tax").text().toLowerCase());
|
||
if (jj < jn) {
|
||
var temp = array[j];
|
||
array[j] = array[j - 1];
|
||
array[j - 1] = temp;
|
||
}
|
||
}
|
||
}
|
||
for (var i = 0; i < array.length; i++) {
|
||
array[i].find("Dep_Tax").text((i + 1) * 10);
|
||
}
|
||
return array;
|
||
}
|
||
//是不是第一个节点
|
||
Node.prototype.SetIsFirst = function () {
|
||
var arr = this.Siblings;
|
||
var len = arr.length;
|
||
if (arr.length > 0) {
|
||
var id = Number(arr[0].find("Dep_Id").text().toLowerCase());
|
||
if (id == this.Id) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
//是不是最后一个节点
|
||
Node.prototype.SetIsLast = function () {
|
||
var arr = this.Siblings;
|
||
var len = arr.length;
|
||
if (arr.length > 0) {
|
||
var id = Number(arr[len - 1].find("Dep_Id").text().toLowerCase());
|
||
if (id == this.Id) {
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
//当前节点的上一个节点
|
||
Node.prototype.GetPre = function () {
|
||
//如果自身是第一个节点,则返回Null
|
||
if (this.IsFirst) return null;
|
||
var arr = this.Siblings;
|
||
var len = arr.length;
|
||
for (var i = 0; i < len; i++) {
|
||
var id = Number(arr[i].find("Dep_Id").text().toLowerCase());
|
||
if (id == this.Id) {
|
||
return arr[i - 1];
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
//当前节点的下一个节点
|
||
Node.prototype.GetNext = function () {
|
||
//如果自身是第一个节点,则返回Null
|
||
if (this.IsLast) return null;
|
||
var arr = this.Siblings;
|
||
var len = arr.length;
|
||
for (var i = 0; i < len; i++) {
|
||
var id = Number(arr[i].find("Dep_Id").text().toLowerCase());
|
||
if (id == this.Id) {
|
||
return arr[i + 1];
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
//获取当前节点从根节点的路径,路径名为中文,分隔符为,号;
|
||
Node.prototype.GetPath = function () {
|
||
var tm = "";
|
||
var p = this.GetParent(this.Id);
|
||
if (p == null) return tm;
|
||
var pid = p.find("Dep_PatId").text();
|
||
while (Number(pid) != 0) {
|
||
tm = p.find("Dep_CnName").text() + "," + tm;
|
||
var pid = p.find("Dep_PatId").text();
|
||
pid = Number(pid);
|
||
p = this.GetParent(pid);
|
||
}
|
||
tm = tm.substring(0, tm.lastIndexOf(","));
|
||
return tm;
|
||
} |