423 lines
19 KiB
JavaScript
423 lines
19 KiB
JavaScript
![]() |
/**
|
|||
|
* 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);
|
|||
|
});
|