')
};
row['jfsubGrid'].$cell.css({ 'top': row['jfsubGrid'].top, 'left': row['jfsubGrid'].left, 'text-align': 'center', 'height': op.rowHeight, 'line-height': (op.rowHeight - 1) + 'px' });
$left.append(row['jfsubGrid'].$cell);
_left += 30;
}
// 加载固定列数据
$.each(op.running.frozenCols, function (_id, col) {
//colData[col.name] = colData[col.name] || {};
var value = _item[col.data.name];
var _width = (col.data._width || col.data.width);
row[col.data.name] = {
top: _top,
left: _left,
value: value,
$cell: $('')
};
formatterCell(value, col.data, _item, row[col.data.name], op);
row[col.data.name].$cell.css({ 'top': row[col.data.name].top, 'left': row[col.data.name].left, 'text-align': col.data.align, 'width': _width, 'height': op.rowHeight, 'line-height': (op.rowHeight - 1) + 'px' });
$left.append(row[col.data.name].$cell);
_left += _width;
if ($expendcell != null && _id == 0) {
row[col.data.name].$cell.prepend($expendcell);
}
lastCell = row[col.data.name];
});
_left = 0;
// 加载滚动区域列数据
$.each(op.running.cols, function (_id, col) {
var value = _item[col.data.name];
var _width = (col._width || col.width);
row[col.data.name] = {
top: _top,
left: _left,
value: value,
$cell: $('')
};
formatterCell(value, col.data, _item, row[col.data.name], op);
row[col.data.name].$cell.css({ 'top': row[col.data.name].top, 'left': row[col.data.name].left, 'text-align': col.data.align, 'width': _width, 'height': op.rowHeight, 'line-height': (op.rowHeight - 1) + 'px' });
$right.append(row[col.data.name].$cell);
_left += _width;
if ($expendcell != null && _id == 0 && op.running.frozenCols.length == 0) {
row[col.data.name].$cell.prepend($expendcell);
}
lastCell = row[col.data.name];
});
rowdata.push(row);
$right.css({ 'height': _top + op.rowHeight - 1 });
if (op.isAutoHeight) {
var _ptop = $self.css('padding-top');
var _pbottom = $self.css('padding-bottom');
$self.css({ 'height': _top + op.rowHeight + parseInt(_ptop) + parseInt(_pbottom) + 1 });
}
if (op.running.rowSelected && lastCell) {
if (op.running.rowSelected.jfgridRowData[op.mainId]) {
op.running.rowSelected.jfgridRowData[op.mainId] == row.jfgridRowData[op.mainId] && (lastCell.$cell.trigger('click'));
}
else {
op.running.rowSelected['jfnum'].value == row['jfnum'].value && (lastCell.$cell.trigger('click'));
}
}
},
updateRow: function (row, op) {
var map = {};
$.each(op.running.headData, function (i, col) {
map[col.data.name] = col.data;
});
$.each(row, function (id, _item) {
if (id != 'jfnum' && id != 'jfcheck' && id != 'jfsubGrid' && id != 'jfgridRowData') {
if (_item.value != row['jfgridRowData'][id]) {
_item.value = row['jfgridRowData'][id] || '';
formatterCell(_item.value, map[id], row['jfgridRowData'], _item, op);
}
}
});
},
// 后台数据加载
reload: function ($self, op) {
op.rowdatas = [];
if (op.isPage) {
learun.loading(true, '正在获取数据');
op.running.pageparam = op.running.pageparam || {
rows: 100, // 每页行数
page: 1, // 当前页
sidx: '', // 排序列
sord: '', // 排序类型
records: 0, // 总记录数
total: 0 // 总页数
};
op.running.pageparam.rows = op.rows;
op.running.pageparam.sidx = op.sidx;
op.running.pageparam.sord = op.sord;
op.running.pageparam.page = op.running.pageparam.page || 1;
op.running.pageparam.records = 0;
op.running.pageparam.total = 0;
op.param = op.param || {};
delete op.param['pagination'];
var _paramString = JSON.stringify(op.param);
if (op.running.paramString != _paramString) {
op.running.paramString = _paramString;
op.running.pageparam.page = 1;
}
op.param['pagination'] = JSON.stringify(op.running.pageparam);
learun.httpAsync('GET', op.url, op.param, function (data) {
learun.loading(false);
if (data) {
op.rowdatas = data.rows;
op.running.pageparam.page = data.page;
op.running.pageparam.records = data.records;
op.running.pageparam.total = data.total;
}
else {
op.rowdatas = [];
op.running.pageparam.page = 1;
op.running.pageparam.records = 0;
op.running.pageparam.total = 0;
}
op.onRenderBefore && op.onRenderBefore(op.rowdatas);
_jfgrid.dataRender($self, op, op.rowdatas, (op.running.pageparam.page - 1));
op.onRenderComplete && op.onRenderComplete(op.rowdatas);
});
} else {
learun.loading(true, '正在获取数据');
learun.httpAsync('GET', op.url, op.param, function (data) {
learun.loading(false);
op.rowdatas = data || [];
op.onRenderBefore && op.onRenderBefore(op.rowdatas);
_jfgrid.dataRender($self, op, op.rowdatas, 0);
op.onRenderComplete && op.onRenderComplete(op.rowdatas);
});
}
//liang解决刷新后选择的行不能清除的问题
op.running.rowSelected = undefined;
},
// 数据转换
listTotree: function (data, op) {
// 只适合小数据计算
var resdata = [];
var mapdata = {};
var mIds = {};
var pIds = {};
data = data || [];
for (var i = 0, l = data.length; i < l; i++) {
var item = data[i];
mIds[item[op.mainId]] = 1;
mapdata[item[op.parentId]] = mapdata[item[op.parentId]] || [];
mapdata[item[op.parentId]].push(item);
if (mIds[item[op.parentId]] == 1) {
delete pIds[item[op.parentId]];
}
else {
pIds[item[op.parentId]] = 1;
}
if (pIds[item[op.mainId]] == 1) {
delete pIds[item[op.mainId]];
}
}
for (var id in pIds) {
_fn(resdata, id);
}
function _fn(_data, vparentId) {
var pdata = mapdata[vparentId] || [];
for (var j = 0, l = pdata.length; j < l; j++) {
var _row = {
data: pdata[j],
childRows: []
}
_fn(_row.childRows, pdata[j][op.mainId]);
_data.push(_row);
}
}
return resdata;
},
// 树形展开或关闭
expandTree: function ($et, op) {
var _h = 0;
var flag = false;
// 获取当前数据所在行
var rownum = $et.parents('.jfgrid-data-cell').attr('rownum');
var rowIndex = parseInt(rownum.replace(op.id + '_', ''));
var rowItem = op.running.rowdata[rowIndex];
if ($et.hasClass('fa-caret-down')) {// 关闭s
rowItem.lrClosedRows = {};
for (var i = rowIndex + 1, l = op.running.rowdata.length; i < l; i++) {
var _row = op.running.rowdata[i];
if (_row.jfdeep > rowItem.jfdeep && !flag) {
if (!$('[rownum="' + op.id + '_' + i + '"]').is(':hidden')) {
_h += op.rowHeight;
$('[rownum="' + op.id + '_' + i + '"]').hide();
rowItem.lrClosedRows[i] = '1';
}
}
else {
flag = true;
var top = parseInt($('[rownum="' + op.id + '_' + i + '"]').eq(0).css('top').replace('px', '')) - _h;
$('[rownum="' + op.id + '_' + i + '"]').css({ top: top });
}
}
$et.removeClass('fa-caret-down');
$et.addClass('fa-caret-right');
}
else {// 展开
for (var i = rowIndex + 1, l = op.running.rowdata.length; i < l; i++) {
var _row = op.running.rowdata[i];
if (_row.jfdeep > rowItem.jfdeep && !flag) {
if (rowItem.lrClosedRows[i]) {
_h += op.rowHeight;
$('[rownum="' + op.id + '_' + i + '"]').show();
}
}
else {
flag = true;
var top = parseInt($('[rownum="' + op.id + '_' + i + '"]').eq(0).css('top').replace('px', '')) + _h;
$('[rownum="' + op.id + '_' + i + '"]').css({ top: top });
}
}
$et.removeClass('fa-caret-right');
$et.addClass('fa-caret-down');
}
$('#jfgrid_left_' + op.id + ' .jfgrid-selected,#jfgrid_right_' + op.id + ' .jfgrid-selected').removeClass('jfgrid-selected');
op.running.rowSelected = null;
},
// 排序
sortCol: function ($self, $et, op) {
var path = $et.attr('path');
var head = op.running.headData[path];
if (head.last && !head.data.sort && op.isPage) {
var isup = true;
if (op.running.sorthead) {
op.running.sorthead.$cell.find('.jfgrid-heed-sort').hide();
if (head == op.running.sorthead) {
var $i = head.$cell.find('.jfgrid-heed-sort .active');
$i.removeClass('active');
if ($i.hasClass('fa-caret-up')) {
head.$cell.find('.jfgrid-heed-sort .fa-caret-down').addClass('active');
isup = false;
}
else {
head.$cell.find('.jfgrid-heed-sort .fa-caret-up').addClass('active');
isup = true;
}
head.$cell.find('.jfgrid-heed-sort').show();
}
else {
head.$cell.find('.jfgrid-heed-sort .active').removeClass('active');
head.$cell.find('.jfgrid-heed-sort .fa-caret-up').addClass('active');
head.$cell.find('.jfgrid-heed-sort').show();
isup = true;
}
}
else {
head.$cell.find('.jfgrid-heed-sort .active').removeClass('active');
head.$cell.find('.jfgrid-heed-sort .fa-caret-up').addClass('active');
head.$cell.find('.jfgrid-heed-sort').show();
isup = true;
}
op.running.sorthead = head;
if (op.isPage) {
// 调用后台接口
op.sidx = head.data.name;
op.sord = isup ? 'ASC' : 'DESC';
_jfgrid.reload($self, op);
}
else {
// js排序
}
}
},
// 单击行
clickRow: function ($self, $et, op) {
var $cell = $et;
var rownum = $et.attr('rownum');
if (!rownum) {
$cell = $et.parents('.jfgrid-data-cell');
rownum = $cell.attr('rownum');
}
var rowIndex = parseInt(rownum.replace(op.id + '_', ''));
// 获取当前行数据
var rowItem = op.running.rowdata[rowIndex];
var rowData = rowItem['jfgridRowData'];
// 判断当前单元格是否是可编辑
var colname = $cell.attr('colname');
var isEdit = false;
$.each(op.running.headData, function (i, col) {
if (col.data.name == colname) {
if (col.data.edit && col.$edit && col.data.edit.type != 'layer' && col.data.isRead != '1' && rowData.lrnotedit != '1') {
isEdit = true;
var _top = $cell.css('top');
var _left = $cell.css('left');
var _width = $cell.css('width');
col.$edit.css({ 'top': _top, 'left': _left, 'width': _width, 'height': op.rowHeight }).show();
var $edit = col.$edit.find('#jfgrid_edit_' + op.id + '_' + col.data.name);
$edit.unbind('change');
col.data.edit.init && col.data.edit.init(rowData, $edit);
switch (col.data.edit.type) {
case 'input': // 输入框 文本,数字,密码
$edit.unbind('input propertychange');
var texttmp = rowData[colname]
if (texttmp == null || texttmp == undefined) {
texttmp = ''
}
$edit.val(texttmp);
formatterCell(texttmp, col.data, rowData, rowItem[col.data.name], op);
$edit.select();
$edit.on("input propertychange", function (e) {
var value = $(this).val();
rowData[colname] = value;
col.data.edit.change && col.data.edit.change(rowData, rowIndex);
value = rowData[colname];
$(this).val(value);
formatterCell(value, col.data, rowData, rowItem[col.data.name], op);
});
break;
case 'select': // 下拉框选择
if (rowData[colname] == 0) {
$edit.lrselectSet(rowData[colname]);
}
else {
$edit.lrselectSet(rowData[colname] || '');
}
$edit.on('change', function () {
var $this = $(this);
var value = $this.lrselectGet();
var item = $this.lrselectGetEx();
rowData[colname] = value;
col.data.edit.change && col.data.edit.change(rowData, rowIndex, item);
formatterCell(value, col.data, rowData, rowItem[col.data.name], op);
});
break;
case 'radio': // 单选
$edit.find('input').unbind('click');
$edit.find('input[value="' + (rowData[colname] || '') + '"]').trigger('click');
$edit.find('input').on('click', function () {
var value = $(this).val();
if (rowData[colname] != value) {
rowData[colname] = value;
col.data.edit.change && col.data.edit.change(rowData, rowIndex);
formatterCell(value, col.data, rowData, rowItem[col.data.name], op);
}
});
if ((rowData[colname] == '' || rowData[colname] == null || rowData[colname] == undefined) && col.data.edit.dfvalue) {
$edit.find('input[value="' + col.data.edit.dfvalue + '"]').trigger('click');
}
break;
case 'checkbox': // 多选
$edit.find('input').unbind('click');
var _oldv = rowData[colname] || '';
var _cbmap = {};
var _cbValue = rowData[colname] || col.data.edit.dfvalue || '';
_cbValue += '';
rowData[colname] = _cbValue;
var _cbValueList = _cbValue.split(',');
$.each(_cbValueList, function (_index, _item) {
_cbmap[_item] = '1';
});
$edit.find('input').each(function () {
var $this = $(this);
var _v = $this.val();
if ($this.is(':checked') && !_cbmap[_v]) {
$this.trigger('click');
}
else if (!$this.is(':checked') && _cbmap[_v]) {
$this.trigger('click');
}
$this = null;
});
if (_oldv != rowData[colname]) {
col.data.edit.change && col.data.edit.change(rowData, rowIndex);
formatterCell(rowData[colname], col.data, rowData, rowItem[col.data.name], op);
}
$edit.find('input').on('click', function () {
var $this = $(this);
var value = $this.val();
var _v = rowData[colname].split(',');
var _vmap = {};
var v = [];
$.each(_v, function (_index, _item) {
if (_item !== '' && _item !== undefined && _item !== null) {
_vmap[_item] = _index;
v.push(_item);
}
});
if ($this.is(':checked')) {
if (_vmap[value] == undefined) {
v.push(value);
}
}
else {
if (_vmap[value] != undefined) {
v.splice(_vmap[value], 1);
}
}
rowData[colname] = String(v);
col.data.edit.change && col.data.edit.change(rowData, rowIndex);
formatterCell(rowData[colname], col.data, rowData, rowItem[col.data.name], op);
});
break;
case 'datatime': // 时间
$edit.unbind('change');
$edit.val(rowData[colname] || '');
$edit.select();
$edit.on("change", function (e) {
var value = $(this).val();
rowData[colname] = value;
col.data.edit.change && col.data.edit.change(rowData, rowIndex);
formatterCell(value, col.data, rowData, rowItem[col.data.name], op);
});
break;
case 'layer': // 弹层
break;
}
}
return false;
}
});
if (!isEdit) {
if (op.isMultiselect) {
var _cbValue = rowItem['jfcheck'].value;
if ((_cbValue + '') == '1') {
rowItem['jfcheck'].$cell.find('img').attr('src', imageurl + cb[0]);
rowItem['jfcheck'].value = 0;
op.multiselectfield && (rowData[op.multiselectfield] = 0);
op.onSelectRow && op.onSelectRow(rowData, false);
if (!op.running.checkAlling) {
var _flag = false;
$.each(op.running.rowdata, function (_index, _item) {
if (_item['jfcheck'].value + '' == '1') {
_flag = true;
return false;
}
});
if (_flag) {
$self.find('#jfgrid_all_cb_' + op.id).attr('src', imageurl + cb[2]);
}
else {
$self.find('#jfgrid_all_cb_' + op.id).attr('src', imageurl + cb[0]);
}
}
}
else {
rowItem['jfcheck'].$cell.find('img').attr('src', imageurl + cb[1]);
rowItem['jfcheck'].value = 1;
op.multiselectfield && (rowData[op.multiselectfield] = 1);
op.onSelectRow && op.onSelectRow(rowData, true);
if (!op.running.checkAlling) {
var _flag = false;
$.each(op.running.rowdata, function (_index, _item) {
if (_item['jfcheck'].value + '' == '0') {
_flag = true;
return false;
}
});
if (_flag) {
$self.find('#jfgrid_all_cb_' + op.id).attr('src', imageurl + cb[2]);
}
else {
$self.find('#jfgrid_all_cb_' + op.id).attr('src', imageurl + cb[1]);
}
}
}
}
else {
$self.find('#jfgrid_left_' + op.id + ' .jfgrid-selected,#jfgrid_right_' + op.id + ' .jfgrid-selected').removeClass('jfgrid-selected');
$self.find('[rownum="' + rownum + '"]').addClass('jfgrid-selected');
op.onSelectRow && op.onSelectRow(rowData);
op.running.rowSelected = rowItem;
}
}
else {
$self.find('#jfgrid_left_' + op.id + ' .jfgrid-selected,#jfgrid_right_' + op.id + ' .jfgrid-selected').removeClass('jfgrid-selected');
op.running.rowSelected = null;
}
},
// 选中所有行
checkAllRows: function ($self, $et, op) {
// 判断当前是否是选中还是不选中
var imgsrc = $et.attr('src').replace(imageurl, '');
var ischecked = false;
if (imgsrc == cb[1]) {
ischecked = true;
$et.attr('src', imageurl + cb[0]);
}
else {
$et.attr('src', imageurl + cb[1]);
}
op.running.checkAlling = true;
$.each(op.running.rowdata, function (_index, _item) {
if (_item['jfcheck'].value + '' == '0' && !ischecked) {
_item['jfcheck'].$cell.trigger('click');
}
else if (_item['jfcheck'].value + '' == '1' && ischecked) {
_item['jfcheck'].$cell.trigger('click');
}
});
op.running.checkAlling = false;
},
// 展开子表区域
expandSub: function ($self, $et, op) {
var $cell = $et;
var rownum = $et.attr('rownum');
if (!rownum) {
$cell = $et.parents('.jfgrid-data-cell');
rownum = $cell.attr('rownum');
}
var rowIndex = parseInt(rownum.replace(op.id + '_', ''));
// 获取当前行数据
var rowItem = op.running.rowdata[rowIndex];
var rowData = rowItem['jfgridRowData'];
//
var $body = $self.find('#jfgrid_body_' + op.id);
var $left = $self.find('#jfgrid_left_' + op.id);
var $right = $self.find('#jfgrid_right_' + op.id);
$left.hide();
$right.hide();
var subid = op.id + '_sub_' + rowIndex;
var height = $('#' + op.id + '_sub_' + (op.running.rowdata.length - 1)).height() + op.running.rowdata[op.running.rowdata.length - 1]['jfsubGrid'].top + op.rowHeight;
if (rowItem['jfsubGrid'].value) {
rowItem['jfsubGrid'].value = false;
var $sub = $('#' + subid);
$sub.remove();
rowItem['jfsubGrid'].$cell.html('');
// 调整单元格位置
for (var i = rowIndex + 1, l = op.running.rowdata.length; i < l; i++) {
var item = op.running.rowdata[i];
$.each(item, function (_index, _item) {
if (_item.top != undefined) {
_item.top = _item.top - op.subGridHeight;
_item.$cell.css({ 'top': _item.top });
}
});
var _$subid = $('#' + op.id + '_sub_' + i);
if (_$subid.length > 0) {
_$subid.css({ top: item['jfsubGrid'].top + op.rowHeight });
}
}
$left.css({ 'height': height - op.subGridHeight });
$right.css({ 'height': height - op.subGridHeight });
}
else {
rowItem['jfsubGrid'].value = true;
var width = $body.width();
rowItem['jfsubGrid'].$cell.html('');
var subContentId = learun.newGuid();
var $sub = $('
').css({ 'left': 0, 'top': rowItem['jfsubGrid'].top + op.rowHeight, 'height': op.subGridHeight, 'width': width });
// 调整单元格位置
for (var i = rowIndex + 1, l = op.running.rowdata.length; i < l; i++) {
var item = op.running.rowdata[i];
$.each(item, function (_index, _item) {
if (_item.top != undefined) {
_item.top += op.subGridHeight;
_item.$cell.css({ 'top': _item.top });
}
});
//
var _$subid = $('#' + op.id + '_sub_' + i);
if (_$subid.length > 0) {
_$subid.css({ top: item['jfsubGrid'].top + op.rowHeight });
}
}
$left.append($sub);
$left.css({ 'height': height + op.subGridHeight });
$right.css({ 'height': height + op.subGridHeight });
op.subGridExpanded && op.subGridExpanded(subContentId, rowItem['jfgridRowData']);
}
$left.show();
$right.show();
},
// 获取选中行
getCheckRow: function ($self, op) {
var res = [];
$.each(op.running.rowdata, function (_index, _item) {
if (_item['jfcheck'].value == 1) {
res.push(_item['jfgridRowData']);
}
});
return res;
},
// 上移
moveUp: function ($self, op, index) {
if (index > 0) {
var flag = true;
var _item = op.rowdatas[index];
if (op.isTree) {
flag = false;
if (op.running.rowdata[index].jfdeep <= op.running.rowdata[index - 1].jfdeep) {
for (var i = index - 1; i >= 0; i--) {
if (op.running.rowdata[index].jfdeep == op.running.rowdata[i].jfdeep) {
flag = true;
op.rowdatas[index] = op.rowdatas[i];
op.rowdatas[i] = _item;
break;
}
}
}
}
else {
op.rowdatas[index] = op.rowdatas[index - 1];
op.rowdatas[index - 1] = _item;
}
_jfgrid.dataRender($self, op, op.rowdatas);
return true;
}
return false;
},
// 下移
moveDown: function ($self, op, index) {
if (index < op.rowdatas.length - 1) {
var flag = true;
var _item = op.rowdatas[index];
if (op.isTree) {
flag = false;
for (var i = index + 1, l = op.rowdatas.length; i < l; i++) {
if (op.running.rowdata[index].jfdeep > op.running.rowdata[i].jfdeep) {
break;
}
if (op.running.rowdata[index].jfdeep == op.running.rowdata[i].jfdeep) {
flag = true;
op.rowdatas[index] = op.rowdatas[i];
op.rowdatas[i] = _item;
break;
}
}
}
else {
op.rowdatas[index] = op.rowdatas[index + 1];
op.rowdatas[index + 1] = _item;
}
_jfgrid.dataRender($self, op, op.rowdatas);
return true;
}
return false;
},
turnPage: function (e) {
var $this = $(this);
var $self = $('#' + $this.attr('id').replace('jfgrid_page_bar_num_', ''));
var op = $self[0].dfop;
var et = e.target || e.srcElement;
var $et = $(et);
if ($et.hasClass('pagebtn')) {
var page = parseInt($et.text());
if (page != op.running.pageparam.page) {
$this.find('.active').removeClass('active');
$et.addClass('active');
op.running.pageparam.page = page;
_jfgrid.reload($self, op);
}
}
},
turnPage2: function (e) {
var $this = $(this);
var op = e.data.op;
var name = $this.text();
var $pagenum = $('#jfgrid_page_bar_num_' + op.id);
var page = parseInt($pagenum.find('.active').text());
var falg = false;
switch (name) {
case '首页':
if (page != 1) {
op.running.pageparam.page = 1;
falg = true;
}
break;
case '上一页':
if (page > 1) {
op.running.pageparam.page = page - 1;
falg = true;
}
break;
case '下一页':
if (page < op.running.pageparam.total) {
op.running.pageparam.page = page + 1;
falg = true;
}
break;
case '尾页':
if (page != op.running.pageparam.total) {
op.running.pageparam.page = op.running.pageparam.total;
falg = true;
}
break;
case '跳转':
var text = $this.parents('#jfgrid_page_bar_nums_' + op.id).find('input').val();
if (!!text) {
var p = parseInt(text);
if (String(p) != 'NaN') {
if (p < 1) {
p = 1;
}
if (p > op.running.pageparam.total) {
p = op.running.pageparam.total;
}
op.running.pageparam.page = p;
falg = true;
}
}
break;
}
if (falg) {
_jfgrid.reload($('#' + op.id), op);
}
},
// 打印处理
print: function ($self) {
var dfop = $self[0].dfop;
var $table = $('
');
// 获取表头数据
var thlist = [];
function cTh(_data, _index) {
var res = _data.length;
$.each(_data, function (id, item) {
thlist[_index] = thlist[_index] || $('
');
var $th = $('
' + item.label + '
');
if (!!item.children && item.children.length > 0) {
var num = cTh(item.children, _index + 1);
res = res + num - 1;
$th.attr('colspan', num);
}
var _row = item.height / 28;
$th.attr('rowspan', _row);
$th.css('text-align', item.align);
thlist[_index].append($th);
});
return res;
}
cTh(dfop.headData, 0);
$.each(thlist, function (id, item) {
$table.append(item);
});
$.each(dfop.rowdatas, function (index, item) {
var $tr = $('
');
$self.find('[rownum="' + dfop.id + '_' + index + '"]').each(function () {
var $cell = $(this);
var colname = $cell.attr('colname');
if (!!colname && colname != 'jfgrid_num' && colname != 'jfgrid_multiselect' && colname != 'jfgrid_subGrid') {
var $td = $('
' + $cell.html() + '
');
$td.css('text-align', $cell.css('text-align'));
$tr.append($td);
}
});
$table.append($tr);
});
dfop = null;
return $table;
}
};
$.fn.jfGrid = function (op) {
var $self = $(this);
if (!$self[0] || $self[0].dfop) {
return $self;
}
var id = $self.attr('id');
if (id == null || id == undefined || id == '') {
id = "jfgrid" + new Date().getTime();
$self.attr('id', id);
}
var dfop = {
url: '', // 数据服务地址
param: {}, // 请求参数
rowdatas: [], // 列表数据
headData: [], // 列数据
isShowNum: true, // 是否显示序号
isMultiselect: false, // 是否允许多选
multiselectfield: '', // 多选绑定字段
isSubGrid: false, // 是否有子表
subGridExpanded: false, // 子表展开后调用函数
subGridHeight: 300,
onSelectRow: false, // 选中一行后回调函数
dblclick: false,
onRenderComplete: false, // 表格加载完后调用
onRenderBefore: false, // 渲染表单前执行
onAddRow: false, // 添加一行数据后执行
onMinusRow: false, // 删除一行数据后执行
beforeMinusRow: false, // 删除一行数据前执行
isPage: false, // 是否分页默认是不分页(目前只支持服务端分页)
rows: 30,
sidx: '',
sord: 'ASC',
isTreeClose: false, // 默认打开
isTree: false, // 是否树形显示(没有分页的情况下才支持) (只有在数据不多情况下才建议使用)
mainId: 'id', // 关联的主键
parentId: 'parentId', // 树形关联字段
isEdit: false, // 是否允许增删行
isAutoHeight: false, // 自动适应表格高度
height: 0,
rowHeight: 28, // 行高
numRowWitdh: 30 // 序号列宽度
};
if (!!op) {
$.extend(dfop, op);
}
dfop.id = id;
$self[0].dfop = dfop;
dfop.running = {};
if (dfop.isMultiselect) {
for (var i = 0; i < 3; i++) {
var im = new Image();
im.src = imageurl + cb[i];
}
}
_jfgrid.init($self, dfop);
dfop = null;
return $self;
};
$.fn.jfGridSet = function (name, data) {
var $self = $(this);
if (!$self[0]) {
return null;
}
var dfop = $self[0].dfop;
if (!dfop) {
return null;
}
switch (name) {
case 'reload': // 重新加载一边数据
if (data == undefined || data == null) {
_jfgrid.reload($self, dfop);
}
else {
data = data || dfop.param || {};
dfop.param = data.param || data;
_jfgrid.reload($self, dfop);
}
break;
case 'reloadall'://重新加载所有数据
dfop.rows = 1000000;
data = data || dfop.param || {};
dfop.param = data.param || data;
dfop.running.pageparam.page = 1;
_jfgrid.reload($self, dfop);
break;
case 'refresh':
break;
case 'refreshdata':
if (data) {
dfop.rowdatas = data.rowdatas || data;
}
_jfgrid.dataRender($self, dfop, dfop.rowdatas);
//liang解决刷新后选择的行不能清除的问题
dfop.running.rowSelected = undefined;
break;
case 'addRow':
dfop.rowdatas.push(data || {});
_jfgrid.rowRender($self, dfop, data || {}, 0);
$self.find('#jfgrid_nodata_img_' + dfop.id).hide();
break;
case 'removeRow':
$.each(dfop.rowdatas, function (_index, _item) {
if (dfop.mainId && data) {
if (_item[dfop.mainId] == data) {
dfop.rowdatas.splice(_index, 1);
return false;
}
}
else {
if (_item == dfop.running.rowSelected.jfgridRowData) {
dfop.rowdatas.splice(_index, 1);
return false;
}
}
});
var _$self = $self;
setTimeout(function () {
_jfgrid.dataRender(_$self, _$self[0].dfop, _$self[0].dfop.rowdatas, 0);
_$self = null;
}, 100);
break;
case 'nocheck':
if (dfop.isMultiselect) {
$.each(dfop.running.rowdata, function (_index, _item) {
if (_item['jfgridRowData'][dfop.mainId] == data) {
if (_item['jfcheck'].value == 1) {
_item['jfcheck'].$cell.trigger('click');
}
return false;
}
});
}
break;
case 'setcheck':
if (dfop.isMultiselect) {
$.each(dfop.running.rowdata, function (_index, _item) {
if (_item['jfgridRowData'][dfop.mainId] == data) {
if (_item['jfcheck'].value == 0) {
_item['jfcheck'].$cell.trigger('click');
}
return false;
}
});
}
break;
case 'updateRow':
if (dfop.running.rowdata[data]) {
_jfgrid.updateRow(dfop.running.rowdata[data], dfop);
}
else if (dfop.running.rowSelected) {
_jfgrid.updateRow(dfop.running.rowSelected, dfop);
}
break;
case 'moveUp':
return _jfgrid.moveUp($self, dfop, data);
break;
case 'moveDown':
return _jfgrid.moveDown($self, dfop, data);
break;
}
dfop = null;
$self = null;
};
$.fn.jfGridGet = function (name) {
var $self = $(this);
var op = $self[0].dfop;
if (!op) {
return null;
}
switch (name) {
case 'rowdata':
if (op.isMultiselect) {
return _jfgrid.getCheckRow($self, op);
}
else {
if (op.running.rowSelected) {
if (op.running.rowdata[op.running.rowSelected.jfnum.value - 1] && op.running.rowSelected.jfgridRowData == op.running.rowdata[op.running.rowSelected.jfnum.value - 1].jfgridRowData) {
return op.running.rowSelected['jfgridRowData'];
}
else {
op.running.rowSelected = null;
return {};
}
}
else {
return {};
}
}
break;
case 'rowdatas':
return op.rowdatas;
break;
case 'rowdatasByArray':
break;
case 'settingInfo':
return op;
break;
case 'headData':
break;
case 'showData':
var res = [];
$.each(op.running.rowdata, function (_index, _item) {
var point = {};
$.each(_item, function (_jindex, _jitem) {
if (_jindex != 'jfgridRowData' && _jindex != 'jfnum' && _jindex != 'jfcheck' && _jindex != 'jfsubGrid') {
point[_jindex] = _jitem.text;
}
});
if (op.running.hideHead) {
$.each(op.running.hideHead, function (_hindex, _hitem) {
point[_hitem.name] = _item.jfgridRowData[_hitem.name];
});
}
res.push(point);
});
return res;
break;
}
op = null;
};
$.fn.jfGridValue = function (name) {
var $self = $(this);
var op = $self[0].dfop;
if (!op) {
return null;
}
if (op.isMultiselect) {
var res = [];
var list = _jfgrid.getCheckRow($self, op);
$.each(list, function (_index, _item) {
res.push(_item[name]);
});
return String(res);
}
else {
if (op.running.rowSelected) {
if (op.running.rowdata[op.running.rowSelected.jfnum.value - 1] && op.running.rowSelected.jfgridRowData == op.running.rowdata[op.running.rowSelected.jfnum.value - 1].jfgridRowData) {
return op.running.rowSelected['jfgridRowData'][name];
}
else {
op.running.rowSelected = null;
return '';
}
}
else {
return '';
}
}
};
// 打印处理
$.fn.jfGridPrint = function () {
var $self = $(this);
return _jfgrid.print($self);
}
})(window.jQuery, top.learun);