// 加载表格选择的表格插件
var initTableChooseUtil = {
setting: {}, // 支出多个一个页面多个配置文件的加载
options: {
id: "", // 表格加载的位置
indexRow: 0, // 表格行计数器
cols: [], // 列属性,{id: 'materialId',
// title: '商品',
// formType: 'input', formType展示方式 select:下拉框 input:普通输入框 chooseInput:选择输入框 detail:展示,只加载
|
// width: '150',
// iconClassName: 'chooseProductBtn', 当formType为chooseInput时,指定的icon图标的class属性
// className: '额外的class属性',
// verify: 'required|number',
// value: '默认值',
// valueKey: '回显时要展示数据里面的那个key',
// layFilter: '可以方便指定监听事件',
// saveKey: '保存数据时指定的那个key'}
deleteRowCallback: function () {trId}, // 删除行之后的回调函数
addRowCallback: function (rowIndexStr) {}, // 新增行之后的回调函数
form: null, // form表单对象
}, // 表格参数数据
/**
* 初始化表格
*
* @param _options 表格属性
*/
initTable: function (_options) {
if (isNull(_options.id)) {
winui.window.msg('id 不能为空', {icon: 2, time: 2000});
return false;
}
var newOptions = $.extend(true, initTableChooseUtil.options, _options);
initTableChooseUtil.setting[_options.id] = newOptions;
initTableChooseUtil.initTableHtml(newOptions);
initTableChooseUtil.initEvent(_options.id);
initTableChooseUtil.addRow(_options.id);
},
/**
* 初始化表格
*/
initTableHtml: function (newOptions) {
var table = '' +
' ' +
' ' +
' ' +
' ' +
' ' +
' ' +
'
';
$("#" + newOptions.id).html(table);
var headerStr = ' | ';
$.each(newOptions.cols, function (i, item) {
headerStr += '' + item.title + ' | ';
});
$("#header" + newOptions.id).html(headerStr);
},
/**
* 初始化点击事件
*
* @param id
*/
initEvent: function (id) {
// 新增行
$("body").on("click", "#addRow" + id, function() {
var pointBtnBoxId = $(this).attr("id").replace("addRow", "");
initTableChooseUtil.addRow(pointBtnBoxId);
});
// 删除行
$("body").on("click", "#deleteRow" + id, function() {
var pointBtnBoxId = $(this).attr("id").replace("addRow", "");
initTableChooseUtil.deleteRow(pointBtnBoxId);
});
},
/**
* 新增行
*
* @param id
*/
addRow: function (id) {
// 获取配置
var options = initTableChooseUtil.setting[id];
var rowIndexStr = id + options.indexRow.toString();
var tbodyStr = ' | ';
$.each(options.cols, function (i, item) {
var tdId = item.id + rowIndexStr;
var value = isNull(item.value) ? "" : item.value;
var className = isNull(item.className) ? "" : item.className;
var verify = isNull(item.verify) ? "" : item.verify;
if (item.formType == 'input') {
tbodyStr += ' | ';
} else if (item.formType == 'chooseInput') {
tbodyStr += '' +
' | ';
} else if (item.formType == 'select') {
tbodyStr += ' | ';
} else if (item.formType == 'detail') {
tbodyStr += ' | ';
}
});
tbodyStr += '
';
$("#table" + id).append(tbodyStr);
options.form.render();
options.indexRow = options.indexRow + 1;
initTableChooseUtil.setting[id] = options;
if(typeof(initTableChooseUtil.addRowCallback) == "function") {
initTableChooseUtil.addRowCallback(rowIndexStr);
}
},
/**
* 删除行
*
* @param id
*/
deleteRow: function (id) {
var checkRow = $("#table" + id + " input[type='checkbox'][name='tableCheckRow']:checked");
if (checkRow.length > 0) {
$.each(checkRow, function (i, item) {
var trId = $(item).parent().parent().attr("trcusid");
if (typeof (initTableChooseUtil.deleteRowCallback) == "function") {
initTableChooseUtil.deleteRowCallback(trId);
}
// 移除界面上的信息
$(item).parent().parent().remove();
});
} else {
winui.window.msg('请选择要删除的行', {icon: 2, time: 2000});
}
},
/**
* 获取数据
*
* @param id
*/
getDataList: function (id) {
// 获取配置
var options = initTableChooseUtil.setting[id];
var result = [];
var rowTr = $("#table" + id + " tr");
$.each(rowTr, function (i, item) {
var trId = $(item).attr("trcusid");
var rowIndexStr = trId.replace("tr", "");
var row = {};
$.each(options.cols, function (j, bean) {
if (!isNull(bean.saveKey)) {
// saveKey不为空时,指定key-value
var tdId = bean.id + rowIndexStr;
var value = "";
if (bean.formType == 'input') {
value = $("#" + tdId).val();
} else if (bean.formType == 'select') {
value = $("#" + tdId).val();
} else if (bean.formType == 'detail') {
value = $("#" + tdId).html();
}
row[bean.saveKey] = value;
}
});
result.push(row);
});
return result;
},
/**
* 获取指定表格每一行的rowIndex
*
* @param id
*/
getDataRowIndex: function (id) {
// 获取配置
var result = [];
var rowTr = $("#table" + id + " tr");
$.each(rowTr, function (i, item) {
var trId = $(item).attr("trcusid");
var rowIndexStr = trId.replace("tr", "");
result.push(rowIndexStr);
});
return result;
},
}