/** * 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); });