table.js 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071
  1. /** layui-v2.5.5 MIT License By https://www.layui.com */ ;
  2. layui.define(["laytpl", "laypage", "layer", "form", "util"], function(e) {
  3. "use strict";
  4. var t = layui.$,
  5. i = layui.laytpl,
  6. a = layui.laypage,
  7. l = layui.layer,
  8. n = layui.form,
  9. o = (layui.util, layui.hint()),
  10. r = layui.device(),
  11. d = {
  12. config: {
  13. checkName: "LAY_CHECKED",
  14. indexName: "LAY_TABLE_INDEX",
  15. disabledName: "LAY_DISABLED"
  16. },
  17. cache: {},
  18. index: layui.table ? layui.table.index + 1e4 : 0,
  19. set: function(e) {
  20. var i = this;
  21. return i.config = t.extend({}, i.config, e), i
  22. },
  23. on: function(e, t) {
  24. return layui.onevent.call(this, y, e, t)
  25. }
  26. },
  27. c = function() {
  28. var e = this,
  29. t = e.config,
  30. i = t.id || t.index;
  31. return i && (c.that[i] = e, c.config[i] = t), {
  32. config: t,
  33. reload: function(t) {
  34. e.reload.call(e, t)
  35. },
  36. setColsWidth: function() {
  37. e.setColsWidth.call(e)
  38. },
  39. resize: function() {
  40. e.resize.call(e)
  41. }
  42. }
  43. },
  44. s = function(e) {
  45. var t = c.config[e];
  46. return t || o.error("The ID option was not found in the table instance"), t || null
  47. },
  48. u = function(e, a, l, n) {
  49. var o = e.templet ? function() {
  50. return "function" == typeof e.templet ? e.templet(l) : i(t(e.templet).html() || String(a)).render(l)
  51. }() : a;
  52. return n ? t("<div>" + o + "</div>").text() : o
  53. },
  54. y = "table",
  55. h = ".layui-table",
  56. f = "layui-hide",
  57. p = "layui-none",
  58. v = "layui-table-view",
  59. m = ".layui-table-tool",
  60. mb = ".layui-table-bottom-tool",
  61. g = ".layui-table-box",
  62. b = ".layui-table-init",
  63. x = ".layui-table-header",
  64. k = ".layui-table-body",
  65. C = ".layui-table-main",
  66. w = ".layui-table-fixed",
  67. T = ".layui-table-fixed-l",
  68. A = ".layui-table-fixed-r",
  69. L = ".layui-table-total",
  70. N = ".layui-table-page",
  71. S = ".layui-table-sort",
  72. W = "layui-table-edit",
  73. _ = "layui-table-hover",
  74. E = function(e) {
  75. var t =
  76. '{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';
  77. return e = e || {}, ['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ',
  78. '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',
  79. "<thead>", "{{# layui.each(d.data.cols, function(i1, item1){ }}", "<tr>",
  80. "{{# layui.each(item1, function(i2, item2){ }}",
  81. '{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}',
  82. '{{# if(item2.fixed === "right"){ right = true; } }}',
  83. function() {
  84. return e.fixed && "right" !== e.fixed ? '{{# if(item2.fixed && item2.fixed !== "right"){ }}' : "right" === e.fixed ?
  85. '{{# if(item2.fixed === "right"){ }}' : ""
  86. }(), "{{# var isSort = !(item2.colGroup) && item2.sort; }}",
  87. '<th data-field="{{ item2.field||i2 }}" data-key="{{d.index}}-{{i1}}-{{i2}}" {{# if( item2.parentKey){ }}data-parentkey="{{ item2.parentKey }}"{{# } }} {{# if(item2.minWidth){ }}data-minwidth="{{item2.minWidth}}"{{# } }} ' +
  88. t +
  89. ' {{# if(item2.unresize || item2.colGroup){ }}data-unresize="true"{{# } }} class="{{# if(item2.hide){ }}layui-hide{{# } }}{{# if(isSort){ }} layui-unselect{{# } }}{{# if(!item2.field){ }} layui-table-col-special{{# } }}">',
  90. '<div class="layui-table-cell laytable-cell-', "{{# if(item2.colGroup){ }}", "group", "{{# } else { }}",
  91. "{{d.index}}-{{i1}}-{{i2}}", '{{# if(item2.type !== "normal"){ }}', " laytable-cell-{{ item2.type }}",
  92. "{{# } }}", "{{# } }}", '" {{#if(item2.align){}}align="{{item2.align}}"{{#}}}>',
  93. '{{# if(item2.type === "checkbox"){ }}',
  94. '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" lay-filter="layTableAllChoose" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}>',
  95. "{{# } else { }}", '<span>{{item2.title||""}}</span>', "{{# if(isSort){ }}",
  96. '<span class="layui-table-sort layui-inline"><i class="layui-edge layui-table-sort-asc" title="升序"></i><i class="layui-edge layui-table-sort-desc" title="降序"></i></span>',
  97. "{{# } }}", "{{# } }}", "</div>", "</th>", e.fixed ? "{{# }; }}" : "", "{{# }); }}", "</tr>", "{{# }); }}",
  98. "</thead>", "</table>"
  99. ].join("")
  100. },
  101. z = ['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ',
  102. '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',
  103. "<tbody></tbody>", "</table>"
  104. ].join(""),
  105. H = [
  106. '<div class="layui-form layui-border-box {{d.VIEW_CLASS}}" lay-filter="LAY-table-{{d.index}}" lay-id="{{ d.data.id }}" style="{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}">',
  107. "{{# if(d.data.toolbar){ }}", '<div class="layui-table-tool">', '<div class="layui-table-tool-temp"></div>',
  108. '<div class="layui-table-tool-self"></div>', "</div>", "{{# } }}", '<div class="layui-table-box">',
  109. "{{# if(d.data.loading){ }}", '<div class="layui-table-init" style="background-color: #fff;">',
  110. '<i class="common-loading-layer layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>', "</div>", "{{# } }}",
  111. "{{# var left, right; }}", '<div class="layui-table-header">', E(), "</div>",
  112. '<div class="layui-table-body layui-table-main">', z, "</div>", "{{# if(left){ }}",
  113. '<div class="layui-table-fixed layui-table-fixed-l">', '<div class="layui-table-header">', E({
  114. fixed: !0
  115. }), "</div>", '<div class="layui-table-body">', z, "</div>", "</div>", "{{# }; }}", "{{# if(right){ }}",
  116. '<div class="layui-table-fixed layui-table-fixed-r">', '<div class="layui-table-header">', E({
  117. fixed: "right"
  118. }), '<div class="layui-table-mend"></div>', "</div>", '<div class="layui-table-body">', z, "</div>", "</div>",
  119. "{{# }; }}", "</div>", "{{# if(d.data.totalRow){ }}", '<div class="layui-table-total">',
  120. '<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ',
  121. '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',
  122. '<tbody><tr><td><div class="layui-table-cell" style="visibility: hidden;">Total</div></td></tr></tbody>',
  123. "</table>", "</div>", "{{# } }}", '<div class="table-bottom">','<div class="layui-table-bottom-tool">',
  124. '<div class="layui-table-bottom-tool-temp"></div>', "</div>",'<div class="layui-table-bottom-left-container"></div>',
  125. "{{# if(d.data.page){ }}",
  126. '<div class="layui-table-page">',
  127. '<div id="layui-table-page{{d.index}}"></div>', "</div>", "{{# } }}", '</div>', "<style>",
  128. "{{# layui.each(d.data.cols, function(i1, item1){", "layui.each(item1, function(i2, item2){ }}",
  129. ".laytable-cell-{{d.index}}-{{i1}}-{{i2}}{ ", "{{# if(item2.width){ }}", "width: {{item2.width}}px;", "{{# } }}",
  130. " }", "{{# });", "}); }}", "</style>", "</div>"
  131. ].join(""),
  132. R = t(window),
  133. F = t(document),
  134. j = function(e) {
  135. var i = this;
  136. i.index = ++d.index, i.config = t.extend({}, i.config, d.config, e), i.render()
  137. };
  138. j.prototype.config = {
  139. limit: 10,
  140. loading: !0,
  141. cellMinWidth: 60,
  142. defaultToolbar: ["filter", "exports", "print"],
  143. autoSort: !0,
  144. text: {
  145. none: "无数据"
  146. }
  147. }, j.prototype.render = function() {
  148. var e = this,
  149. a = e.config;
  150. if (a.elem = t(a.elem), a.where = a.where || {}, a.id = a.id || a.elem.attr("id") || e.index, a.request = t.extend({
  151. pageName: "page",
  152. limitName: "limit"
  153. }, a.request), a.response = t.extend({
  154. statusName: "code",
  155. statusCode: 0,
  156. msgName: "msg",
  157. dataName: "data",
  158. countName: "count"
  159. }, a.response), "object" == typeof a.page && (a.limit = a.page.limit || a.limit, a.limits = a.page.limits || a.limits,
  160. e.page = a.page.curr = a.page.curr || 1, delete a.page.elem, delete a.page.jump), !a.elem[0]) return e;
  161. a.height && /^full-\d+$/.test(a.height) && (e.fullHeightGap = a.height.split("-")[1], a.height = R.height() - e.fullHeightGap),
  162. e.setInit();
  163. var l = a.elem,
  164. n = l.next("." + v),
  165. o = e.elem = t(i(H).render({
  166. VIEW_CLASS: v,
  167. data: a,
  168. index: e.index
  169. }));
  170. if (a.index = e.index, e.key = a.id || a.index, n[0] && n.remove(), l.after(o), e.layTool = o.find(m), e.layBottomTool =
  171. o.find(mb), e.layBox = o.find(g), e.layHeader = o.find(x), e.layMain = o.find(C), e.layBody = o.find(k), e.layFixed =
  172. o.find(w), e.layFixLeft = o.find(T), e.layFixRight = o.find(A), e.layTotal = o.find(L), e.layPage = o.find(N), e.renderToolbar(),
  173. e.fullSize(),
  174. a.cols.length > 1) {
  175. var r = e.layFixed.find(x).find("th");
  176. r.height(e.layHeader.height() - 1 - parseFloat(r.css("padding-top")) - parseFloat(r.css("padding-bottom")))
  177. }
  178. e.pullData(e.page), e.events()
  179. }, j.prototype.initOpts = function(e) {
  180. var t = this,
  181. i = (t.config, {
  182. checkbox: 48,
  183. radio: 48,
  184. space: 15,
  185. numbers: 40
  186. });
  187. e.checkbox && (e.type = "checkbox"), e.space && (e.type = "space"), e.type || (e.type = "normal"), "normal" !== e.type &&
  188. (e.unresize = !0, e.width = e.width || i[e.type])
  189. }, j.prototype.setInit = function(e) {
  190. var t = this,
  191. i = t.config;
  192. return i.clientWidth = i.width || function() {
  193. var e = function(t) {
  194. var a, l;
  195. t = t || i.elem.parent(), a = t.width();
  196. try {
  197. l = "none" === t.css("display")
  198. } catch (n) {}
  199. return !t[0] || a && !l ? a : e(t.parent())
  200. };
  201. return e()
  202. }(), "width" === e ? i.clientWidth : void layui.each(i.cols, function(e, a) {
  203. layui.each(a, function(l, n) {
  204. if (!n) return void a.splice(l, 1);
  205. if (n.key = e + "-" + l, n.hide = n.hide || !1, n.colGroup || n.colspan > 1) {
  206. var o = 0;
  207. layui.each(i.cols[e + 1], function(t, i) {
  208. i.HAS_PARENT || o > 1 && o == n.colspan || (i.HAS_PARENT = !0, i.parentKey = e + "-" + l, o += parseInt(
  209. i.colspan > 1 ? i.colspan : 1))
  210. }), n.colGroup = !0
  211. }
  212. t.initOpts(n)
  213. })
  214. })
  215. }, j.prototype.renderToolbar = function() {
  216. var e = this,
  217. a = e.config,
  218. l = ['<div class="layui-inline" lay-event="add"><i class="layui-icon layui-icon-add-1"></i></div>',
  219. '<div class="layui-inline" lay-event="update"><i class="layui-icon layui-icon-edit"></i></div>',
  220. '<div class="layui-inline" lay-event="delete"><i class="layui-icon layui-icon-delete"></i></div>'
  221. ].join(""),
  222. n = e.layTool.find(".layui-table-tool-temp");
  223. if ("default" === a.toolbar) n.html(l);
  224. else if ("string" == typeof a.toolbar) {
  225. var o = '<div class="tool-temp-checkbox">';
  226. o += '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" lay-filter="layTableAllChoose">';
  227. o += '</div>';
  228. o += '<div class="tool-temp-btns">';
  229. o += t(a.toolbar).html() || "";
  230. o += '</div>';
  231. o && n.html(i(o).render(a))
  232. }
  233. var r = {
  234. filter: {
  235. title: "筛选列",
  236. layEvent: "LAYTABLE_COLS",
  237. icon: "layui-icon-cols"
  238. },
  239. exports: {
  240. title: "导出",
  241. layEvent: "LAYTABLE_EXPORT",
  242. icon: "layui-icon-export"
  243. },
  244. print: {
  245. title: "打印",
  246. layEvent: "LAYTABLE_PRINT",
  247. icon: "layui-icon-print"
  248. }
  249. },
  250. d = [];
  251. "object" == typeof a.defaultToolbar && layui.each(a.defaultToolbar, function(e, t) {
  252. var i = "string" == typeof t ? r[t] : t;
  253. i && d.push('<div class="layui-inline" title="' + i.title + '" lay-event="' + i.layEvent +
  254. '"><i class="layui-icon ' + i.icon + '"></i></div>')
  255. }), e.layTool.find(".layui-table-tool-self").html(d.join(""))
  256. }, j.prototype.renderBottomToolbar = function() {
  257. //底部工具栏
  258. var e = this,
  259. a = e.config,
  260. n = e.layBottomTool.find(".layui-table-bottom-tool-temp");
  261. if (!a.bottomToolbar) return;
  262. if ("string" == typeof a.bottomToolbar && t(a.bottomToolbar).html().length) {
  263. var h = '<div class="tool-temp-checkbox">';
  264. h += '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" lay-filter="layTableAllChoose">';
  265. h += '</div>';
  266. h += '<div class="tool-temp-btns">';
  267. h += t(a.bottomToolbar).html();
  268. h += '</div>';
  269. }else{
  270. h = '';
  271. }
  272. n.html(i(h).render(a))
  273. }, j.prototype.setParentCol = function(e, t) {
  274. var i = this,
  275. a = i.config,
  276. l = i.layHeader.find('th[data-key="' + a.index + "-" + t + '"]'),
  277. n = parseInt(l.attr("colspan")) || 0;
  278. if (l[0]) {
  279. var o = t.split("-"),
  280. r = a.cols[o[0]][o[1]];
  281. e ? n-- : n++, l.attr("colspan", n), l[n < 1 ? "addClass" : "removeClass"](f), r.colspan = n, r.hide = n < 1;
  282. var d = l.data("parentkey");
  283. d && i.setParentCol(e, d)
  284. }
  285. }, j.prototype.setColsPatch = function() {
  286. var e = this,
  287. t = e.config;
  288. layui.each(t.cols, function(t, i) {
  289. layui.each(i, function(t, i) {
  290. i.hide && e.setParentCol(i.hide, i.parentKey)
  291. })
  292. })
  293. }, j.prototype.setColsWidth = function() {
  294. var e = this,
  295. t = e.config,
  296. i = 0,
  297. a = 0,
  298. l = 0,
  299. n = 0,
  300. o = e.setInit("width");
  301. e.eachCols(function(e, t) {
  302. t.hide || i++
  303. }), o = o - function() {
  304. return "line" === t.skin || "nob" === t.skin ? 2 : i + 1
  305. }() - e.getScrollWidth(e.layMain[0]) - 1;
  306. var r = function(e) {
  307. layui.each(t.cols, function(i, r) {
  308. layui.each(r, function(i, d) {
  309. var c = 0,
  310. s = d.minWidth || t.cellMinWidth;
  311. return d ? void(d.colGroup || d.hide || (e ? l && l < s && (a--, c = s) : (c = d.width || 0, /\d+%$/.test(
  312. c) ? (c = Math.floor(parseFloat(c) / 100 * o), c < s && (c = s)) : c || (d.width = c = 0, a++)), d.hide &&
  313. (c = 0), n += c)) : void r.splice(i, 1)
  314. })
  315. }), o > n && a && (l = (o - n) / a)
  316. };
  317. r(), r(!0), e.autoColNums = a, e.eachCols(function(i, a) {
  318. var n = a.minWidth || t.cellMinWidth;
  319. a.colGroup || a.hide || (0 === a.width ? e.getCssRule(t.index + "-" + a.key, function(e) {
  320. e.style.width = Math.floor(l >= n ? l : n) + "px"
  321. }) : /\d+%$/.test(a.width) && e.getCssRule(t.index + "-" + a.key, function(e) {
  322. e.style.width = Math.floor(parseFloat(a.width) / 100 * o) + "px"
  323. }))
  324. });
  325. var d = e.layMain.width() - e.getScrollWidth(e.layMain[0]) - e.layMain.children("table").outerWidth();
  326. if (e.autoColNums && d >= -i && d <= i) {
  327. var c = function(t) {
  328. var i;
  329. return t = t || e.layHeader.eq(0).find("thead th:last-child"), i = t.data("field"), !i && t.prev()[0] ? c(t.prev()) :
  330. t
  331. },
  332. s = c(),
  333. u = s.data("key");
  334. e.getCssRule(u, function(t) {
  335. var i = t.style.width || s.outerWidth();
  336. t.style.width = parseFloat(i) + d + "px", e.layMain.height() - e.layMain.prop("clientHeight") > 0 && (t.style.width =
  337. parseFloat(t.style.width) - 1 + "px")
  338. })
  339. }
  340. e.loading(!0)
  341. }, j.prototype.resize = function() {
  342. var e = this;
  343. e.fullSize(), e.setColsWidth(), e.scrollPatch()
  344. }, j.prototype.reload = function(e) {
  345. var i = this;
  346. e = e || {}, delete i.haveInit, e.data && e.data.constructor === Array && delete i.config.data, i.config = t.extend(
  347. !0, {}, i.config, e), i.render()
  348. }, j.prototype.errorView = function(e) {
  349. var i = this,
  350. a = i.layMain.find("." + p),
  351. l = t('<div class="' + p + '">' + (e || "Error") + "</div>");
  352. a[0] && (i.layNone.remove(), a.remove()), i.layFixed.addClass(f), i.layMain.find("tbody").html(""), i.layMain.append(
  353. i.layNone = l), d.cache[i.key] = []
  354. }, j.prototype.page = 1, j.prototype.pullData = function(e) {
  355. var i = this,
  356. a = i.config,
  357. l = a.request,
  358. n = a.response,
  359. o = function() {
  360. "object" == typeof a.initSort && i.sort(a.initSort.field, a.initSort.type)
  361. };
  362. if (i.startTime = (new Date).getTime(), a.url) {
  363. var r = {};
  364. r[l.pageName] = e, r[l.limitName] = a.limit;
  365. var d = t.extend(r, a.where);
  366. a.contentType && 0 == a.contentType.indexOf("application/json") && (d = JSON.stringify(d)), i.loading(), t.ajax({
  367. type: a.method || "get",
  368. url: a.url,
  369. contentType: a.contentType,
  370. data: d,
  371. dataType: "json",
  372. async : (a.async != undefined) ? a.async : true,
  373. headers: a.headers || {},
  374. success: function(t) {
  375. "function" == typeof a.parseData && (t = a.parseData(t) || t), t[n.statusName] != n.statusCode ? (i.renderForm(),
  376. i.errorView(t[n.msgName] || '返回的数据不符合规范,正确的成功状态码应为:"' + n.statusName + '": ' + n.statusCode)) : (i.renderData(
  377. t, e, t[n.countName]), o(), a.time = (new Date).getTime() - i.startTime + " ms"), i.setColsWidth(),
  378. "function" == typeof a.done && a.done(t, e, t[n.countName])
  379. },
  380. error: function(e, t) {
  381. i.errorView("数据接口请求异常:" + t), i.renderForm(), i.setColsWidth()
  382. }
  383. })
  384. } else if (a.data && a.data.constructor === Array) {
  385. var c = {},
  386. s = e * a.limit - a.limit;
  387. c[n.dataName] = a.data.concat().splice(s, a.limit), c[n.countName] = a.data.length, i.renderData(c, e, c[n.countName]),
  388. o(), i.setColsWidth(), "function" == typeof a.done && a.done(c, e, c[n.countName])
  389. }
  390. }, j.prototype.eachCols = function(e) {
  391. var t = this;
  392. return d.eachCols(null, e, t.config.cols), t
  393. }, j.prototype.renderData = function(e, n, o, r) {
  394. var c = this,
  395. s = c.config,
  396. y = e[s.response.dataName] || [],
  397. h = [],
  398. v = [],
  399. m = [],
  400. g = function() {
  401. var e;
  402. return !r && c.sortKey ? c.sort(c.sortKey.field, c.sortKey.sort, !0) : (layui.each(y, function(a, l) {
  403. var o = [],
  404. y = [],
  405. p = [],
  406. g = a + s.limit * (n - 1) + 1;
  407. 0 !== l.length && (r || (l[d.config.indexName] = a), c.eachCols(function(n, r) {
  408. var c = r.field || n,
  409. h = s.index + "-" + r.key,
  410. v = l[c];
  411. if (void 0 !== v && null !== v || (v = ""), !r.colGroup) {
  412. var m = ['<td data-field="' + c + '" data-key="' + h + '" ' + function() {
  413. var e = [];
  414. return r.edit && e.push('data-edit="' + r.edit + '"'), r.align && e.push('align="' + r.align + '"'),
  415. r.templet && e.push('data-content="' + v + '"'), r.toolbar && e.push('data-off="true"'), r.event &&
  416. e.push('lay-event="' + r.event + '"'), r.style && e.push('style="' + r.style + '"'), r.minWidth &&
  417. e.push('data-minwidth="' + r.minWidth + '"'), e.join(" ")
  418. }() + ' class="' + function() {
  419. var e = [];
  420. return r.hide && e.push(f), r.field || e.push("layui-table-col-special"), e.join(" ")
  421. }() + '">', '<div class="layui-table-cell laytable-cell-' + function() {
  422. return "normal" === r.type ? h : h + " laytable-cell-" + r.type
  423. }() + '">' + function() {
  424. var n = t.extend(!0, {
  425. LAY_INDEX: g
  426. }, l),
  427. o = d.config.checkName,
  428. s = d.config.disabledName;
  429. switch (r.type) {
  430. case "checkbox":
  431. return '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" ' + function() {
  432. var attr = r[o] ? (l[o] = r[o], r[o] ? "checked" : "") : n[o] ? "checked" : "";
  433. attr += l[s] ? "disabled" : "";
  434. return attr;
  435. }() + ">";
  436. case "radio":
  437. return n[o] && (e = a), '<input type="radio" name="layTableRadio_' + s.index + '" ' + (n[o] ?
  438. "checked" : "") + ' lay-type="layTableRadio">';
  439. case "numbers":
  440. return g
  441. }
  442. return r.toolbar ? i(t(r.toolbar).html() || "").render(n) : u(r, v, n)
  443. }(), "</div></td>"].join("");
  444. o.push(m), r.fixed && "right" !== r.fixed && y.push(m), "right" === r.fixed && p.push(m)
  445. }
  446. }), h.push('<tr data-index="' + a + '">' + o.join("") + "</tr>"), v.push('<tr data-index="' + a + '">' + y
  447. .join("") + "</tr>"), m.push('<tr data-index="' + a + '">' + p.join("") + "</tr>"))
  448. }), c.layBody.scrollTop(0), c.layMain.find("." + p).remove(), c.layMain.find("tbody").html(h.join("")), c.layFixLeft
  449. .find("tbody").html(v.join("")), c.layFixRight.find("tbody").html(m.join("")), c.renderForm(), "number" ==
  450. typeof e && c.setThisRowChecked(e), c.syncCheckAll(), c.haveInit ? c.scrollPatch() : setTimeout(function() {
  451. c.scrollPatch()
  452. }, 50), c.haveInit = !0, l.close(c.tipsIndex), s.HAS_SET_COLS_PATCH || c.setColsPatch(), void(s.HAS_SET_COLS_PATCH = !
  453. 0))
  454. };
  455. return d.cache[c.key] = y, c.layPage[0 == o || 0 === y.length && 1 == n ? "addClass" : "removeClass"](f), r ? g() :
  456. 0 === y.length ? (c.renderForm(), c.errorView(s.text.none)) : (c.layFixed.removeClass(f), g(), c.renderBottomToolbar(), c.renderForm(),
  457. c.renderTotal(y),
  458. void(s.page && (s.page = t.extend({
  459. elem: "layui-table-page" + s.index,
  460. count: o,
  461. limit: s.limit,
  462. limits: s.limits || [10, 20, 30, 40, 50, 60, 70, 80, 90],
  463. groups: 3,
  464. layout: ["prev", "page", "next", "skip", "count", "limit"],
  465. prev: '<i class="layui-icon">&#xe603;</i>',
  466. next: '<i class="layui-icon">&#xe602;</i>',
  467. jump: function(e, t) {
  468. t || (c.page = e.curr, s.limit = e.limit, c.pullData(e.curr))
  469. }
  470. }, s.page), s.page.count = o, a.render(s.page))))
  471. }, j.prototype.renderTotal = function(e) {
  472. var t = this,
  473. i = t.config,
  474. a = {};
  475. if (i.totalRow) {
  476. layui.each(e, function(e, i) {
  477. 0 !== i.length && t.eachCols(function(e, t) {
  478. var l = t.field || e,
  479. n = i[l];
  480. t.totalRow && (a[l] = (a[l] || 0) + (parseFloat(n) || 0))
  481. })
  482. }), t.dataTotal = {};
  483. var l = [];
  484. t.eachCols(function(e, n) {
  485. var o = n.field || e,
  486. r = function() {
  487. var e = n.totalRowText || "",
  488. t = parseFloat(a[o]).toFixed(2),
  489. i = {};
  490. return i[o] = t, t = u(n, t, i), n.totalRow ? t || e : e
  491. }(),
  492. d = ['<td data-field="' + o + '" data-key="' + i.index + "-" + n.key + '" ' + function() {
  493. var e = [];
  494. return n.align && e.push('align="' + n.align + '"'), n.style && e.push('style="' + n.style + '"'), n.minWidth &&
  495. e.push('data-minwidth="' + n.minWidth + '"'), e.join(" ")
  496. }() + ' class="' + function() {
  497. var e = [];
  498. return n.hide && e.push(f), n.field || e.push("layui-table-col-special"), e.join(" ")
  499. }() + '">', '<div class="layui-table-cell laytable-cell-' + function() {
  500. var e = i.index + "-" + n.key;
  501. return "normal" === n.type ? e : e + " laytable-cell-" + n.type
  502. }() + '">' + r, "</div></td>"].join("");
  503. n.field && (t.dataTotal[o] = r), l.push(d)
  504. }), t.layTotal.find("tbody").html("<tr>" + l.join("") + "</tr>")
  505. }
  506. }, j.prototype.getColElem = function(e, t) {
  507. var i = this,
  508. a = i.config;
  509. return e.eq(0).find(".laytable-cell-" + (a.index + "-" + t) + ":eq(0)")
  510. }, j.prototype.renderForm = function(e) {
  511. n.render(e, "LAY-table-" + this.index)
  512. }, j.prototype.setThisRowChecked = function(e) {
  513. var t = this,
  514. i = (t.config, "layui-table-click"),
  515. a = t.layBody.find('tr[data-index="' + e + '"]');
  516. a.addClass(i).siblings("tr").removeClass(i)
  517. }, j.prototype.sort = function(e, i, a, l) {
  518. var n, r, c = this,
  519. s = {},
  520. u = c.config,
  521. h = u.elem.attr("lay-filter"),
  522. f = d.cache[c.key];
  523. "string" == typeof e && c.layHeader.find("th").each(function(i, a) {
  524. var l = t(this),
  525. o = l.data("field");
  526. if (o === e) return e = l, n = o, !1
  527. });
  528. try {
  529. var n = n || e.data("field"),
  530. p = e.data("key");
  531. if (c.sortKey && !a && n === c.sortKey.field && i === c.sortKey.sort) return;
  532. var v = c.layHeader.find("th .laytable-cell-" + p).find(S);
  533. c.layHeader.find("th").find(S).removeAttr("lay-sort"), v.attr("lay-sort", i || null), c.layFixed.find("th")
  534. } catch (m) {
  535. return o.error("Table modules: Did not match to field")
  536. }
  537. c.sortKey = {
  538. field: n,
  539. sort: i
  540. }, u.autoSort && ("asc" === i ? r = layui.sort(f, n) : "desc" === i ? r = layui.sort(f, n, !0) : (r = layui.sort(
  541. f, d.config.indexName), delete c.sortKey)), s[u.response.dataName] = r || f, c.renderData(s, c.page, c.count, !0),
  542. l && layui.event.call(e, y, "sort(" + h + ")", {
  543. field: n,
  544. type: i
  545. })
  546. }, j.prototype.loading = function(e) {
  547. var i = this,
  548. a = i.config;
  549. a.loading && (e ? (i.layInit && i.layInit.remove(), delete i.layInit, i.layBox.find(b).remove()) : (i.layInit = t(
  550. ['<div class="layui-table-init">',
  551. '<i class="common-loading-layer layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>', "</div>"
  552. ].join("")), i.layBox.append(i.layInit)))
  553. }, j.prototype.setCheckData = function(e, t) {
  554. var i = this,
  555. a = i.config,
  556. l = d.cache[i.key];
  557. l[e] && l[e].constructor !== Array && (l[e][a.checkName] = t)
  558. }, j.prototype.syncCheckAll = function() {
  559. var e = this,
  560. t = e.config,
  561. i = e.layHeader.find('input[name="layTableCheckbox"]'),
  562. a = function(i) {
  563. return e.eachCols(function(e, a) {
  564. "checkbox" === a.type && (a[t.checkName] = i)
  565. }), i
  566. };
  567. var ee = this,
  568. tt = e.config,
  569. ii = ee.layBottomTool.find('input[name="layTableCheckbox"]'),
  570. aa = function(i) {
  571. return ee.eachCols(function(e, a) {
  572. "checkbox" === a.type && (a[t.checkName] = i)
  573. }), i
  574. };
  575. var eee = this,
  576. ttt = e.config,
  577. iii = eee.layTool.find('input[name="layTableCheckbox"]'),
  578. aaa = function(i) {
  579. return ee.eachCols(function(e, a) {
  580. "checkbox" === a.type && (a[t.checkName] = i)
  581. }), i
  582. };
  583. i[0] && (d.checkStatus(e.key).isAll ? (i[0].checked || (i.prop("checked", !0), e.renderForm("checkbox")), a(!0)) :
  584. (i[0].checked && (i.prop("checked", !1), e.renderForm("checkbox")), a(!1)))
  585. ii[0] && (d.checkStatus(ee.key).isAll ? (ii[0].checked || (ii.prop("checked", !0), ee.renderForm("checkbox")), aa(
  586. !0)) : (ii[0].checked && (ii.prop("checked", !1), ee.renderForm("checkbox")), aa(!1)))
  587. iii[0] && (d.checkStatus(eee.key).isAll ? (iii[0].checked || (iii.prop("checked", !0), eee.renderForm("checkbox")), aaa(
  588. !0)) : (iii[0].checked && (iii.prop("checked", !1), eee.renderForm("checkbox")), aaa(!1)))
  589. }, j.prototype.getCssRule = function(e, t) {
  590. var i = this,
  591. a = i.elem.find("style")[0],
  592. l = a.sheet || a.styleSheet || {},
  593. n = l.cssRules || l.rules;
  594. layui.each(n, function(i, a) {
  595. if (a.selectorText === ".laytable-cell-" + e) return t(a), !0
  596. })
  597. }, j.prototype.fullSize = function() {
  598. var e, t = this,
  599. i = t.config,
  600. a = i.height;
  601. t.fullHeightGap && (a = R.height() - t.fullHeightGap, a < 135 && (a = 135), t.elem.css("height", a)), a && (e =
  602. parseFloat(a) - (t.layHeader.outerHeight() || 38), i.toolbar && (e -= t.layTool.outerHeight() || 50), i.totalRow &&
  603. (e -= t.layTotal.outerHeight() || 40), i.page && (e -= t.layPage.outerHeight() || 41), t.layMain.css("height", e -
  604. 2))
  605. }, j.prototype.getScrollWidth = function(e) {
  606. var t = 0;
  607. return e ? t = e.offsetWidth - e.clientWidth : (e = document.createElement("div"), e.style.width = "100px", e.style
  608. .height = "100px", e.style.overflowY = "scroll", document.body.appendChild(e), t = e.offsetWidth - e.clientWidth,
  609. document.body.removeChild(e)), t
  610. }, j.prototype.scrollPatch = function() {
  611. var e = this,
  612. i = e.layMain.children("table"),
  613. a = e.layMain.width() - e.layMain.prop("clientWidth"),
  614. l = e.layMain.height() - e.layMain.prop("clientHeight"),
  615. n = (e.getScrollWidth(e.layMain[0]), i.outerWidth() - e.layMain.width()),
  616. o = function(e) {
  617. if (a && l) {
  618. if (e = e.eq(0), !e.find(".layui-table-patch")[0]) {
  619. var i = t('<th class="layui-table-patch"><div class="layui-table-cell"></div></th>');
  620. i.find("div").css({
  621. width: a
  622. }), e.find("tr").append(i)
  623. }
  624. } else e.find(".layui-table-patch").remove()
  625. };
  626. o(e.layHeader), o(e.layTotal);
  627. var r = e.layMain.height(),
  628. d = r - l;
  629. e.layFixed.find(k).css("height", i.height() >= d ? d : "auto"), e.layFixRight[n > 0 ? "removeClass" : "addClass"](
  630. f), e.layFixRight.css("right", a - 1)
  631. }, j.prototype.events = function() {
  632. var e, i = this,
  633. a = i.config,
  634. o = t("body"),
  635. c = {},
  636. s = i.layHeader.find("th"),
  637. h = ".layui-table-cell",
  638. p = a.elem.attr("lay-filter");
  639. i.layTool.on("click", "*[lay-event]", function(e) {
  640. var o = t(this),
  641. c = o.attr("lay-event"),
  642. s = function(e) {
  643. var l = t(e.list),
  644. n = t('<ul class="layui-table-tool-panel"></ul>');
  645. n.html(l), a.height && n.css("max-height", a.height - (i.layTool.outerHeight() || 50)), o.find(
  646. ".layui-table-tool-panel")[0] || o.append(n), i.renderForm(), n.on("click", function(e) {
  647. layui.stope(e)
  648. }), e.done && e.done(n, l)
  649. };
  650. switch (layui.stope(e), F.trigger("table.tool.panel.remove"), l.close(i.tipsIndex), c) {
  651. case "LAYTABLE_COLS":
  652. s({
  653. list: function() {
  654. var e = [];
  655. return i.eachCols(function(t, i) {
  656. i.field && "normal" == i.type && e.push('<li><input type="checkbox" name="' + i.field +
  657. '" data-key="' + i.key + '" data-parentkey="' + (i.parentKey || "") + '" lay-skin="primary" ' + (i.hide ?
  658. "" : "checked") + ' title="' + (i.title || i.field) + '" lay-filter="LAY_TABLE_TOOL_COLS"></li>')
  659. }), e.join("")
  660. }(),
  661. done: function() {
  662. n.on("checkbox(LAY_TABLE_TOOL_COLS)", function(e) {
  663. var l = t(e.elem),
  664. n = this.checked,
  665. o = l.data("key"),
  666. r = l.data("parentkey");
  667. layui.each(a.cols, function(e, t) {
  668. layui.each(t, function(t, l) {
  669. if (e + "-" + t === o) {
  670. var d = l.hide;
  671. l.hide = !n, i.elem.find('*[data-key="' + a.index + "-" + o + '"]')[n ? "removeClass" :
  672. "addClass"](f), d != l.hide && i.setParentCol(!n, r), i.resize()
  673. }
  674. })
  675. })
  676. })
  677. }
  678. });
  679. break;
  680. case "LAYTABLE_EXPORT":
  681. r.ie ? l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出", this, {
  682. tips: 3
  683. }) : s({
  684. list: function() {
  685. return ['<li data-type="csv">导出到 Csv 文件</li>', '<li data-type="xls">导出到 Excel 文件</li>'].join("")
  686. }(),
  687. done: function(e, l) {
  688. l.on("click", function() {
  689. var e = t(this).data("type");
  690. d.exportFile.call(i, a.id, null, e)
  691. })
  692. }
  693. });
  694. break;
  695. case "LAYTABLE_PRINT":
  696. var u = window.open("打印窗口", "_blank"),
  697. h = ["<style>", "body{font-size: 12px; color: #666;}",
  698. "table{width: 100%; border-collapse: collapse; border-spacing: 0;}",
  699. "th,td{line-height: 20px; padding: 9px 15px; border: 1px solid #ccc; text-align: left; font-size: 12px; color: #666;}",
  700. "a{color: #666; text-decoration:none;}", "*.layui-hide{display: none}", "</style>"
  701. ].join(""),
  702. v = t(i.layHeader.html());
  703. v.append(i.layMain.find("table").html()), v.append(i.layTotal.find("table").html()), v.find(
  704. "th.layui-table-patch").remove(), v.find(".layui-table-col-special").remove(), u.document.write(h + v.prop(
  705. "outerHTML")), u.document.close(), u.print(), u.close()
  706. }
  707. layui.event.call(this, y, "toolbar(" + p + ")", t.extend({
  708. event: c,
  709. config: a
  710. }, {}))
  711. }), i.layBottomTool.on("click", "*[lay-event]", function(e) {
  712. var i = t(this),
  713. c = i.attr("lay-event");
  714. layui.event.call(this, y, "bottomToolbar(" + p + ")", t.extend({
  715. event: c,
  716. config: a
  717. }, {}))
  718. }), s.on("mousemove", function(e) {
  719. var i = t(this),
  720. a = i.offset().left,
  721. l = e.clientX - a;
  722. i.data("unresize") || c.resizeStart || (c.allowResize = i.width() - l <= 10, o.css("cursor", c.allowResize ?
  723. "col-resize" : ""))
  724. }).on("mouseleave", function() {
  725. t(this);
  726. c.resizeStart || o.css("cursor", "")
  727. }).on("mousedown", function(e) {
  728. var l = t(this);
  729. if (c.allowResize) {
  730. var n = l.data("key");
  731. e.preventDefault(), c.resizeStart = !0, c.offset = [e.clientX, e.clientY], i.getCssRule(n, function(e) {
  732. var t = e.style.width || l.outerWidth();
  733. c.rule = e, c.ruleWidth = parseFloat(t), c.minWidth = l.data("minwidth") || a.cellMinWidth
  734. })
  735. }
  736. }), F.on("mousemove", function(t) {
  737. if (c.resizeStart) {
  738. if (t.preventDefault(), c.rule) {
  739. var a = c.ruleWidth + t.clientX - c.offset[0];
  740. a < c.minWidth && (a = c.minWidth), c.rule.style.width = a + "px", l.close(i.tipsIndex)
  741. }
  742. e = 1
  743. }
  744. }).on("mouseup", function(t) {
  745. c.resizeStart && (c = {}, o.css("cursor", ""), i.scrollPatch()), 2 === e && (e = null)
  746. }), s.on("click", function(a) {
  747. var l, n = t(this),
  748. o = n.find(S),
  749. r = o.attr("lay-sort");
  750. return o[0] && 1 !== e ? (l = "asc" === r ? "desc" : "desc" === r ? null : "asc", void i.sort(n, l, null, !0)) :
  751. e = 2
  752. }).find(S + " .layui-edge ").on("click", function(e) {
  753. var a = t(this),
  754. l = a.index(),
  755. n = a.parents("th").eq(0).data("field");
  756. layui.stope(e), 0 === l ? i.sort(n, "asc", null, !0) : i.sort(n, "desc", null, !0)
  757. });
  758. var v = function(e) {
  759. var a = t(this),
  760. l = a.parents("tr").eq(0).data("index"),
  761. n = i.layBody.find('tr[data-index="' + l + '"]'),
  762. o = d.cache[i.key] || [];
  763. return o = o[l] || {}, t.extend({
  764. tr: n,
  765. data: d.clearCacheKey(o),
  766. del: function() {
  767. d.cache[i.key][l] = [], n.remove(), i.scrollPatch()
  768. },
  769. update: function(e) {
  770. e = e || {}, layui.each(e, function(e, t) {
  771. if (e in o) {
  772. var a, l = n.children('td[data-field="' + e + '"]');
  773. o[e] = t, i.eachCols(function(t, i) {
  774. i.field == e && i.templet && (a = i.templet)
  775. }), l.children(h).html(u({
  776. templet: a
  777. }, t, o)), l.data("content", t)
  778. }
  779. })
  780. }
  781. }, e)
  782. };
  783. i.elem.on("click", 'input[name="layTableCheckbox"]+', function() {
  784. var e = t(this).prev(),
  785. a = i.layBody.find('input[name="layTableCheckbox"]:not(:disabled)'), // 选中的表格项
  786. l = e.parents("tr").eq(0).data("index"),
  787. n = e[0].checked,
  788. o = "layTableAllChoose" === e.attr("lay-filter"); // true:选中的是全选按钮, false:选中的是表格项
  789. o ? (a.each(function(e, t) {
  790. var index = $(this).closest("tr").data("index");
  791. t.checked = n, i.setCheckData(index, n)
  792. }), i.syncCheckAll(), i.renderForm("checkbox")) : (i.setCheckData(l, n), i.syncCheckAll()), layui.event.call(e[
  793. 0], y, "checkbox(" + p + ")", v.call(e[0], {
  794. checked: n,
  795. type: o ? "all" : "one"
  796. })),
  797. // 自定义
  798. o ? a.each(function(e, t) {
  799. layui.event.call(this, y, "checkboxChange(" + p + ")", v.call(this, {
  800. checked: n,
  801. }))
  802. }) : layui.event.call(e[
  803. 0], y, "checkboxChange(" + p + ")", v.call(e[0], {
  804. checked: n,
  805. }))
  806. }), i.elem.on("click", 'input[lay-type="layTableRadio"]+', function() {
  807. var e = t(this).prev(),
  808. a = e[0].checked,
  809. l = d.cache[i.key],
  810. n = e.parents("tr").eq(0).data("index");
  811. layui.each(l, function(e, t) {
  812. n === e ? t.LAY_CHECKED = !0 : delete t.LAY_CHECKED
  813. }), i.setThisRowChecked(n), layui.event.call(this, y, "radio(" + p + ")", v.call(this, {
  814. checked: a
  815. }))
  816. }), i.layBody.on("mouseenter", "tr", function() {
  817. var e = t(this),
  818. a = e.index();
  819. e.data("off") || i.layBody.find("tr:eq(" + a + ")").addClass(_)
  820. }).on("mouseleave", "tr", function() {
  821. var e = t(this),
  822. a = e.index();
  823. e.data("off") || i.layBody.find("tr:eq(" + a + ")").removeClass(_)
  824. }).on("click", "tr", function() {
  825. m.call(this, "row")
  826. }).on("dblclick", "tr", function() {
  827. m.call(this, "rowDouble")
  828. });
  829. var m = function(e) {
  830. var i = t(this);
  831. i.data("off") || layui.event.call(this, y, e + "(" + p + ")", v.call(i.children("td")[0]))
  832. };
  833. i.layBody.on("change", "." + W, function() {
  834. var e = t(this),
  835. a = this.value,
  836. l = e.parent().data("field"),
  837. n = e.parents("tr").eq(0).data("index"),
  838. o = d.cache[i.key][n];
  839. o[l] = a, layui.event.call(this, y, "edit(" + p + ")", v.call(this, {
  840. value: a,
  841. field: l
  842. }))
  843. }).on("blur", "." + W, function() {
  844. var e, a = t(this),
  845. l = this,
  846. n = a.parent().data("field"),
  847. o = a.parents("tr").eq(0).data("index"),
  848. r = d.cache[i.key][o];
  849. i.eachCols(function(t, i) {
  850. i.field == n && i.templet && (e = i.templet)
  851. }), a.siblings(h).html(function(t) {
  852. return u({
  853. templet: e
  854. }, t, r)
  855. }(l.value)), a.parent().data("content", l.value), a.remove()
  856. }), i.layBody.on("click", "td", function(e) {
  857. var i = t(this),
  858. a = (i.data("field"), i.data("edit")),
  859. l = i.children(h);
  860. if (!i.data("off") && a) {
  861. var n = t('<input class="layui-input ' + W + '">');
  862. return n[0].value = i.data("content") || l.text(), i.find("." + W)[0] || i.append(n), n.focus(), void layui.stope(
  863. e)
  864. }
  865. }).on("mouseenter", "td", function() {
  866. b.call(this)
  867. }).on("mouseleave", "td", function() {
  868. b.call(this, "hide")
  869. });
  870. var g = "layui-table-grid-down",
  871. b = function(e) {
  872. var i = t(this),
  873. a = i.children(h);
  874. if (!i.data("off"))
  875. if (e) i.find(".layui-table-grid-down").remove();
  876. else if (a.prop("scrollWidth") > a.outerWidth()) {
  877. if (a.find("." + g)[0]) return;
  878. i.append('<div class="' + g + '"><i class="layui-icon layui-icon-down"></i></div>')
  879. }
  880. };
  881. i.layBody.on("click", "." + g, function(e) {
  882. var n = t(this),
  883. o = n.parent(),
  884. d = o.children(h);
  885. i.tipsIndex = l.tips(['<div class="layui-table-tips-main" style="margin-top: -' + (d.height() + 16) + "px;" +
  886. function() {
  887. return "sm" === a.size ? "padding: 4px 15px; font-size: 12px;" : "lg" === a.size ? "padding: 14px 15px;" :
  888. ""
  889. }() + '">', d.html(), "</div>", '<i class="layui-icon layui-table-tips-c layui-icon-close"></i>'
  890. ].join(""), d[0], {
  891. tips: [3, ""],
  892. time: -1,
  893. anim: -1,
  894. maxWidth: r.ios || r.android ? 300 : i.elem.width() / 2,
  895. isOutAnim: !1,
  896. skin: "layui-table-tips",
  897. success: function(e, t) {
  898. e.find(".layui-table-tips-c").on("click", function() {
  899. l.close(t)
  900. })
  901. }
  902. }), layui.stope(e)
  903. }), i.layBody.on("click", "*[lay-event]", function() {
  904. var e = t(this),
  905. a = e.parents("tr").eq(0).data("index");
  906. layui.event.call(this, y, "tool(" + p + ")", v.call(this, {
  907. event: e.attr("lay-event")
  908. })), i.setThisRowChecked(a)
  909. }), i.layMain.on("scroll", function() {
  910. var e = t(this),
  911. a = e.scrollLeft(),
  912. n = e.scrollTop();
  913. i.layHeader.scrollLeft(a), i.layTotal.scrollLeft(a), i.layFixed.find(k).scrollTop(n), l.close(i.tipsIndex)
  914. }), R.on("resize", function() {
  915. i.resize()
  916. })
  917. },
  918. function() {
  919. F.on("click", function() {
  920. F.trigger("table.remove.tool.panel")
  921. }), F.on("table.remove.tool.panel", function() {
  922. t(".layui-table-tool-panel").remove()
  923. })
  924. }(), d.init = function(e, i) {
  925. i = i || {};
  926. var a = this,
  927. l = t(e ? 'table[lay-filter="' + e + '"]' : h + "[lay-data]"),
  928. n = "Table element property lay-data configuration item has a syntax error: ";
  929. return l.each(function() {
  930. var a = t(this),
  931. l = a.attr("lay-data");
  932. try {
  933. l = new Function("return " + l)()
  934. } catch (r) {
  935. o.error(n + l)
  936. }
  937. var c = [],
  938. s = t.extend({
  939. elem: this,
  940. cols: [],
  941. data: [],
  942. skin: a.attr("lay-skin"),
  943. size: a.attr("lay-size"),
  944. even: "string" == typeof a.attr("lay-even")
  945. }, d.config, i, l);
  946. e && a.hide(), a.find("thead>tr").each(function(e) {
  947. s.cols[e] = [], t(this).children().each(function(i) {
  948. var a = t(this),
  949. l = a.attr("lay-data");
  950. try {
  951. l = new Function("return " + l)()
  952. } catch (r) {
  953. return o.error(n + l)
  954. }
  955. var d = t.extend({
  956. title: a.text(),
  957. colspan: a.attr("colspan") || 0,
  958. rowspan: a.attr("rowspan") || 0
  959. }, l);
  960. d.colspan < 2 && c.push(d), s.cols[e].push(d)
  961. })
  962. }), a.find("tbody>tr").each(function(e) {
  963. var i = t(this),
  964. a = {};
  965. i.children("td").each(function(e, i) {
  966. var l = t(this),
  967. n = l.data("field");
  968. if (n) return a[n] = l.html()
  969. }), layui.each(c, function(e, t) {
  970. var l = i.children("td").eq(e);
  971. a[t.field] = l.html()
  972. }), s.data[e] = a
  973. }), d.render(s)
  974. }), a
  975. }, c.that = {}, c.config = {}, d.eachCols = function(e, i, a) {
  976. var l = c.config[e] || {},
  977. n = [],
  978. o = 0;
  979. a = t.extend(!0, [], a || l.cols), layui.each(a, function(e, t) {
  980. layui.each(t, function(t, i) {
  981. if (i.colGroup) {
  982. var l = 0;
  983. o++, i.CHILD_COLS = [], layui.each(a[e + 1], function(e, t) {
  984. t.PARENT_COL_INDEX || l > 1 && l == i.colspan || (t.PARENT_COL_INDEX = o, i.CHILD_COLS.push(t), l +=
  985. parseInt(t.colspan > 1 ? t.colspan : 1))
  986. })
  987. }
  988. i.PARENT_COL_INDEX || n.push(i)
  989. })
  990. });
  991. var r = function(e) {
  992. layui.each(e || n, function(e, t) {
  993. return t.CHILD_COLS ? r(t.CHILD_COLS) : void("function" == typeof i && i(e, t))
  994. })
  995. };
  996. r()
  997. }, d.checkStatus = function(e) {
  998. var t = 0,
  999. i = 0,
  1000. a = [],
  1001. l = d.cache[e] || [];
  1002. return layui.each(l, function(e, l) {
  1003. return l.constructor === Array ? void i++ : void(l[d.config.checkName] && (t++, a.push(d.clearCacheKey(l))))
  1004. }), {
  1005. data: a,
  1006. isAll: !!l.length && t === l.length - i
  1007. }
  1008. }, d.exportFile = function(e, t, i) {
  1009. var a = this;
  1010. t = t || d.clearCacheKey(d.cache[e]), i = i || "csv";
  1011. var l = c.config[e] || {},
  1012. n = {
  1013. csv: "text/csv",
  1014. xls: "application/vnd.ms-excel"
  1015. } [i],
  1016. s = document.createElement("a");
  1017. return r.ie ? o.error("IE_NOT_SUPPORT_EXPORTS") : (s.href = "data:" + n + ";charset=utf-8,\ufeff" +
  1018. encodeURIComponent(function() {
  1019. var i = [],
  1020. l = [],
  1021. n = [];
  1022. return layui.each(t, function(t, a) {
  1023. var n = [];
  1024. "object" == typeof e ? (layui.each(e, function(e, a) {
  1025. 0 == t && i.push(a || "")
  1026. }), layui.each(d.clearCacheKey(a), function(e, t) {
  1027. n.push('"' + (t || "") + '"')
  1028. })) : d.eachCols(e, function(e, l) {
  1029. if (l.field && "normal" == l.type && !l.hide) {
  1030. var o = a[l.field];
  1031. void 0 !== o && null !== o || (o = ""), 0 == t && i.push(l.title || ""), n.push('"' + u(l, o, a, "text") +
  1032. '"')
  1033. }
  1034. }), l.push(n.join(","))
  1035. }), layui.each(a.dataTotal, function(e, t) {
  1036. n.push(t)
  1037. }), i.join(",") + "\r\n" + l.join("\r\n") + "\r\n" + n.join(",")
  1038. }()), s.download = (l.title || "table_" + (l.index || "")) + "." + i, document.body.appendChild(s), s.click(),
  1039. void document.body.removeChild(s))
  1040. }, d.resize = function(e) {
  1041. if (e) {
  1042. var t = s(e);
  1043. if (!t) return;
  1044. c.that[e].resize()
  1045. } else layui.each(c.that, function() {
  1046. this.resize()
  1047. })
  1048. }, d.reload = function(e, t) {
  1049. var i = s(e);
  1050. if (i) {
  1051. var a = c.that[e];
  1052. return a.reload(t), c.call(a)
  1053. }
  1054. }, d.render = function(e) {
  1055. var t = new j(e);
  1056. return c.call(t)
  1057. }, d.clearCacheKey = function(e) {
  1058. return e = t.extend({}, e), delete e[d.config.checkName], delete e[d.config.indexName], e
  1059. }, d.init(), e(y, d)
  1060. });