<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="xiaojue,designsor@gmail.com">
<script src="lib/js/jquery-1.4.2.js" type="text/javascript"></script>
<link type="text/css" href="lib/css/gz_base.css" rel="stylesheet" media="screen" />
<link type="text/css" href="lib/css/gz_layout.css" rel="stylesheet" media="screen" />
<link rel="stylesheet" href="lib/css/jquery.treeview.css" type="text/css" />
<link href="lib/css/tuzi.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript" src="lib/js/jquery.treeview.js"></script>
<script language="javascript" type="text/javascript" src="lib/My97DatePicker/WdatePicker.js"></script>
<script>
$(function(){
/*
var treedata={
'class':'muentree treeview-gray',
'id':'example',
'treedata':{
'Folder 1':{
'root':{'Item 1.1':0},
'state':'close'
},
'Folder 2':{
'root':{
'Subfolder 2.1':{
'File 2.1.1':0,
'File 2.1.2':0,
'state':'close'
},
'File 2':0
},
'state':'close'
},
'Folder 3':{
'root':{
'File 3.1':0,
'state':'close'
},
'state':'close'
},
'File 4':0
}
}
*/
$("#example").treeview();
});
</script>
<title>系统首页</title>
</head>
<body>
<div class='gz_head'>
<div class='logo'><a href='index.html'></a></div>
<div class='mainmuen'>
<ul class='mainnav'>
<li class='linow'><a href='index.html' class='anow'>首页</a></li>
<li><a href='muensystem.html'>菜单管理</a></li>
<li><a href='datalib.html'>数据字典</a></li>
</ul>
<ul class='breadnav'>
<li><a href='index.html'>首页</a><span>>></span></li>
<li><a href='#'>一级菜单</a><span>>></span></li>
<li><a href='#'>二级菜单</a><span>>></span></li>
<li><a href='#' class='nowbreadnav'>四级菜单</a></li>
</ul>
</div>
</div>
<!--head end ,left begin -->
<div class='gz_left'>
<ul class='muentree treeview-gray' id='example'>
<li class="closed"><span>Folder 1</span>
<ul>
<li><span><a href='#'>Item 1.1</a></span></li>
</ul>
</li>
<li class="closed">
<span>Folder 2</span>
<ul>
<li class="closed">
<span>Subfolder 2.1</span>
<ul>
<li><span><a href='#'>File 2.1.1</a></span></li>
<li><span><a href='#'>File 2.1.2</a></span></li>
</ul>
</li>
<li><span><a href='#'>File 2.2</a></span></li>
</ul>
</li>
<li class="closed"><span class="folder">Folder 3</span>
<ul>
<li><span><a href='#'>File 3.1</a></span></li>
</ul>
</li>
<li><span><a href='#'>File 4</a></span></li>
</ul>
</div>
<!--left end ,main begin -->
<div class='gz_main'>
<h1>四级菜单</h1>
<div id='datatable' class='jtable'></div>
</div>
<!--main end ,bottom begin -->
<div class='gz_bottom'>service system copyright 2007-2010</div>
</body>
<script>
/**
* 缺少loading状态
* 先做其他页面,现在的版本不影响程序的对接和调试,最后再补全上面2项.
*/
//后台数据
var data={
'theadtitle':{'name':[{'none':'<input type="checkbox">'},{'title1':'标题头一'},{'title2':'标题头二'},{'title3':'标题头三'},{'title4':'标题头四'},{'title5':'标题头五'}],'width':['30','100','150','100','200','100']},
'tbodydata':[
[{'checkbox':'2'},'abc','def','obq','rst','cbd'],
[{'checkbox':'2'},'abc','def','obq','rst','cbd'],
[{'checkbox':'3'},'abc','def','obq','rst','cbd']
],
'search':[
{'type': 'text','content':{'id': '编号'}},
{'type':'int','content':{'num':'数字'}},
{'type': 'time','content': {'dt': '日期'}}
]
};
//前台配置
var defaults={
'path':'datatable',
'tabletitle':'监察局委办局数据159',
'adclass':"tabledemo",
'zwidth':680,
'url':"example.php",
'bottom':false,
'rowNum':30,
'pagesize':7, //必须是7;
'trclick':"jclick",
'sort':true,
'search':true
};
(function(){
var jtable=function(data,defaults){
//构造参数
this.defaults = {
'data':data,
'defaults':defaults
};
this.tote=this.get('defaults','rowNum');
this.viewsize=this.get('data','tbodydata').length;
this.pages=Math.ceil(this.tote/this.viewsize);
this.nowpage=1;
this.searchform=false;
this.url=this.get('defaults','url');
};
jtable.prototype={
//get方法
get:function(obj,objname){
if(this.defaults.hasOwnProperty(obj)){
var data=this.defaults[obj];
if(typeof data[objname]=='undefined') return false;
return data[objname];
}else{
return false;
}
},
//取得容器方法
getdiv:function(){ //取得path的容器
var j=this;
var id=j.get('defaults','path')
return $('#'+id);
},
//创建表格head
creathead:function(){
var j=this;
var datatitle=j.get('data','theadtitle').name; //取得标题头
var width=j.get('data','theadtitle').width; //取得宽度信息
//表格字符数组
var tablehead=['<table width="'+j.get('defaults','zwidth')+'" class="'+j.get('defaults','adclass')+'">'];
//标题是否包含
if(j.get('defaults','tabletitle')!='') tablehead.unshift('<h1>'+j.get('defaults','tabletitle')+'</h1>');
//产生标题头
tablehead.push('<thead><tr>');
for(var i=0;i<datatitle.length;i++){
for(var t in datatitle[i]){
tablehead.push('<th width="'+width[i]+'" action="'+t+'">'+datatitle[i][t]+'</th>');
}
};
tablehead.push('</tr></thead>');//返回表格标题头部HTML
return tablehead=tablehead.join("");
},
//创建表body格内容
creatbody:function(){
var j=this;
var databody=j.get('data','tbodydata'); //取得数据
//产生表格主题数据
var tablebody=['<tbody>'];
for(var k=0;k<databody.length;k++){
tablebody.push('<tr>');
//根据属性输出相对应单元格
for(var c=0;c<databody[k].length;c++){
//类型判断
if(typeof databody[k][c]=='string') {
tablebody.push('<td>'+databody[k][c]+'</td>');
}else{
j.fixtype(tablebody,databody[k][c]);
}
};
tablebody.push('</tr>');
};
tablebody.push('</tbody>');
return tablebody=tablebody.join("");
},
//创建表格尾部
creatfoot:function(){
var j=this;
var colspan=j.get('data','theadtitle').name.length; //单元格colspan
var tfoot=['<tfoot><tr><td colspan="'+colspan+'"><span class="pagego">第 <input type="text" maxlength="3" /><input type="button" value="go" /> 页 共'+j.tote+'条 每页'+j.viewsize+'条 共'+j.pages+'页 <a href="#jfirst" class="jfirst">首 页</a> <a href="#jend" class="jend">尾 页</a></span><span class="pagenav">'];
j.creatpage(tfoot);
tfoot.push('</span></td></tr>'); //创建分页
if (j.get('defaults', 'sort')) {
tfoot.push('<tr><td colspan="' + colspan + '"><input type="text" class="jsearchtxt"/> <input type="button" value="搜索" class="jsearch"/> <input type="button" value="高级" class="jsearchad"/></td></tr>'); //创建搜索行
}
tfoot.push('</tfoot></table>');
return tfoot=tfoot.join("");
},
//创建搜索表单
creatform:function(){
var j=this;
var searchdata=j.get('data','search');
var form=[];
form.push('<div class="jtableform">');
form.push('<h2>搜 索</h2> <a href="#close" class="closeform">X</a> <hr>');
for(var i=0;i<searchdata.length;i++){
if(j.searchtype.hasOwnProperty(searchdata[i]['type'])){
j.searchtype[searchdata[i]['type']](form,searchdata[i]['content']);
}
}
form.push('<p><input type="button" value="搜一下" class="jsubmit"/> <input type="button" value="重 置" class="jreset"/></p>');
form.push('</div>');
form=form.join("");
$('body').prepend(form);
function creattime(){
$('.searchinputtime').each(function(i){
$(this).after("<img src='lib/My97DatePicker/skin/calendar_pic.gif' align='absmiddle' class='timeclass'>").css({"width": "125px"});
if($(this).attr("id")==""){$(this).attr("id","time"+i);}
});
$(".timeclass").click(function(){
timeid=$(this).prev().attr("id");
WdatePicker({el:timeid});
});
}
creattime();
$('.intsel').each(function(){
$(this).change(function(){
var v=$(this).val();
if(v==3){
$(this).next('input').after('<input type="text" value="" class="int2">');
}else{
$(this).siblings().not($(this).next('input').add($(this).prev('label'))).remove();
}
});
});
$('.timesel').each(function(){
$(this).change(function(){
var v=$(this).val();
if(v==3){
$(this).next('input').after('<input type="text" class="searchinputtime time2" readOnly="true">');
$('.timeclass').remove();
}else{
$(this).siblings().not($(this).next('input').add($(this).prev('label'))).remove();
$('.timeclass').remove();
}
creattime();
});
});
},
//针对单元格操作
fixtype:function(ary,obj){
var types=[];
for(var f in obj){
types.push(f);
}
types=types.toString();
if(this.type().hasOwnProperty(types)){
return this.type()[types](ary,obj);
}
},
//创建分页
creatpage:function(ary){
var j=this;
var maxpages=j.get('defaults','pagesize');
var pagesclone=j.pages;
if (j.pages > maxpages) pagesclone=maxpages;
ary.push('<a href="#prve" class="prve">《</a>');
for(var i=1;i<=pagesclone;i++){
ary.push('<a href="#p'+i+'" flg="pags">'+i+'</a>');
}
ary.push('<a href="#next" class="next">》</a>');
return ary;
},
//链接对象
ontype:{
'text':function(ary,obj){
return ary.push('<td><a href="'+obj['link']['href']+'">'+obj['text']+'</a><img src="'+obj['img']+'" /></td>');
},
'img':function(ary,obj){
return ary.push('<td>'+obj['text']+'<a href="'+obj['link']['href']+'"><img src="'+obj['img']+'" /></a></td>');
},
'img,text':function(ary,obj){
return ary.push('<td><a href="'+obj['link']['href']+'">'+obj['text']+'<img src="'+obj['img']+'" /></a></td>');
}
},
//单元格类型检测
type:function(){
var control=this.ontype;
return {
'text':function(ary,obj){
return ary.push('<td>'+obj['text']+'</td>');
},
'img':function(ary,obj){
return ary.push('<td><img src="'+obj['img']+'"></td>');
},
'text,img':function(ary,obj){
return ary.push('<td>'+obj['text']+'<img src="'+obj['img']+'"></td>');
},
'text,link':function(ary,obj){
return ary.push('<td><a href="'+obj['link']['href']+'">'+obj['text']+'</a></td>');
},
'text,img,link':function(ary,obj){
var ons=[];
for(var i=0;i<obj['link']['on'].length;i++){
ons.push(obj['link']['on'][i]);
}
ons=ons.toString();
if(control.hasOwnProperty(ons)){
return control[ons](ary,obj);
}
},
'img,link':function(ary,obj){
return ary.push('<td><a href="'+obj['link']['href']+'"><img src="'+obj['img']+'"><a></td>');
},
'hidenvalue':function(ary,obj){
return ary.push('<td><input type="hidden" value="'+obj['hidenvalue']+'"/></td>');
},
'checkbox':function(ary,obj){
return ary.push('<td><input class="checkone" type="checkbox" value="'+obj['checkbox']+'"/></td>');
}
};
},
//初始化步骤,并给相对应的数字标签加样式
fixclass:function(){
var alls=this.getdiv().find('.pagenav>a');
alls.eq(1).addClass('nowpage');
},
//鼠标点击数字标签的功能,输入框联动功能,左右按钮切换判断;.........
pageclick:function(){
var j=this;
var alls=j.getdiv().find('.pagenav');
var als=j.getdiv().find('.pagenav>a[flg="pags"]');
var pagego=j.getdiv().find('.pagego');
if(als.length>7) throw new Error('page size not appoint');
alls.click(function(e){
e=e.target || e.srcElement;
var node=e.tagName.toLowerCase();
if(node!='a') return;
if(node=='a' && e.className=='prve'){
j.nowpage--;
if(j.nowpage<1) j.nowpage=1;
als.each(function(){$(this).attr('class','')});
uppage(j.nowpage);
return;
}else if(node=='a' && e.className=='next'){
j.nowpage++;
if(j.nowpage >= j.pages) j.nowpage=j.pages;
als.each(function(){$(this).attr('class','')});
uppage(j.nowpage);
return;
}; //上一页||下一页
j.nowpage=parseInt($(e).text());
if(j.pages<=7){
e.className='nowpage';
}else{
uppage(j.nowpage);
}
});
function uppage($that){
als.each(function(){$(this).attr('class','')});
if($that<5){
als.each(function(i){i=i+1;$(this).text(i)});
alls.find('a:contains('+$that+')').addClass('nowpage');
}else if($that>j.pages-3){
var ary=[];
for(var i=0;i<7;i++){
ary[i]=j.pages-6+i;
};
als.each(function(i){$(this).text(ary[i])});
alls.find('a:contains('+$that+')').addClass('nowpage');
}else{
var ary=[];
for(var i=0;i<7;i++){
ary[i]=$that-3+i;
}
als.each(function(i){$(this).text(ary[i])});
alls.find('a:contains('+$that+')').addClass('nowpage');
}
var requestdata='p='+j.nowpage;
j.ajax(requestdata);
};
pagego.find('input[type="text"]').keydown(function(e){
if(e.keyCode==13 || e.which==13){
var page=$.trim($(this).val());
if(page<=0 || page>j.pages || isNaN(page)){alert("不存在的页码"); return false;}
j.nowpage=parseInt(page);
uppage(j.nowpage);
}
});
pagego.find('input[type="button"]').click(function(){
var page=$.trim($(this).prev("input").val());
if(page<=0 || page>j.pages || isNaN(page)){alert("不能输入不存在的页码"); return false;}
j.nowpage=parseInt(page);
uppage(j.nowpage);
});
},
havetrclick:function(cls){
if(cls!=''){
var that=this.getdiv();
that.find('tbody>tr').click(function(){
var thisinput=$("input[type='checkbox']",this);
if(!thisinput.attr("checked")){
$('td',this).addClass(cls);
thisinput.attr("checked",true);
}else{
$('td',this).removeClass(cls);
thisinput.attr("checked",false);
}
});
that.find('tbody .checkone').click(function(event){
event.stopPropagation();
if($(this).attr("checked")){
$(this).closest('tr').find('td').addClass(cls);
$(this).attr("checked",true);
}else{
$(this).closest('tr').find('td').removeClass(cls);
$(this).attr("checked",false);
}
});
that.find('thead input[type="checkbox"]').click(function(){
if($(this).attr('checked')){
$('.checkone').attr('checked',true);
that.find('tbody td').addClass(cls);
}else{
$('.checkone').attr('checked',false);
that.find('tbody td').removeClass(cls);
}
});
};
},
havebottom:function(flg){
if(!flg){
this.getdiv().find('tfoot>td').html('');
}
},
sort:function(flg){
if(flg){
var j=this;
j.getdiv().find('thead th').not(':has("input")').toggle(function(){
var requestdata='rowname='+$(this).attr('action')+'&sort=ASC';
j.ajax(requestdata);
},function(){
var requestdata='rowname='+$(this).attr('action')+'&sort=DESC';
j.ajax(requestdata);
}).hover(function(){
$(this).addClass('sort');
},function(){
$(this).removeClass('sort');
});
}
},
searchtype:{
'text':function(ary,obj){
for(var n in obj){
return ary.push('<p><label action='+n+'>'+obj[n]+'</label>: <input type="text" class="txt1"/></p>');
}
},
'int':function(ary,obj){
for (var n in obj) {
return ary.push('<p><label action=' + n + '>' + obj[n] + '</label>: <select class="intsel"><option value=">">大于</option><option value="<">小于</option><option value="2">等于</option><option value="3">介于</option> <input type="text" class="int1"/></p>');
}
},
'time':function(ary,obj){
for (var n in obj) {
return ary.push('<p><label action=' + n + '>' + obj[n] + '</label>: <select class="timesel"><option value=">">大于</option><option value="<">小于</option><option value="2">等于</option><option value="3">介于</option> <input type="text" class="searchinputtime time1" readOnly="true"/></p>');
}
}
},
jmask:function(){
$('body').prepend('<div class="jmask">');
var h=$(document).scrollTop();
var w=document.body.scrollWidth;
$('.jmask').width(w).height(document.body.scrollHeight).fadeTo(0,0.5);
$('.jtableform').css({'top':150+h,'left':(w/2)-250});
},
search:function(flg){
if(flg){
var j=this;
var self=j.getdiv();
var jsearch=self.find('tfoot input.jsearch');
var jsearchad=self.find('tfoot input.jsearchad');
var jsearchtxt=self.find('tfoot input.jsearchtxt');
jsearch.click(function(){
var requestdata='search='+jsearchtxt.val();
j.ajax(requestdata);
});
jsearchad.click(function(){
if(!j.searchform){
j.creatform();
j.jmask();
j.searchform=true;
}else{
$('.jtableform,.jmask').show();
}
ie9();
});
jsearchtxt.keydown(function(e){
if (e.keyCode == 13 || e.which == 13) {
var requestdata='search='+jsearchtxt.val();
j.ajax(requestdata);
}
});
$('.closeform').live('click', function() {
$('.jtableform,.jmask').hide();
});
$('.jsubmit').live('click', function() {
//需要检测输入的是否合法
var flg=true;
$('.int1,.int2').each(function(){
var v=$(this).val();
if (!!isNaN(v)) {
var t=$(this).siblings('label').text();
alert(t+'输入的必须为数字');
flg=false;
return false;
};
});
if(!flg) return;
var searchary=[];
$('.jtableform p:not(:last)').each(function(i){
var value=[];
for(var j=0;j<$('input',this).length;j++){
if($('input:eq('+j+')',this).val()=="") continue;
var compare=$('select',this).val();
if(typeof compare=='undefined' || compare==3 || compare==2) compare="";
var jvalue=$('input:eq('+j+')',this).val();
value.push(compare+jvalue);
}
value=value.join('~');
var name=$(this).find('label').attr('action');
if(value=='') return true;
searchary.push(name+"="+value);
});
searchary=searchary.join("&");
j.ajax(searchary);
});
$('.jreset').live('click', function() {
$('.jtableform input[type="text"]').val("");
});
}
},
//处理新数据
updatatable:function(data){
var j = this;
//产生新表格主题数据
var tablebody = [];
for (var k = 0; k < data.length; k++) {
tablebody.push('<tr>');
//根据属性输出相对应单元格
for (var c = 0; c < data[k].length; c++) {
//类型判断
if (typeof data[k][c] == 'string') {
tablebody.push('<td>' + data[k][c] + '</td>');
}
else {
j.fixtype(tablebody, data[k][c]);
}
};
tablebody.push('</tr>');
};
tablebody = tablebody.join("");
j.getdiv().find('tbody').html(tablebody);
//加载IE9
ie9();
},
//ajax方法
ajax:function(data){
var j=this;
$.ajax({
type:"GET",
url:j.url,
data:data,
success: function(jsondata){
alert("访问请求的json数据位为:"+jsondata);
var obj = jQuery.parseJSON(jsondata);
var data = obj.tbodydata;
j.updatatable(data);
},
error:function(){
alert('请求服务器端失败,检查请求URL地址可访问性');
},
complete:function(xhr,ts){
var test=["xhr:"+xhr,"ts:"+ts,"requesturl:"+this.url];
alert(test);
}
});
},
//创建表格并输出
creattable:function(){
var j=this;
var w=j.get('defaults','zwidth');
var wary=j.get('data','theadtitle').width;
var sw=0; //实际长度;
for(var i=0;i<wary.length;i++){
sw=sw+parseInt(wary[i]);
};
try{ //处理输出时的宽度错误;
if(sw<w){
throw '单元格数组宽度的和'+sw+'px小于设置的表格总宽度'+w+'px';
}else{
var tablestr=[];
var thead=j.creathead();
var tbody=j.creatbody();
var tfoot=j.creatfoot();
tablestr=tablestr.concat(thead,tbody,tfoot);
tablestr=tablestr.join("");
var id=j.get('defaults','path');
//输出到容器
document.getElementById(id).innerHTML=tablestr;
document.getElementById(id).style.cssText='overflow-x:auto;overflow-y:hidden;width:'+(w+2)+'px';
//输出表格后的其他操作
j.fixclass(); //加载指定初始部分样式
j.pageclick(); //加载页码点击事件函数
j.havebottom(j.get('defaults','bottom')); //是否含有页面尾部
j.havetrclick(j.get('defaults','trclick')); //是否含有tr点击
j.sort(j.get('defaults','sort')); //是否含有排序
j.search(j.get('defaults','search')); //是否含有搜索
//..扩展函数都可以统一写在此处,因为表格已经渲染完成..//
//蒙板层的函数
$(window).bind('scroll resize', function() {
$('.jmask').width(document.body.offsetWidth).height(document.body.offsetHeight);
var h=$(document).scrollTop();
var w=document.body.scrollWidth;
$('.jtableform').css({'top':150+h,'left':(w/2)-250});
});
}
}catch(e){
alert(e.message);
}
}
};
var a=new jtable(data,defaults);
a.creattable();
function ie9(){
if ( $.browser.msie ){
if($.browser.version!=9.0){
$.getScript('lib/js/IE9.js');
};
}
};
})();
</script>
<!--[if lt IE 9]><script src="lib/js/IE9.js"></script><![endif]-->
</html>