/** layui-v2.5.7 MIT License */
layui.define(['laytpl', 'laypage', 'layer', 'form', 'util'], function (e) {
'use strict'
var t = layui.$,
i = layui.laytpl,
a = layui.laypage,
l = layui.layer,
n = layui.form,
o = (layui.util, layui.hint()),
r = layui.device(),
d = {
config: { checkName: 'LAY_CHECKED', indexName: 'LAY_TABLE_INDEX' },
cache: {},
index: layui.table ? layui.table.index + 1e4 : 0,
set: function (e) {
var i = this
return (i.config = t.extend({}, i.config, e)), i
},
on: function (e, t) {
return layui.onevent.call(this, y, e, t)
},
},
c = function () {
var e = this,
t = e.config,
i = t.id || t.index
return (
i && ((c.that[i] = e), (c.config[i] = t)),
{
config: t,
reload: function (t) {
e.reload.call(e, t)
},
setColsWidth: function () {
e.setColsWidth.call(e)
},
resize: function () {
e.resize.call(e)
},
}
)
},
s = function (e) {
var t = c.config[e]
return (
t ||
o.error(
'The ID option was not found in the table instance'
),
t || null
)
},
u = function (e, a, l, n) {
var o = e.templet
? (function () {
return 'function' == typeof e.templet
? e.templet(l)
: i(t(e.templet).html() || String(a)).render(l)
})()
: a
return n ? t('
' + o + '
').text() : o
},
y = 'table',
h = '.layui-table',
f = 'layui-hide',
p = 'layui-none',
v = 'layui-table-view',
m = '.layui-table-tool',
g = '.layui-table-box',
b = '.layui-table-init',
x = '.layui-table-header',
k = '.layui-table-body',
C = '.layui-table-main',
w = '.layui-table-fixed',
T = '.layui-table-fixed-l',
A = '.layui-table-fixed-r',
L = '.layui-table-total',
N = '.layui-table-page',
S = '.layui-table-sort',
R = 'layui-table-edit',
W = 'layui-table-hover',
_ = function (e) {
var t =
'{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}'
return (
(e = e || {}),
[
'
')
}
}),
(F.prototype.getColElem = function (e, t) {
var i = this,
a = i.config
return e
.eq(0)
.find('.laytable-cell-' + (a.index + '-' + t) + ':eq(0)')
}),
(F.prototype.renderForm = function (e) {
n.render(e, 'LAY-table-' + this.index)
}),
(F.prototype.setThisRowChecked = function (e) {
var t = this,
i = (t.config, 'layui-table-click'),
a = t.layBody.find('tr[data-index="' + e + '"]')
a.addClass(i).siblings('tr').removeClass(i)
}),
(F.prototype.sort = function (e, i, a, l) {
var n,
r,
c = this,
s = {},
u = c.config,
h = u.elem.attr('lay-filter'),
f = d.cache[c.key]
'string' == typeof e &&
c.layHeader.find('th').each(function (i, a) {
var l = t(this),
o = l.data('field')
if (o === e) return (e = l), (n = o), !1
})
try {
var n = n || e.data('field'),
p = e.data('key')
if (
c.sortKey &&
!a &&
n === c.sortKey.field &&
i === c.sortKey.sort
)
return
var v = c.layHeader.find('th .laytable-cell-' + p).find(S)
c.layHeader.find('th').find(S).removeAttr('lay-sort'),
v.attr('lay-sort', i || null),
c.layFixed.find('th')
} catch (m) {
return o.error('Table modules: Did not match to field')
}
;(c.sortKey = { field: n, sort: i }),
u.autoSort &&
('asc' === i
? (r = layui.sort(f, n))
: 'desc' === i
? (r = layui.sort(f, n, !0))
: ((r = layui.sort(f, d.config.indexName)),
delete c.sortKey)),
(s[u.response.dataName] = r || f),
c.renderData(s, c.page, c.count, !0),
l &&
layui.event.call(e, y, 'sort(' + h + ')', {
field: n,
type: i,
})
}),
(F.prototype.loading = function (e) {
var i = this,
a = i.config
a.loading &&
(e
? (i.layInit && i.layInit.remove(),
delete i.layInit,
i.layBox.find(b).remove())
: ((i.layInit = t(
[
'
',
'',
'
',
].join('')
)),
i.layBox.append(i.layInit)))
}),
(F.prototype.setCheckData = function (e, t) {
var i = this,
a = i.config,
l = d.cache[i.key]
l[e] && l[e].constructor !== Array && (l[e][a.checkName] = t)
}),
(F.prototype.syncCheckAll = function () {
var e = this,
t = e.config,
i = e.layHeader.find('input[name="layTableCheckbox"]'),
a = function (i) {
return (
e.eachCols(function (e, a) {
'checkbox' === a.type && (a[t.checkName] = i)
}),
i
)
}
i[0] &&
(d.checkStatus(e.key).isAll
? (i[0].checked ||
(i.prop('checked', !0), e.renderForm('checkbox')),
a(!0))
: (i[0].checked &&
(i.prop('checked', !1), e.renderForm('checkbox')),
a(!1)))
}),
(F.prototype.getCssRule = function (e, t) {
var i = this,
a = i.elem.find('style')[0],
l = a.sheet || a.styleSheet || {},
n = l.cssRules || l.rules
layui.each(n, function (i, a) {
if (a.selectorText === '.laytable-cell-' + e) return t(a), !0
})
}),
(F.prototype.fullSize = function () {
var e,
t = this,
i = t.config,
a = i.height
t.fullHeightGap &&
((a = H.height() - t.fullHeightGap),
a < 135 && (a = 135),
t.elem.css('height', a)),
a &&
((e = parseFloat(a) - (t.layHeader.outerHeight() || 38)),
i.toolbar && (e -= t.layTool.outerHeight() || 50),
i.totalRow && (e -= t.layTotal.outerHeight() || 40),
i.page && (e -= t.layPage.outerHeight() || 41),
t.layMain.css('height', e - 2))
}),
(F.prototype.getScrollWidth = function (e) {
var t = 0
return (
e
? (t = e.offsetWidth - e.clientWidth)
: ((e = document.createElement('div')),
(e.style.width = '100px'),
(e.style.height = '100px'),
(e.style.overflowY = 'scroll'),
document.body.appendChild(e),
(t = e.offsetWidth - e.clientWidth),
document.body.removeChild(e)),
t
)
}),
(F.prototype.scrollPatch = function () {
var e = this,
i = e.layMain.children('table'),
a = e.layMain.width() - e.layMain.prop('clientWidth'),
l = e.layMain.height() - e.layMain.prop('clientHeight'),
n =
(e.getScrollWidth(e.layMain[0]),
i.outerWidth() - e.layMain.width()),
o = function (e) {
if (a && l) {
if (((e = e.eq(0)), !e.find('.layui-table-patch')[0])) {
var i = t(
'
'
)
i.find('div').css({ width: a }),
e.find('tr').append(i)
}
} else e.find('.layui-table-patch').remove()
}
o(e.layHeader), o(e.layTotal)
var r = e.layMain.height(),
d = r - l
e.layFixed.find(k).css('height', i.height() >= d ? d : 'auto'),
e.layFixRight[n > 0 ? 'removeClass' : 'addClass'](f),
e.layFixRight.css('right', a - 1)
}),
(F.prototype.events = function () {
var e,
i = this,
a = i.config,
o = t('body'),
c = {},
s = i.layHeader.find('th'),
h = '.layui-table-cell',
p = a.elem.attr('lay-filter')
i.layTool.on('click', '*[lay-event]', function (e) {
var o = t(this),
c = o.attr('lay-event'),
s = function (e) {
var l = t(e.list),
n = t('
')
n.html(l),
a.height &&
n.css(
'max-height',
a.height - (i.layTool.outerHeight() || 50)
),
o.find('.layui-table-tool-panel')[0] || o.append(n),
i.renderForm(),
n.on('click', function (e) {
layui.stope(e)
}),
e.done && e.done(n, l)
}
switch (
(layui.stope(e),
j.trigger('table.tool.panel.remove'),
l.close(i.tipsIndex),
c)
) {
case 'LAYTABLE_COLS':
s({
list: (function () {
var e = []
return (
i.eachCols(function (t, i) {
i.field &&
'normal' == i.type &&
e.push(
''
)
}),
e.join('')
)
})(),
done: function () {
n.on(
'checkbox(LAY_TABLE_TOOL_COLS)',
function (e) {
var l = t(e.elem),
n = this.checked,
o = l.data('key'),
r = l.data('parentkey')
layui.each(a.cols, function (e, t) {
layui.each(t, function (t, l) {
if (e + '-' + t === o) {
var d = l.hide
;(l.hide = !n),
i.elem
.find(
'*[data-key="' +
a.index +
'-' +
o +
'"]'
)
[
n
? 'removeClass'
: 'addClass'
](f),
d != l.hide &&
i.setParentCol(
!n,
r
),
i.resize()
}
})
})
}
)
},
})
break
case 'LAYTABLE_EXPORT':
r.ie
? l.tips(
'导出功能不支持 IE,请用 Chrome 等高级浏览器导出',
this,
{ tips: 3 }
)
: s({
list: (function () {
return [
'
导出到 Csv 文件
',
'
导出到 Excel 文件
',
].join('')
})(),
done: function (e, l) {
l.on('click', function () {
var e = t(this).data('type')
d.exportFile.call(i, a.id, null, e)
})
},
})
break
case 'LAYTABLE_PRINT':
var u = window.open('打印窗口', '_blank'),
h = [
'',
].join(''),
v = t(i.layHeader.html())
v.append(i.layMain.find('table').html()),
v.append(i.layTotal.find('table').html()),
v.find('th.layui-table-patch').remove(),
v.find('.layui-table-col-special').remove(),
u.document.write(h + v.prop('outerHTML')),
u.document.close(),
u.print(),
u.close()
}
layui.event.call(
this,
y,
'toolbar(' + p + ')',
t.extend({ event: c, config: a }, {})
)
}),
s
.on('mousemove', function (e) {
var i = t(this),
a = i.offset().left,
l = e.clientX - a
i.data('unresize') ||
c.resizeStart ||
((c.allowResize = i.width() - l <= 10),
o.css('cursor', c.allowResize ? 'col-resize' : ''))
})
.on('mouseleave', function () {
t(this)
c.resizeStart || o.css('cursor', '')
})
.on('mousedown', function (e) {
var l = t(this)
if (c.allowResize) {
var n = l.data('key')
e.preventDefault(),
(c.resizeStart = !0),
(c.offset = [e.clientX, e.clientY]),
i.getCssRule(n, function (e) {
var t = e.style.width || l.outerWidth()
;(c.rule = e),
(c.ruleWidth = parseFloat(t)),
(c.minWidth =
l.data('minwidth') ||
a.cellMinWidth)
})
}
}),
j
.on('mousemove', function (t) {
if (c.resizeStart) {
if ((t.preventDefault(), c.rule)) {
var a = c.ruleWidth + t.clientX - c.offset[0]
a < c.minWidth && (a = c.minWidth),
(c.rule.style.width = a + 'px'),
l.close(i.tipsIndex)
}
e = 1
}
})
.on('mouseup', function (t) {
c.resizeStart &&
((c = {}), o.css('cursor', ''), i.scrollPatch()),
2 === e && (e = null)
}),
s
.on('click', function (a) {
var l,
n = t(this),
o = n.find(S),
r = o.attr('lay-sort')
return o[0] && 1 !== e
? ((l =
'asc' === r
? 'desc'
: 'desc' === r
? null
: 'asc'),
void i.sort(n, l, null, !0))
: (e = 2)
})
.find(S + ' .layui-edge ')
.on('click', function (e) {
var a = t(this),
l = a.index(),
n = a.parents('th').eq(0).data('field')
layui.stope(e),
0 === l
? i.sort(n, 'asc', null, !0)
: i.sort(n, 'desc', null, !0)
})
var v = function (e) {
var a = t(this),
l = a.parents('tr').eq(0).data('index'),
n = i.layBody.find('tr[data-index="' + l + '"]'),
o = d.cache[i.key] || []
return (
(o = o[l] || {}),
t.extend(
{
tr: n,
data: d.clearCacheKey(o),
del: function () {
;(d.cache[i.key][l] = []),
n.remove(),
i.scrollPatch()
},
update: function (e) {
;(e = e || {}),
layui.each(e, function (e, t) {
if (e in o) {
var a,
l = n.children(
'td[data-field="' + e + '"]'
)
;(o[e] = t),
i.eachCols(function (t, i) {
i.field == e &&
i.templet &&
(a = i.templet)
}),
l
.children(h)
.html(
u({ templet: a }, t, o)
),
l.data('content', t)
}
})
},
},
e
)
)
}
i.elem.on('click', 'input[name="layTableCheckbox"]+', function () {
var e = t(this).prev(),
a = i.layBody.find('input[name="layTableCheckbox"]'),
l = e.parents('tr').eq(0).data('index'),
n = e[0].checked,
o = 'layTableAllChoose' === e.attr('lay-filter')
o
? (a.each(function (e, t) {
;(t.checked = n), i.setCheckData(e, n)
}),
i.syncCheckAll(),
i.renderForm('checkbox'))
: (i.setCheckData(l, n), i.syncCheckAll()),
layui.event.call(
e[0],
y,
'checkbox(' + p + ')',
v.call(e[0], { checked: n, type: o ? 'all' : 'one' })
)
}),
i.elem.on(
'click',
'input[lay-type="layTableRadio"]+',
function () {
var e = t(this).prev(),
a = e[0].checked,
l = d.cache[i.key],
n = e.parents('tr').eq(0).data('index')
layui.each(l, function (e, t) {
n === e
? (t.LAY_CHECKED = !0)
: delete t.LAY_CHECKED
}),
i.setThisRowChecked(n),
layui.event.call(
this,
y,
'radio(' + p + ')',
v.call(this, { checked: a })
)
}
),
i.layBody
.on('mouseenter', 'tr', function () {
var e = t(this),
a = e.index()
e.data('off') ||
i.layBody.find('tr:eq(' + a + ')').addClass(W)
})
.on('mouseleave', 'tr', function () {
var e = t(this),
a = e.index()
e.data('off') ||
i.layBody.find('tr:eq(' + a + ')').removeClass(W)
})
.on('click', 'tr', function () {
m.call(this, 'row')
})
.on('dblclick', 'tr', function () {
m.call(this, 'rowDouble')
})
var m = function (e) {
var i = t(this)
i.data('off') ||
layui.event.call(
this,
y,
e + '(' + p + ')',
v.call(i.children('td')[0])
)
}
i.layBody
.on('change', '.' + R, function () {
var e = t(this),
a = this.value,
l = e.parent().data('field'),
n = e.parents('tr').eq(0).data('index'),
o = d.cache[i.key][n]
;(o[l] = a),
layui.event.call(
this,
y,
'edit(' + p + ')',
v.call(this, { value: a, field: l })
)
})
.on('blur', '.' + R, function () {
var e,
a = t(this),
l = this,
n = a.parent().data('field'),
o = a.parents('tr').eq(0).data('index'),
r = d.cache[i.key][o]
i.eachCols(function (t, i) {
i.field == n && i.templet && (e = i.templet)
}),
a.siblings(h).html(
(function (t) {
return u({ templet: e }, t, r)
})(l.value)
),
a.parent().data('content', l.value),
a.remove()
}),
i.layBody
.on('click', 'td', function (e) {
var i = t(this),
a = (i.data('field'), i.data('edit')),
l = i.children(h)
if (!i.data('off') && a) {
var n = t('')
return (
(n[0].value = i.data('content') || l.text()),
i.find('.' + R)[0] || i.append(n),
n.focus(),
void layui.stope(e)
)
}
})
.on('mouseenter', 'td', function () {
b.call(this)
})
.on('mouseleave', 'td', function () {
b.call(this, 'hide')
})
var g = 'layui-table-grid-down',
b = function (e) {
var i = t(this),
a = i.children(h)
if (!i.data('off'))
if (e) i.find('.layui-table-grid-down').remove()
else if (a.prop('scrollWidth') > a.outerWidth()) {
if (a.find('.' + g)[0]) return
i.append(
'
'
)
}
}
i.layBody.on('click', '.' + g, function (e) {
var n = t(this),
o = n.parent(),
d = o.children(h)
;(i.tipsIndex = l.tips(
[
'
',
d.html(),
'
',
'',
].join(''),
d[0],
{
tips: [3, ''],
time: -1,
anim: -1,
maxWidth: r.ios || r.android ? 300 : i.elem.width() / 2,
isOutAnim: !1,
skin: 'layui-table-tips',
success: function (e, t) {
e.find('.layui-table-tips-c').on(
'click',
function () {
l.close(t)
}
)
},
}
)),
layui.stope(e)
}),
i.layBody.on('click', '*[lay-event]', function () {
var e = t(this),
a = e.parents('tr').eq(0).data('index')
layui.event.call(
this,
y,
'tool(' + p + ')',
v.call(this, { event: e.attr('lay-event') })
),
i.setThisRowChecked(a)
}),
i.layMain.on('scroll', function () {
var e = t(this),
a = e.scrollLeft(),
n = e.scrollTop()
i.layHeader.scrollLeft(a),
i.layTotal.scrollLeft(a),
i.layFixed.find(k).scrollTop(n),
l.close(i.tipsIndex)
}),
H.on('resize', function () {
i.resize()
})
}),
(function () {
j.on('click', function () {
j.trigger('table.remove.tool.panel')
}),
j.on('table.remove.tool.panel', function () {
t('.layui-table-tool-panel').remove()
})
})(),
(d.init = function (e, i) {
i = i || {}
var a = this,
l = t(e ? 'table[lay-filter="' + e + '"]' : h + '[lay-data]'),
n =
'Table element property lay-data configuration item has a syntax error: '
return (
l.each(function () {
var a = t(this),
l = a.attr('lay-data')
try {
l = new Function('return ' + l)()
} catch (r) {
o.error(n + l)
}
var c = [],
s = t.extend(
{
elem: this,
cols: [],
data: [],
skin: a.attr('lay-skin'),
size: a.attr('lay-size'),
even: 'string' == typeof a.attr('lay-even'),
},
d.config,
i,
l
)
e && a.hide(),
a.find('thead>tr').each(function (e) {
;(s.cols[e] = []),
t(this)
.children()
.each(function (i) {
var a = t(this),
l = a.attr('lay-data')
try {
l = new Function('return ' + l)()
} catch (r) {
return o.error(n + l)
}
var d = t.extend(
{
title: a.text(),
colspan: a.attr('colspan') || 0,
rowspan: a.attr('rowspan') || 0,
},
l
)
d.colspan < 2 && c.push(d),
s.cols[e].push(d)
})
}),
a.find('tbody>tr').each(function (e) {
var i = t(this),
a = {}
i.children('td').each(function (e, i) {
var l = t(this),
n = l.data('field')
if (n) return (a[n] = l.html())
}),
layui.each(c, function (e, t) {
var l = i.children('td').eq(e)
a[t.field] = l.html()
}),
(s.data[e] = a)
}),
d.render(s)
}),
a
)
}),
(c.that = {}),
(c.config = {}),
(d.eachCols = function (e, i, a) {
var l = c.config[e] || {},
n = [],
o = 0
;(a = t.extend(!0, [], a || l.cols)),
layui.each(a, function (e, t) {
layui.each(t, function (t, i) {
if (i.colGroup) {
var l = 0
o++,
(i.CHILD_COLS = []),
layui.each(a[e + 1], function (e, t) {
t.PARENT_COL_INDEX ||
(l > 1 && l == i.colspan) ||
((t.PARENT_COL_INDEX = o),
i.CHILD_COLS.push(t),
(l += parseInt(
t.colspan > 1 ? t.colspan : 1
)))
})
}
i.PARENT_COL_INDEX || n.push(i)
})
})
var r = function (e) {
layui.each(e || n, function (e, t) {
return t.CHILD_COLS
? r(t.CHILD_COLS)
: void ('function' == typeof i && i(e, t))
})
}
r()
}),
(d.checkStatus = function (e) {
var t = 0,
i = 0,
a = [],
l = d.cache[e] || []
return (
layui.each(l, function (e, l) {
return l.constructor === Array
? void i++
: void (
l[d.config.checkName] &&
(t++, a.push(d.clearCacheKey(l)))
)
}),
{ data: a, isAll: !!l.length && t === l.length - i }
)
}),
(d.exportFile = function (e, t, i) {
var a = this
;(t = t || d.clearCacheKey(d.cache[e])), (i = i || 'csv')
var l = c.config[e] || {},
n = { csv: 'text/csv', xls: 'application/vnd.ms-excel' }[i],
s = document.createElement('a')
return r.ie
? o.error('IE_NOT_SUPPORT_EXPORTS')
: ((s.href =
'data:' +
n +
';charset=utf-8,\ufeff' +
encodeURIComponent(
(function () {
var i = [],
l = [],
n = []
return (
layui.each(t, function (t, a) {
var n = []
'object' == typeof e
? (layui.each(e, function (e, a) {
0 == t && i.push(a || '')
}),
layui.each(
d.clearCacheKey(a),
function (e, t) {
n.push(
'"' +
(t || '') +
'"'
)
}
))
: d.eachCols(e, function (e, l) {
if (
l.field &&
'normal' == l.type &&
!l.hide
) {
var o = a[l.field]
;(void 0 !== o &&
null !== o) ||
(o = ''),
0 == t &&
i.push(
l.title ||
''
),
n.push(
'"' +
u(
l,
o,
a,
'text'
) +
'"'
)
}
}),
l.push(n.join(','))
}),
layui.each(a.dataTotal, function (e, t) {
n.push(t)
}),
i.join(',') +
'\r\n' +
l.join('\r\n') +
'\r\n' +
n.join(',')
)
})()
)),
(s.download =
(l.title || 'table_' + (l.index || '')) + '.' + i),
document.body.appendChild(s),
s.click(),
void document.body.removeChild(s))
}),
(d.resize = function (e) {
if (e) {
var t = s(e)
if (!t) return
c.that[e].resize()
} else
layui.each(c.that, function () {
this.resize()
})
}),
(d.reload = function (e, t) {
var i = s(e)
if (i) {
var a = c.that[e]
return a.reload(t), c.call(a)
}
}),
(d.render = function (e) {
var t = new F(e)
return c.call(t)
}),
(d.clearCacheKey = function (e) {
return (
(e = t.extend({}, e)),
delete e[d.config.checkName],
delete e[d.config.indexName],
e
)
}),
d.init(),
e(y, d)
})