Files
HTCloud/HT.Cloud.Web/wwwroot/js/lay-module/waterCloud/commonTable.js

423 lines
19 KiB
JavaScript
Raw Normal View History

2023-03-03 16:07:50 +08:00
/**
* date:2020/09/29
* author:Mr.Q
* version:1.6
* description:watercloud 主体框架扩展
*/
layui.define(["jquery", "layer", 'table', 'soulTable', 'common', 'tabletree'], function (exports) {
var $ = layui.jquery,
layer = layui.layer,
soulTable = layui.soulTable,
tabletree = layui.tabletree,
common = layui.common,
table = layui.table;
var obj = {
//table渲染封装里面有字段权限
rendertable: function (options) {
var serchHeight = parseInt(60 + ($(".table-search-fieldset").height() || 0));
var defaults = {
elem: '#currentTableId',//主键
toolbar: '#toolbarDemo',//工具栏
defaultToolbar: ['filter', 'exports', 'print'],//默认工具栏
search: true,//搜索按钮
method: 'get',//请求方法
cellMinWidth: 100,//最小宽度
limit: 10,//每页数据 默认
limits: [10, 20, 30, 40, 50],
id:'currentTableId',
height: 'full-' + serchHeight,
loading: false,
autoSort: false,
page: { //支持传入 laypage 组件的所有参数某些参数除外jump/elem - 详见文档
layout: ['skip', 'prev', 'page', 'next', 'limit', 'count'] //自定义分页布局
,curr: 1 //设定初始在第 1 页
, groups: 3 //只显示 1 个连续页码
, first: false //不显示首页
, last: false //不显示尾页
},
authorizeFields: true, // 字段权限开关
autoColumnWidth: true,
overflow: { // 默认所有表格都超出
type: 'tips'
, hoverTime: 300 // 悬停时间单位ms, 悬停 hoverTime 后才会显示,默认为 0
, color: 'black' // 字体颜色
, bgColor: 'white' // 背景色
, header: true, // 表头支持 overflow
total: true // 合计行支持 overflow
},
contextmenu: {
header: [
{
name: '复制',
icon: 'layui-icon layui-icon-template',
click: function (obj) {
soulTable.copy(obj.text)
layer.msg('复制成功!')
}
},
{
name: '导出excel',
icon: 'layui-icon layui-icon-download-circle',
click: function () {
soulTable.export(this.id)
}
},
{
name: '重载表格',
icon: 'layui-icon layui-icon-refresh-1',
click: function () {
table.reload(this.id)
}
}
],
// 表格内容右键菜单配置
body: [
{
name: '复制',
icon: 'layui-icon layui-icon-template',
click: function (obj) {
soulTable.copy(obj.text)
layer.msg('复制成功!')
}
}
],
// 合计栏右键菜单配置
total: [{
name: '复制',
icon: 'layui-icon layui-icon-template',
click: function (obj) {
soulTable.copy(obj.text)
layer.msg('复制成功!')
}
}]
},
excel: {
filename: '表格信息' + new Date().formatDate() + '.xlsx',
},
request: {
pageName: 'page' //页码的参数名称默认page
, limitName: 'rows' //每页数据量的参数名默认limit
},
parseData: function (res) { //res 即为原始返回的数据
return {
"code": res.state, //解析接口状态
"msg": res.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
}
};
var doneCallback = options.done;
var options = $.extend(defaults, options);
if (document.body.clientWidth < 500 && !!options.defaultToolbar) {
for (var i = 0; i < options.defaultToolbar.length; i++) {
if (options.defaultToolbar[i] == "print") {
options.defaultToolbar.splice(i, 1);
}
}
}
if (options.search) {
options.defaultToolbar = !options.defaultToolbar ? [] : options.defaultToolbar;
options.defaultToolbar.push({
title: '搜索',
layEvent: 'TABLE_SEARCH',
icon: 'layui-icon-search'
});
}
//ie缓存问题
options.url = common.urlAddTime(options.url);
//字段权限
if (options.authorizeFields) {
options.cols = common.tableAuthorizeFields(options.cols);
}
options.done = function (res, curr, count) {
//关闭加载
//layer.closeAll('loading');
//固定列引发的问题
//table.resize(options.id);
//obj.tableResize(options.id);
if (doneCallback) {
doneCallback(res, curr, count);
}
soulTable.render(this);
table.resize();
};
return table.render(options);
},
//table刷新
reloadtable: function (options) {
layer.load(0, { shade: false });
var defaults = {
elem: 'currentTableId',//主键
page: true,//分页参数
curr: 1,//当前页
where: {}
};
var options = $.extend(defaults, options);
options.where.time = new Date().Format("yyyy-MM-dd hh:mm:ss");
if (options.page) {
if (options.page == true) {
table.reload(options.elem, {
page: { //支持传入 laypage 组件的所有参数某些参数除外jump/elem - 详见文档
layout: ['skip', 'prev', 'page', 'next', 'limit', 'count'] //自定义分页布局
, groups: 3 //只显示 1 个连续页码
, first: false //不显示首页
, last: false, //不显示尾页
curr: options.curr
}
, where: options.where
}, 'data');
}
else {
table.reload(options.elem, {
page: options.page
, where: options.where
}, 'data');
}
}
else {
//执行搜索重载
table.reload(options.elem, {
where: options.where
}, 'data');
}
//关闭加载
layer.closeAll('loading');
},
//tabletree渲染封装里面有字段权限
rendertreetable: function (options) {
//样式不协调,先不加
var serchHeight = parseInt(60 + ($(".table-search-fieldset").height() || 0));
var defaults = {
elem: '#currentTableId',//主键
toolbar: '#toolbarDemo',//工具栏
defaultToolbar: ['filter', 'exports', 'print'],//默认工具栏
search: true,//搜索按钮
loading: false,
treeIdName: 'F_Id', // id字段名称
treePidName: 'F_ParentId', // pid字段名称
filter:true,
treeColIndex: 1,
treeSpid: 0,
limit: 99999,//每页数据 默认
page: { //支持传入 laypage 组件的所有参数某些参数除外jump/elem - 详见文档
layout: ['count'] //自定义分页布局
, first: false //不显示首页
, last: false //不显示尾页
},
height: 'full-' + serchHeight,
method: 'get',//请求方法
cellMinWidth: 60,//最小宽度
authorizeFields: true, // 字段权限开关
overflow: { // 默认所有表格都超出
type: 'tips'
, hoverTime: 300 // 悬停时间单位ms, 悬停 hoverTime 后才会显示,默认为 0
, color: 'black' // 字体颜色
, bgColor: 'white' // 背景色
, header: true, // 表头支持 overflow
total: true // 合计行支持 overflow
},
contextmenu: {
header: [
{
name: '复制',
icon: 'layui-icon layui-icon-template',
click: function (obj) {
soulTable.copy(obj.text)
layer.msg('复制成功!')
}
},
{
name: '导出excel',
icon: 'layui-icon layui-icon-download-circle',
click: function () {
soulTable.export(this.id)
}
},
{
name: '重载表格',
icon: 'layui-icon layui-icon-refresh-1',
click: function () {
table.reload(this.id)
}
}
],
// 表格内容右键菜单配置
body: [
{
name: '复制',
icon: 'layui-icon layui-icon-template',
click: function (obj) {
soulTable.copy(obj.text)
layer.msg('复制成功!')
}
}
],
// 合计栏右键菜单配置
total: [{
name: '复制',
icon: 'layui-icon layui-icon-template',
click: function (obj) {
soulTable.copy(obj.text)
layer.msg('复制成功!')
}
}]
},
excel: {
filename: '表格信息' + new Date().formatDate() + '.xlsx',
},
parseData: function (res) { //res 即为原始返回的数据
return {
"code": res.state, //解析接口状态
"msg": res.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
}
};
var doneCallback = options.done;
var options = $.extend(defaults, options);
if (document.body.clientWidth < 500 && !!options.defaultToolbar) {
for (var i = 0; i < options.defaultToolbar.length; i++) {
if (options.defaultToolbar[i] == "print") {
options.defaultToolbar.splice(i, 1);
}
}
}
//搜索框按钮
if (options.search) {
options.defaultToolbar = !options.defaultToolbar ? [] : options.defaultToolbar;
options.defaultToolbar.push({
title: '搜索',
layEvent: 'TABLE_SEARCH',
icon: 'layui-icon-search'
});
}
//ie缓存问题
options.url = common.urlAddTime(options.url);
//字段权限
if (options.authorizeFields) {
options.cols = common.tableAuthorizeFields(options.cols);
}
options.done = function (res, curr, count) {
//关闭加载
//layer.closeAll('loading');
if (doneCallback) {
doneCallback(res, curr, count);
}
table.resize();
};
tabletree.render(options);
return options;
},
//table行点击事件及按钮显示控制
tableRowClick: function (type, tableFilter, tableId, oneList, moreList, clickfunction) {
var oneList = !!oneList ? oneList : [];
var moreList = !!moreList ? moreList : [];
//type是checkbox或者radio
$(document).on("click", ".layui-table-body table.layui-table tbody tr", function () {
var obj = event ? event.target : event.srcElement;
// 获取事件名称
var tag = obj.tagName;
var index = $(this).attr('data-index');
var tableBox = $(this).parents('.layui-table-box');
//存在固定列
if (tableBox.find(".layui-table-fixed.layui-table-fixed-l").length > 0) {
tableDiv = tableBox.find(".layui-table-fixed.layui-table-fixed-l");
} else {
tableDiv = tableBox.find(".layui-table-body.layui-table-main");
}
var checkCell = tableDiv.find("tr[data-index=" + index + "]").find("td div.laytable-cell-" + type + " div.layui-form-" + type + " I");
if (checkCell.length > 0) {
//div和td生效
if (tag == 'DIV' || tag == "TD") {
checkCell.click();
}
}
});
//对td的单击事件进行拦截停止防止事件冒泡再次触发上述的单击事件Table的单击行事件不会拦截依然有效
$(document).on("click", "td div.laytable-cell-" + type + " div.layui-form-" + type + "", function (e) {
e.stopPropagation();
});
table.on('row(' + tableFilter+')', function (obj) {
obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
if (clickfunction) {
clickfunction(obj);
}
})
//多选框监听
table.on(type+'(' + tableFilter + ')', function (obj) {
//控制按钮
var data = table.checkStatus(tableId).data;
var buttonHumanized = sessionStorage.getItem('watercloudButtonHumanized');
if (!buttonHumanized) {
if (obj.type == "all") {
if (obj.checked && table.cache[tableId].length != 0) {
if (table.cache[tableId].length > 1) {
for (var i = 0; i < oneList.length; i++) {
$('[name="' + oneList[i] + '"]').addClass("layui-hide");
}
for (var i = 0; i < moreList.length; i++) {
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
}
}
else {
for (var i = 0; i < oneList.length; i++) {
$('[name="' + oneList[i] + '"]').removeClass("layui-hide");
}
for (var i = 0; i < moreList.length; i++) {
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
}
}
}
else {
for (var i = 0; i < oneList.length; i++) {
$('[name="' + oneList[i] + '"]').addClass("layui-hide");
}
for (var i = 0; i < moreList.length; i++) {
$('[name="' + moreList[i] + '"]').addClass("layui-hide");
}
}
}
else {
if (data.length > 1) {
for (var i = 0; i < oneList.length; i++) {
$('[name="' + oneList[i] + '"]').addClass("layui-hide");
}
for (var i = 0; i < moreList.length; i++) {
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
}
}
else if (data.length == 1) {
for (var i = 0; i < oneList.length; i++) {
$('[name="' + oneList[i] + '"]').removeClass("layui-hide");
}
for (var i = 0; i < moreList.length; i++) {
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
}
}
else {
for (var i = 0; i < oneList.length; i++) {
$('[name="' + oneList[i] + '"]').addClass("layui-hide");
}
for (var i = 0; i < moreList.length; i++) {
$('[name="' + moreList[i] + '"]').addClass("layui-hide");
}
}
}
}
else {
for (var i = 0; i < oneList.length; i++) {
$('[name="' + oneList[i] + '"]').removeClass("layui-hide");
}
for (var i = 0; i < moreList.length; i++) {
$('[name="' + moreList[i] + '"]').removeClass("layui-hide");
}
}
table.resize();
});
},
}
exports("commonTable", obj);
});