/** * date:2020/02/27 * author:Mr.Q * version:1.6 * description:watercloud 主体框架扩展 */ layui.define(["jquery", "layer", 'table', 'treeTable', 'xmSelect', 'miniTab'], function (exports) { var $ = layui.jquery, miniTab = layui.miniTab, layer = layui.layer, treeTable = layui.treeTable, xmSelect = layui.xmSelect; var obj = { //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, checkOther:false,//关闭复选框联动 tree: { iconIndex: 0, // 折叠图标显示在第几列 多选等记得修改 isPidData: true, // 是否是id、pid形式数据 idName: 'F_Id', // id字段名称 pidName: 'F_ParentId', // pid字段名称 arrowType: 'arrow2', getIcon: 'ew-tree-icon-style2', }, height: 'full-' + serchHeight, method: 'get',//请求方法 cellMinWidth: 60,//最小宽度 authorizeFields: true, // 字段权限开关 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 = obj.urlAddTime(options.url); //字段权限 if (options.authorizeFields) { options.cols = obj.tableAuthorizeFields(options.cols); } options.done = function (res, curr, count) { //关闭加载 //layer.closeAll('loading'); if (doneCallback) { doneCallback(res, curr, count); } }; return treeTable.render(options); }, //treetable刷新 reloadtreetable: function (tree, options) { var loading = layer.load(0, { shade: false }); var defaults = { where: {} }; var options = $.extend(defaults, options); options.where.time = new Date().Format("yyyy-MM-dd hh:mm:ss"); //执行搜索重载 tree.reload({ where: options.where }); //关闭加载 layer.closeAll('loading'); }, //msg modalMsg: function (content, type) { if (type != undefined) { var icon = 0; if (type == 'success') { icon = 1; } else if (type == 'error') { icon = 2; } else if (type == 'warning') { icon = 7; } else { icon = 5; } top.layer.msg(content, { icon: icon, time: 1000, shift: 5, }); } else { top.layer.msg(content); } }, //alert modalAlert: function (content, type) { var icon = 0; if (type == 'success') { icon = 1; } if (type == 'error') { icon = 2; } if (type == 'warning') { icon = 7; } top.layer.alert(content, { icon: icon, title: "系统提示", id: "系统提示", btn: ['确认'], btnclass: ['btn btn-primary'], yes: function (index) { top.layer.close(index); } }); }, //界面关闭 modalClose: function () { var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引 var $IsdialogClose = top.$("#layui-layer" + index).find('.layui-layer-btn').find("#IsdialogClose"); var IsClose = $IsdialogClose.is(":checked"); if ($IsdialogClose.length == 0) { IsClose = true; } if (IsClose) { if (window.top.iframesList) { delete window.top.iframesList[index]; } parent.layer.close(index); } else { location.reload(); } }, //创建界面 modalOpen: function (options) { var defaults = { title: '系统窗口', width: "100px", height: "100px", anim: 0,//动画 isOutAnim: true,//关闭动画 maxmin: true, //开启最大化最小化按钮 url: '', shade: 0.3, dataJson: null,//传参 btn: ['确认', '关闭'], btnclass: ['layui-btn', 'layui-btn-primary'], isMax: false,//最大化属性 默认不是 callBack: null, end: null, yes: function (index, layero) { var iframeWindow = window['layui-layer-iframe' + index] , submitID = 'submit' , submit = layero.find('iframe').contents().find('#' + submitID); submit.trigger('click'); } }; var options = $.extend(defaults, options); //ie缓存问题 //options.url = obj.urlAddTime(options.url); //options.url = obj.urlAddTime(options.url); //高度宽度超出就适应屏幕 var _width = document.body.clientWidth > parseInt(options.width.replace('px', '')) ? options.width : document.body.clientWidth - 20 + 'px'; var _height = document.body.clientHeight > parseInt(options.height.replace('px', '')) ? options.height : document.body.clientHeight - 20 + 'px'; if (obj.currentWindow()) { _width = obj.currentWindow().document.body.clientWidth > parseInt(options.width.replace('px', '')) ? options.width : obj.currentWindow().document.body.clientWidth - 20 + 'px'; _height = obj.currentWindow().document.body.clientHeight > parseInt(options.height.replace('px', '')) ? options.height : obj.currentWindow().document.body.clientHeight - 20 + 'px'; } var index = top.layer.open({ type: 2, shade: options.shade, title: options.title, isOutAnim: options.isOutAnim,//关闭动画 maxmin: options.maxmin, //开启最大化最小化按钮 fix: false, area: [_width, _height], content: options.url, id: !!options.id ? options.id : options.title, btn: options.btn, success: function (layero, index) { $(layero).addClass("scroll-wrapper");//苹果 iframe 滚动条失效解决方式 //建立父子关系 if (!window.top.iframesList) { window.top.iframesList = {}; } window.top.iframesList[index] = window; //新增传值方式 window.top.iframesList[index].dataJson = options.dataJson; if (!!options.success) { options.success(layero, index); } }, //btnclass: options.btnclass, yes: function (index, layero) { if (!!options.yes) { options.yes(index, layero); } }, btn2: function (index, layero) { if (!!options.btn2) { options.btn2(index, layero); } else { if (window.top.iframesList) { delete window.top.iframesList[index]; } return true; } }, cancel: function (index, layero) { if (window.top.iframesList) { delete window.top.iframesList[index]; } if (!!options.cancel) { options.cancel(index, layero); } else { return true; } }, end: function () { if (!!options.end) { options.end(); } } }); if (options.isMax) { top.layer.full(index); } return index; }, //表单提交 submitForm: function (options) { var defaults = { url: "", param: [], success: null, close: true, preventReuse:'.site-demo-active'//防止重复的参数 }; var options = $.extend(defaults, options); //ie缓存问题 options.url = obj.urlAddTime(options.url); // 单击之后提交按钮不可选,防止重复提交 if (!!options.preventReuse) { $(options.preventReuse).addClass('layui-btn-disabled'); $(options.preventReuse).attr('disabled', 'disabled'); } window.setTimeout(function () { if ($('[name=__RequestVerificationToken]').length > 0) { var csrfToken = $('[name=__RequestVerificationToken]').val(); } var index = parent.layer.load(0, { shade: [0.5, '#000'], //0.1透明度的背景 }); $.ajax({ url: options.url, data: options.param, type: "post", dataType: "json", headers: { "X-CSRF-TOKEN": csrfToken }, success: function (data) { if (data.state == "success") { options.success(data); obj.modalMsg(data.message, data.state); if (options.close) { try { obj.modalClose(); } catch (err) { parent.layer.close(index); miniTab.deleteCurrentByIframe(); } } } else { obj.modalAlert(data.message, data.state); } if (!!options.preventReuse) { $(options.preventReuse).removeClass('layui-btn-disabled'); $(options.preventReuse).removeAttr('disabled'); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { parent.layer.close(index); obj.modalAlert(errorThrown, "error"); if (!!options.preventReuse) { $(options.preventReuse).removeClass('layui-btn-disabled'); $(options.preventReuse).removeAttr('disabled'); } }, beforeSend: function () { }, complete: function () { parent.layer.close(index); } }); return false; }, 500); }, //二次确认框 modalConfirm: function (content, callBack) { var index= top.layer.confirm(content, { icon: "fa-exclamation-circle", title: "系统提示", id: "系统提示", btn: ['确认', '取消'], btnclass: ['btn btn-primary', 'btn btn-danger'], }, function () { top.layer.close(index); callBack(true); }, function () { callBack(false) }); }, //文档弹窗 modalPrompt: function (type, title, callBack) { if (type < 0 || type > 3) { type = 0; } top.layer.prompt({ formType: type, value: '', title: title, id:title, btn: ['确认', '取消'], btnclass: ['btn btn-primary', 'btn btn-danger'], }, function (value, index, elem) { top.layer.close(index); callBack(true, value); }); }, //删除 deleteForm: function (options) { var defaults = { prompt: "注:您确定要删除选中数据吗?", url: "", param: [], success: null, close: false }; var options = $.extend(defaults, options); //ie缓存问题 options.url = obj.urlAddTime(options.url); if ($('[name=__RequestVerificationToken]').length > 0) { var csrfToken = $('[name=__RequestVerificationToken]').val(); } obj.modalConfirm(options.prompt, function (r) { if (r) { var index = parent.layer.load(0, { shade: [0.5, '#000'], //0.1透明度的背景 }); window.setTimeout(function () { $.ajax({ url: options.url, data: options.param, type: "post", dataType: "json", headers: { "X-CSRF-TOKEN": csrfToken }, success: function (data) { if (data.state == "success") { options.success(data); obj.modalMsg(data.message, data.state); if (options.close) { obj.modalClose(); } } else { obj.modalAlert(data.message, data.state); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { parent.layer.close(index); obj.modalMsg(errorThrown, "error"); }, beforeSend: function () { }, complete: function () { parent.layer.close(index); } }); }, 500); } }); }, //post提交 submitPost: function (options) { var defaults = { prompt: options.title, url: "", param: [], success: null, close: false }; var options = $.extend(defaults, options); //ie缓存问题 options.url = obj.urlAddTime(options.url); if ($('[name=__RequestVerificationToken]').length > 0) { var csrfToken = $('[name=__RequestVerificationToken]').val(); } obj.modalConfirm(options.prompt, function (r) { if (r) { var index = parent.layer.load(0, { shade: [0.5, '#000'], //0.1透明度的背景 }); window.setTimeout(function () { $.ajax({ url: options.url, data: options.param, type: "post", dataType: "json", headers: { "X-CSRF-TOKEN": csrfToken }, success: function (data) { if (data.state == "success") { options.success(data); obj.modalMsg(data.message, data.state); if (options.close) { obj.modalClose(); } } else { obj.modalAlert(data.message, data.state); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { parent.layer.close(index); obj.modalMsg(errorThrown, "error"); }, beforeSend: function () { }, complete: function () { parent.layer.close(index); } }); }, 500); } }); }, //Form序列化方法 val: function (filter, formdate) { var element = $('div[lay-filter=' + filter + ']'); if (!!formdate) { for (var key in formdate) { var $id = element.find('#' + key); var value = $.trim(formdate[key]).replace(/ /g, ''); var type = $id.attr('type'); if ($id.hasClass("select2-hidden-accessible")) { type = "select"; } if ($id.find("input[type=radio]").length>0) { type = "radio"; } switch (type) { case "checkbox": if (value == "true") { $id.attr("checked", 'checked'); } else { $id.removeAttr("checked"); } break; case "select": $id.val(value).trigger("change"); break; case "radio": $("input[name=" + key + "][value=" + value + "]").prop("checked", "true"); break; default: $id.val(value); break; } }; return false; } var postdata = {}; element.find('input,select,textarea').each(function (r) { var $this = $(this); var id = $this.attr('id'); var type = $this.attr('type'); switch (type) { case "checkbox": postdata[id] = $this.is(":checked"); break; case "radio": postdata[id] = $this.is(":checked"); break; default: var value = $this.val() == "" ? " " : $this.val(); if (!$.request("keyValue")) { value = value.replace(/ /g, ''); } postdata[id] = value; break; } }); return postdata; }, //父窗体刷新(按钮刷新) parentreload: function (filter) { obj.parentWindow().$('button[lay-filter="' + filter + '"]').click(); }, //父窗体 parentWindow: function () { var index = parent.layer.getFrameIndex(window.name); if (window.top.iframesList) { return window.top.iframesList[index]; } else { return null; } }, //当前tab窗体 currentWindow: function () { var iframes = top.$(".layui-show>iframe"); if (iframes.length > 0) { return iframes[0].contentWindow; } else { return window.parent; } }, //当前页刷新(按钮刷新) reload: function (filter) { $('button[lay-filter="' + filter + '"]').click();//按钮刷新 }, //下载方法 download: function (url, data, method) { if (url && data) { data = typeof data == 'string' ? data : jQuery.param(data); var inputs = ''; $.each(data.split('&'), function () { var pair = this.split('='); inputs += ''; }); $('
' + inputs + '
').appendTo('body').submit().remove(); }; }, //设置Form只读 setReadOnly: function (filter) { var readForm = layui.$('[lay-filter="' + filter + '"]'); readForm.find('input,textarea,select').prop('disabled', true); readForm.find('input,textarea,select').removeAttr('lay-verify'); readForm.find('.layui-layedit iframe').contents().find('body').prop('contenteditable', false); }, //按钮权限(控制js模板,格式必须严格,新) authorizeButtonNew: function (innerHTML) { //行操作权限控制 var moduleId = top.$(".layui-tab-title>.layui-this").attr("lay-id"); if (!moduleId) { moduleId = location.pathname; } var returnhtml = ''; //没有就全清 if (!top.clients || !top.clients.authorizeButton) { return returnhtml; } var dataJson = top.clients.authorizeButton[moduleId.split("?")[0]]; if (innerHTML.indexOf('') > -1) { var buttonHumanized = sessionStorage.getItem('watercloudButtonHumanized'); var tempList = innerHTML.split(''); for (var i = 0; i < tempList.length; i++) { if (tempList[i].indexOf('