function closeBox(obj) { var elem = $(obj).parents(".template-edit-title").next(); if ($(elem).hasClass("layui-hide")) { $(elem).removeClass("layui-hide"); $(obj).removeClass("closed-right"); } else { $(elem).addClass("layui-hide"); $(obj).addClass("closed-right"); } } function get_math_rant(len) { return Number(Math.random().toString().substr(3, len) + Date.now()).toString(36); } var show_link_box_flag = true; function select_link(link, support_diy_view, callback) { var url = linkUrl; if (show_link_box_flag) { show_link_box_flag = false; $.post(url, {link: JSON.stringify(link), support_diy_view: support_diy_view}, function (str) { window.linkIndex = layer.open({ type: 1, title: "选择链接", content: str, btn: [], area: ['850px'], //宽高 maxWidth: 1920, cancel: function (index, layero) { show_link_box_flag = true; }, end: function () { if (window.linkData) { if (callback) callback(window.linkData); delete window.linkData;// 清空本次选择 } show_link_box_flag = true; } }); }); } }; /** * 数据表格 * layui官方文档:https://www.layui.com/doc/modules/table.html * @param options * @constructor */ function Table(options) { if (!options) return; var _self = this; options.parseData = options.parseData || function (data) { return { "code": data.code, "msg": data.message, "count": data.data.count, "data": data.data.list }; }; options.request = options.request || { limitName: 'page_size' //每页数据量的参数名,默认:limit }; if (options.page == undefined) { options.page = { layout: ['count', 'limit', 'prev', 'page', 'next'], limit: 10 }; } options.defaultToolbar = options.defaultToolbar || [];//'filter', 'print', 'exports' options.toolbar = options.toolbar || "";//头工具栏事件 options.skin = options.skin || 'line'; options.size = options.size || 'lg'; options.async = (options.async != undefined) ? options.async : true; options.done = function (res, curr, count) { //加载图片放大 loadImgMagnify(); if (options.callback) options.callback(res, curr, count); }; layui.use('table', function () { _self._table = layui.table; _self._table.render(options); }); this.filter = options.filter || options.elem.replace(/#/g, ""); this.elem = options.elem; //获取当前选中的数据 this.checkStatus = function () { return this._table.checkStatus(_self.elem.replace(/#/g, "")); }; } /** * 监听头工具栏事件 * @param callback 回调 */ Table.prototype.toolbar = function (callback) { var _self = this; var interval = setInterval(function () { if (_self._table) { _self._table.on('toolbar(' + _self.filter + ')', function (obj) { var checkStatus = _self._table.checkStatus(obj.config.id); obj.data = checkStatus.data; obj.isAll = checkStatus.isAll; if (callback) callback.call(this, obj); }); clearInterval(interval); } }, 50); }; /** * 监听底部工具栏事件 * @param callback 回调 */ Table.prototype.bottomToolbar = function (callback) { var _self = this; var interval = setInterval(function () { if (_self._table) { _self._table.on('bottomToolbar(' + _self.filter + ')', function (obj) { var checkStatus = _self._table.checkStatus(obj.config.id); obj.data = checkStatus.data; obj.isAll = checkStatus.isAll; if (callback) callback.call(this, obj); }); clearInterval(interval); } }, 50); }; /** * 绑定layui的on事件 * @param name * @param callback */ Table.prototype.on = function (name, callback) { var _self = this; var interval = setInterval(function () { if (_self._table) { _self._table.on(name + '(' + _self.filter + ')', function (obj) { if (callback) callback.call(this, obj); }); clearInterval(interval); } }, 50); }; /** * //监听行工具事件 * @param callback 回调 */ Table.prototype.tool = function (callback) { var _self = this; var interval = setInterval(function () { if (_self._table) { _self._table.on('tool(' + _self.filter + ')', function (obj) { if (callback) callback.call(this, obj); }); clearInterval(interval); } }, 50); }; /** * 刷新数据 * @param options 参数,参考layui数据表格参数 */ Table.prototype.reload = function (options) { options = options || { page: { curr: 1 } }; var _self = this; var interval = setInterval(function () { if (_self._table) { _self._table.reload(_self.elem.replace(/#/g, ""), options); clearInterval(interval); } }, 50); }; /** * 自定义分页 * @param options * @constructor */ function Page(options) { if (!options) return; var _self = this; options.elem = options.elem.replace(/#/g, "");// 注意:这里不能加 # 号 options.count = options.count || 0;// 数据总数。一般通过服务端得到 options.limit = options.limit || 10;// 每页显示的条数。laypage将会借助 count 和 limit 计算出分页数。 options.limits = options.limits || [];// 每页条数的选择项。如果 layout 参数开启了 limit,则会出现每页条数的select选择框 options.curr = location.hash.replace('#!page=', '');// 起始页。一般用于刷新类型的跳页以及HASH跳页 // options.hash = options.hash || 'page';// 开启location.hash,并自定义 hash 值。如果开启,在触发分页时,会自动对url追加:#!hash值={curr} 利用这个,可以在页面载入时就定位到指定页 options.groups = options.groups || 5;// 连续出现的页码个数 options.prev = options.prev || '';// 自定义“上一页”的内容,支持传入普通文本和HTML options.next = options.next || '';// 自定义“下一页”的内容,同上 options.first = options.first || 1;// 自定义“首页”的内容,同上 // 自定义排版。可选值有:count(总条目输区域)、prev(上一页区域)、page(分页区域)、next(下一页区域)、limit(条目选项区域)、refresh(页面刷新区域。注意:layui 2.3.0 新增) 、skip(快捷跳页区域) options.layout = options.layout || ['count', 'prev', 'page', 'next']; options.jump = function (obj, first) { //首次不执行,一定要加此判断,否则初始时会无限刷新 if (!first) { obj.page = obj.curr; if(options.callback) options.callback.call(this, obj); } }; layui.use('laypage', function () { _self._page = layui.laypage; _self._page.render(options); }); } $(function () { loadImgMagnify(); }); //图片最大递归次数 var IMG_MAX_RECURSIVE_COUNT = 6; var count = 0; /** * //加载图片放大 */ function loadImgMagnify() { setTimeout(function () { try { if (layer) { $("img[src!=''][layer-src]").each(function () { var id = getId($(this).parent()); layer.photos({ photos: "#" + id, anim: 5 }); count = 0; }); } } catch (e) { } }, 200); } function getId(o) { count++; var id = o.attr("id"); if (id == undefined && count < IMG_MAX_RECURSIVE_COUNT) { id = getId(o.parent()); } if (id == undefined) { id = get_math_rant(10); o.attr("id", id); } return id; } /** * 专题选择器 * @param callback 回调函数 * @param selectId 已选专题id * @param params */ function specialSelect(callback, selectId, params) { layui.use(['layer'], function () { if (selectId.length) { params.select_id = selectId.toString(); } params.disabled = params.disabled == 0 ? 0 : 1; var url = specialUrl; //iframe层-父子操作 layer.open({ title: "专题选择", type: 2, area: ['1000px', '720px'], fixed: false, //不固定 btn: ['保存', '返回'], content: url, yes: function (index, layero) { var iframeWin = window[layero.find('iframe')[0]['name']];//得到iframe页的窗口对象,执行iframe页的方法: iframeWin.selectSpecial(function (obj) { if (typeof callback == "string") { try { eval(callback + '(obj)'); layer.close(index); } catch (e) { console.error('回调函数' + callback + '未定义'); } } else if (typeof callback == "function") { callback(obj); layer.close(index); } }); } }); }); }