mirror of
https://gitee.com/apiadmin/ApiAdmin.git
synced 2025-04-06 03:58:00 +08:00
219 lines
9.1 KiB
JavaScript
219 lines
9.1 KiB
JavaScript
(function ($) {
|
||
/**
|
||
* 创建表格HTML字符串
|
||
* 1、严重依赖Bootstrap的样式
|
||
* 2、严格的Json数据格式
|
||
* 3、如果有右侧操作按钮的话会默认自动加入{field:"action",info:"操作"}所以字段名不支持使用action,action是关键字
|
||
* @param tableObj
|
||
* @returns {string}
|
||
*/
|
||
$.buildTable = function ( tableObj ) {
|
||
var tableHtml = '<div class="box box-primary" id="tableBox"><div class="box-body">';
|
||
if( tableObj.rightButton && tableObj.rightButton.length ){
|
||
tableObj.header.push({field:"action",info:"操作"});
|
||
}
|
||
if( tableObj.topButton && tableObj.topButton.length ){
|
||
tableHtml += buildTopButton( tableObj );
|
||
}
|
||
tableHtml += '<table class="table table-bordered"> <tbody>';
|
||
if( tableObj.header && tableObj.header.length ){
|
||
tableHtml += buildHeader( tableObj );
|
||
}
|
||
if( tableObj.data && tableObj.data.length ){
|
||
tableHtml += buildDataList( tableObj );
|
||
}else{
|
||
tableHtml += buildEmptyTable( tableObj );
|
||
}
|
||
tableHtml += '</tbody></table></div></div>';
|
||
return tableHtml;
|
||
};
|
||
|
||
/**
|
||
* 创建表格头部分
|
||
* @param tableObj
|
||
* @returns {string}
|
||
*/
|
||
function buildHeader( tableObj ) {
|
||
var headerHtml = '<tr><th style="width: 10px"><input type="checkbox"></th>';
|
||
$.each(tableObj.header, function (index, value) {
|
||
headerHtml += '<th>'+ value.info +'</th>';
|
||
});
|
||
headerHtml += '</tr>';
|
||
return headerHtml;
|
||
}
|
||
|
||
/**
|
||
* 创建顶部功能按钮
|
||
* @param tableObj
|
||
* @returns {string}
|
||
*/
|
||
function buildTopButton( tableObj ) {
|
||
var topHtml = '<div class="btn-group margin-bottom">';
|
||
if( tableObj.topButton ){
|
||
$.each(tableObj.topButton, function(index, value) {
|
||
topHtml += createButton(value);
|
||
});
|
||
}
|
||
topHtml += '</div>';
|
||
return topHtml;
|
||
}
|
||
|
||
/**
|
||
* 创建数据部分
|
||
* @param tableObj
|
||
* @returns {string}
|
||
*/
|
||
function buildDataList( tableObj ) {
|
||
var paramStr, dataListHtml = '';
|
||
$.each(tableObj.data, function (dataIndex, dataValue) {
|
||
dataListHtml += '<tr><td><input type="checkbox"></td>';
|
||
$.each(tableObj.header, function (fieldIndex, fieldValue) {
|
||
var fieldName = fieldValue.field;
|
||
if( fieldName == 'action' ){
|
||
dataListHtml += '<td><div class="btn-group">';
|
||
$.each(tableObj.rightButton, function(buttonIndex, buttonValue) {
|
||
dataListHtml += createButton(buttonValue, dataValue);
|
||
});
|
||
dataListHtml += '</div></td>';
|
||
}else{
|
||
if( tableObj.typeRule[fieldName] ){
|
||
var rule = tableObj.typeRule[fieldName];
|
||
var styleList ,detailInfo, classAttr = '';
|
||
switch (rule.module){
|
||
case 'label':
|
||
if( rule.rule[dataValue[fieldName]] ){
|
||
styleList = rule.rule[dataValue[fieldName]];
|
||
detailInfo = prepareInfo( styleList, dataValue, fieldName);
|
||
dataListHtml += '<td><span class="'+styleList['class']+'">'+detailInfo+'</span></td>';
|
||
}else{
|
||
dataListHtml += '<td style="color:red;">' + dataValue[fieldName] + '</td>';
|
||
}
|
||
break;
|
||
case 'a':
|
||
styleList = rule.rule;
|
||
detailInfo = prepareInfo( styleList, dataValue, fieldName);
|
||
paramStr = prepareParamStr( styleList, dataValue );
|
||
if( styleList['class'] ){
|
||
classAttr = 'class="'+ styleList['class'] +'"';
|
||
}
|
||
dataListHtml += '<td><a '+ classAttr +' url="'+styleList['href']+'" data="'+paramStr+'">' + detailInfo + '</a></td>';
|
||
break;
|
||
case 'date':
|
||
dataListHtml += '<td>' + $.formatDate(dataValue[fieldName]) + '</td>';
|
||
break;
|
||
case 'icon':
|
||
if( rule.rule[dataValue[fieldName]] ){
|
||
styleList = rule.rule[dataValue[fieldName]];
|
||
dataListHtml += '<td><i class="'+styleList['class']+'"></i></td>';
|
||
}else{
|
||
dataListHtml += '<td style="color:red;">' + dataValue[fieldName] + '</td>';
|
||
}
|
||
break;
|
||
case 'auth':
|
||
if( dataValue['url'] ){
|
||
if( dataValue[fieldName] && dataValue[fieldName] != 0 ){
|
||
dataListHtml += '<td><input class="auth" checked type="checkbox" url="'+ rule.rule['url'] +'" name="'+fieldName+'" ></td>';
|
||
}else{
|
||
dataListHtml += '<td><input class="auth" type="checkbox" url="'+ rule.rule['url'] +'" name="'+fieldName+'" ></td>';
|
||
}
|
||
}
|
||
break;
|
||
case 'listValue':
|
||
if( rule.rule[dataValue[fieldName]] ){
|
||
styleList = rule.rule[dataValue[fieldName]];
|
||
dataListHtml += '<td>'+ styleList +'</td>';
|
||
}else{
|
||
dataListHtml += '<td style="color:red;">' + dataValue[fieldName] + '</td>';
|
||
}
|
||
break;
|
||
}
|
||
}else{
|
||
dataListHtml += '<td>' + dataValue[fieldName] + '</td>';
|
||
}
|
||
}
|
||
});
|
||
dataListHtml += '</tr>';
|
||
});
|
||
return dataListHtml;
|
||
}
|
||
|
||
/**
|
||
* 创建按钮
|
||
* @param buttonValue 按钮属性对象
|
||
* @param dataValue 当前行数据对象
|
||
* @returns {string}
|
||
*/
|
||
function createButton( buttonValue, dataValue ) {
|
||
var paramStr = '', buttonStr = '', iconStr = '';
|
||
if( buttonValue.confirm ){
|
||
buttonValue.class += ' confirm';
|
||
}else{
|
||
buttonValue.class += ' refresh';
|
||
}
|
||
if( dataValue ){
|
||
paramStr = prepareParamStr( buttonValue, dataValue );
|
||
}
|
||
if( buttonValue.icon ){
|
||
iconStr = '<i class="'+buttonValue.icon+'"></i>';
|
||
}
|
||
if( buttonValue.show ){
|
||
if( dataValue[buttonValue.show[0]] == buttonValue.show[1] ){
|
||
buttonStr = '<button url="'+buttonValue.href+'" data="'+paramStr+'" type="button" class="btn '+buttonValue.class+'">'+ iconStr + ' ' +buttonValue.info+'</button>';
|
||
}
|
||
}else{
|
||
buttonStr = '<button url="'+buttonValue.href+'" data="'+paramStr+'" type="button" class="btn '+buttonValue.class+'">'+ iconStr + ' ' +buttonValue.info+'</button>';
|
||
}
|
||
return buttonStr;
|
||
}
|
||
|
||
/**
|
||
* 预处理显示信息
|
||
* @param styleList 当前字段对应的规则对象
|
||
* @param dataValue 当前行数据对象
|
||
* @param fieldName 需要处理的数据的字段名
|
||
* @returns {*}
|
||
*/
|
||
function prepareInfo( styleList, dataValue, fieldName ) {
|
||
var detailInfo;
|
||
if( styleList['info'] && styleList['info'].length ){
|
||
detailInfo = styleList['info'];
|
||
}else{
|
||
detailInfo = dataValue[fieldName];
|
||
}
|
||
return detailInfo;
|
||
}
|
||
|
||
/**
|
||
* 预处理参数信息
|
||
* @param styleList 当前字段对应的规则对象
|
||
* @param dataValue 当前行数据对象
|
||
* @returns {string}
|
||
*/
|
||
function prepareParamStr( styleList, dataValue ) {
|
||
var paramStr = '';
|
||
if( styleList['param'].length ){
|
||
$.each(styleList['param'], function (paramIndex, paramValue) {
|
||
paramStr += paramValue + '=' + dataValue[paramValue] + '&';
|
||
});
|
||
paramStr = paramStr.substring(0, paramStr.length-1);
|
||
}
|
||
return paramStr;
|
||
}
|
||
|
||
/**
|
||
* 创建空数据表
|
||
* @param tableObj
|
||
* @returns {string}
|
||
*/
|
||
function buildEmptyTable( tableObj ) {
|
||
var emptyHtml = '<tr>';
|
||
var spanNum = tableObj.header.length + 1;
|
||
emptyHtml += '<td colspan="'+spanNum+'" class="builder-data-empty">';
|
||
emptyHtml += '<div class="am-text-center no-data" >';
|
||
emptyHtml += '<i class="fa fa-cogs"></i> 暂时没有数据<br>';
|
||
emptyHtml += '<small> 本系统由<b> '+ COMPANY_NAME +' </b>开发维护</small>';
|
||
emptyHtml += '</div></td></tr>';
|
||
return emptyHtml;
|
||
}
|
||
})(jQuery);
|