You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
797 lines
34 KiB
797 lines
34 KiB
10 months ago
|
/*
|
||
|
layui-v2.3.0-rc1为基础
|
||
|
2018-07-04 obj8.li加入编辑框number的代码片段,并对代码进行了格式化,代码详见592行,587行,600行,还有一变量在N2在61行
|
||
|
*/
|
||
|
;layui.define(["laytpl", "laypage", "layer", "form"],
|
||
|
function(e) {
|
||
|
"use strict";
|
||
|
var t = layui.$,
|
||
|
i = layui.laytpl,
|
||
|
a = layui.laypage,
|
||
|
l = layui.layer,
|
||
|
n = layui.form,
|
||
|
o = 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, s, e, t)
|
||
|
}
|
||
|
},
|
||
|
c = function() {
|
||
|
var e = this,
|
||
|
t = e.config,
|
||
|
i = t.id;
|
||
|
return i && (c.config[i] = t),
|
||
|
{
|
||
|
reload: function(t) {
|
||
|
e.reload.call(e, t)
|
||
|
},
|
||
|
config: t
|
||
|
}
|
||
|
},
|
||
|
s = "table",
|
||
|
u = ".layui-table",
|
||
|
h = "layui-hide",
|
||
|
f = "layui-none",
|
||
|
y = "layui-table-view",
|
||
|
p = ".layui-table-header",
|
||
|
m = ".layui-table-body",
|
||
|
v = ".layui-table-main",
|
||
|
g = ".layui-table-fixed",
|
||
|
x = ".layui-table-fixed-l",
|
||
|
b = ".layui-table-fixed-r",
|
||
|
k = ".layui-table-tool",
|
||
|
C = ".layui-table-page",
|
||
|
w = ".layui-table-sort",
|
||
|
N = "layui-table-edit",
|
||
|
N2 = "layui-table-edit-number",//2018-07-04 obj8.li加入
|
||
|
T = "layui-table-hover",
|
||
|
F = function(e) {
|
||
|
var t = '{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';
|
||
|
return e = e || {},
|
||
|
['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ', '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>', "<thead>", "{{# layui.each(d.data.cols, function(i1, item1){ }}", "<tr>", "{{# layui.each(item1, function(i2, item2){ }}", '{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}', '{{# if(item2.fixed === "right"){ right = true; } }}',
|
||
|
function() {
|
||
|
return e.fixed && "right" !== e.fixed ? '{{# if(item2.fixed && item2.fixed !== "right"){ }}': "right" === e.fixed ? '{{# if(item2.fixed === "right"){ }}': ""
|
||
|
} (), '<th data-field="{{ item2.field||i2 }}" {{# if(item2.minWidth){ }}data-minwidth="{{item2.minWidth}}"{{# } }} ' + t + ' {{# if(item2.unresize){ }}data-unresize="true"{{# } }}>', '<div class="layui-table-cell laytable-cell-', "{{# if(item2.colspan > 1){ }}", "group", "{{# } else { }}", "{{d.index}}-{{item2.field || i2}}", '{{# if(item2.type !== "normal"){ }}', " laytable-cell-{{ item2.type }}", "{{# } }}", "{{# } }}", '" {{#if(item2.align){}}align="{{item2.align}}"{{#}}}>', '{{# if(item2.type === "checkbox"){ }}', '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" lay-filter="layTableAllChoose" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}>', "{{# } else { }}", '<span>{{item2.title||""}}</span>', "{{# if(!(item2.colspan > 1) && item2.sort){ }}", '<span class="layui-table-sort layui-inline"><i class="layui-edge layui-table-sort-asc"></i><i class="layui-edge layui-table-sort-desc"></i></span>', "{{# } }}", "{{# } }}", "</div>", "</th>", e.fixed ? "{{# }; }}": "", "{{# }); }}", "</tr>", "{{# }); }}", "</thead>", "</table>"].join("")
|
||
|
},
|
||
|
W = ['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ', '{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>', "<tbody></tbody>", "</table>"].join(""),
|
||
|
z = ['<div class="layui-form layui-border-box {{d.VIEW_CLASS}}" lay-filter="LAY-table-{{d.index}}" style="{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}">', "{{# if(d.data.toolbar){ }}", '<div class="layui-table-tool"></div>', "{{# } }}", '<div class="layui-table-box">', "{{# var left, right; }}", '<div class="layui-table-header">', F(), "</div>", '<div class="layui-table-body layui-table-main">', W, "</div>", "{{# if(left){ }}", '<div class="layui-table-fixed layui-table-fixed-l">', '<div class="layui-table-header">', F({
|
||
|
fixed: !0
|
||
|
}), "</div>", '<div class="layui-table-body">', W, "</div>", "</div>", "{{# }; }}", "{{# if(right){ }}", '<div class="layui-table-fixed layui-table-fixed-r">', '<div class="layui-table-header">', F({
|
||
|
fixed: "right"
|
||
|
}), '<div class="layui-table-mend"></div>', "</div>", '<div class="layui-table-body">', W, "</div>", "</div>", "{{# }; }}", "</div>", "{{# if(d.data.page){ }}", '<div class="layui-table-page">', '<div id="layui-table-page{{d.index}}"></div>', "</div>", "{{# } }}", "<style>", "{{# layui.each(d.data.cols, function(i1, item1){", "layui.each(item1, function(i2, item2){ }}", ".laytable-cell-{{d.index}}-{{item2.field||i2}}{ ", "{{# if(item2.width){ }}", "width: {{item2.width}}px;", "{{# } }}", " }", "{{# });", "}); }}", "</style>", "</div>"].join(""),
|
||
|
A = t(window),
|
||
|
S = t(document),
|
||
|
M = function(e) {
|
||
|
var i = this;
|
||
|
i.index = ++d.index,
|
||
|
i.config = t.extend({},
|
||
|
i.config, d.config, e),
|
||
|
i.render()
|
||
|
};
|
||
|
M.prototype.config = {
|
||
|
limit: 10,
|
||
|
loading: !0,
|
||
|
cellMinWidth: 60,
|
||
|
text: {
|
||
|
none: "无数据"
|
||
|
}
|
||
|
},
|
||
|
M.prototype.render = function() {
|
||
|
var e = this,
|
||
|
a = e.config;
|
||
|
if (a.elem = t(a.elem), a.where = a.where || {},
|
||
|
a.id = a.id || a.elem.attr("id"), a.request = t.extend({
|
||
|
pageName: "page",
|
||
|
limitName: "limit"
|
||
|
},
|
||
|
a.request), a.response = t.extend({
|
||
|
statusName: "code",
|
||
|
statusCode: 0,
|
||
|
msgName: "msg",
|
||
|
dataName: "data",
|
||
|
countName: "count"
|
||
|
},
|
||
|
a.response), "object" == typeof a.page && (a.limit = a.page.limit || a.limit, a.limits = a.page.limits || a.limits, e.page = a.page.curr = a.page.curr || 1, delete a.page.elem, delete a.page.jump), !a.elem[0]) return e;
|
||
|
e.setArea();
|
||
|
var l = a.elem,
|
||
|
n = l.next("." + y),
|
||
|
o = e.elem = t(i(z).render({
|
||
|
VIEW_CLASS: y,
|
||
|
data: a,
|
||
|
index: e.index
|
||
|
}));
|
||
|
if (a.index = e.index, n[0] && n.remove(), l.after(o), e.layHeader = o.find(p), e.layMain = o.find(v), e.layBody = o.find(m), e.layFixed = o.find(g), e.layFixLeft = o.find(x), e.layFixRight = o.find(b), e.layTool = o.find(k), e.layPage = o.find(C), e.layTool.html(i(t(a.toolbar).html() || "").render(a)), a.height && e.fullSize(), a.cols.length > 1) {
|
||
|
var r = e.layFixed.find(p).find("th");
|
||
|
r.height(e.layHeader.height() - 1 - parseFloat(r.css("padding-top")) - parseFloat(r.css("padding-bottom")))
|
||
|
}
|
||
|
e.pullData(e.page),
|
||
|
e.events()
|
||
|
},
|
||
|
M.prototype.initOpts = function(e) {
|
||
|
var t = this,
|
||
|
i = (t.config, {
|
||
|
checkbox: 48,
|
||
|
space: 15,
|
||
|
numbers: 40
|
||
|
});
|
||
|
e.checkbox && (e.type = "checkbox"),
|
||
|
e.space && (e.type = "space"),
|
||
|
e.type || (e.type = "normal"),
|
||
|
"normal" !== e.type && (e.unresize = !0, e.width = e.width || i[e.type])
|
||
|
},
|
||
|
M.prototype.setArea = function() {
|
||
|
var e = this,
|
||
|
t = e.config,
|
||
|
i = 0,
|
||
|
a = 0,
|
||
|
l = 0,
|
||
|
n = 0,
|
||
|
o = t.width ||
|
||
|
function() {
|
||
|
var e = function(i) {
|
||
|
var a, l;
|
||
|
i = i || t.elem.parent(),
|
||
|
a = i.width();
|
||
|
try {
|
||
|
l = "none" === i.css("display")
|
||
|
} catch(n) {}
|
||
|
return ! i[0] || a && !l ? a: e(i.parent())
|
||
|
};
|
||
|
return e()
|
||
|
} ();
|
||
|
e.eachCols(function() {
|
||
|
i++
|
||
|
}),
|
||
|
o -=
|
||
|
function() {
|
||
|
return "line" === t.skin || "nob" === t.skin ? 2 : i + 1
|
||
|
} (),
|
||
|
layui.each(t.cols,
|
||
|
function(t, i) {
|
||
|
layui.each(i,
|
||
|
function(t, l) {
|
||
|
var r;
|
||
|
return l ? (e.initOpts(l), r = l.width || 0, void(l.colspan > 1 || (/\d+%$/.test(r) ? l.width = r = Math.floor(parseFloat(r) / 100 * o) : r || (l.width = r = 0, a++), n += r))) : void i.splice(t, 1)
|
||
|
})
|
||
|
}),
|
||
|
e.autoColNums = a,
|
||
|
o > n && a && (l = (o - n) / a),
|
||
|
layui.each(t.cols,
|
||
|
function(e, i) {
|
||
|
layui.each(i,
|
||
|
function(e, i) {
|
||
|
var a = i.minWidth || t.cellMinWidth;
|
||
|
i.colspan > 1 || 0 === i.width && (i.width = Math.floor(l >= a ? l: a))
|
||
|
})
|
||
|
}),
|
||
|
t.height && /^full-\d+$/.test(t.height) && (e.fullHeightGap = t.height.split("-")[1], t.height = A.height() - e.fullHeightGap)
|
||
|
},
|
||
|
M.prototype.reload = function(e) {
|
||
|
var i = this;
|
||
|
i.config.data && i.config.data.constructor === Array && delete i.config.data,
|
||
|
i.config = t.extend({},
|
||
|
i.config, e),
|
||
|
i.render()
|
||
|
},
|
||
|
M.prototype.page = 1,
|
||
|
M.prototype.pullData = function(e, i) {
|
||
|
var a = this,
|
||
|
n = a.config,
|
||
|
o = n.request,
|
||
|
r = n.response,
|
||
|
d = function() {
|
||
|
"object" == typeof n.initSort && a.sort(n.initSort.field, n.initSort.type)
|
||
|
};
|
||
|
if (a.startTime = (new Date).getTime(), n.url) {
|
||
|
var c = {};
|
||
|
c[o.pageName] = e,
|
||
|
c[o.limitName] = n.limit;
|
||
|
var s = t.extend(c, n.where);
|
||
|
n.contentType && 0 == n.contentType.indexOf("application/json") && (s = JSON.stringify(s)),
|
||
|
t.ajax({
|
||
|
type: n.method || "get",
|
||
|
url: n.url,
|
||
|
contentType: n.contentType,
|
||
|
data: s,
|
||
|
dataType: "json",
|
||
|
headers: n.headers || {},
|
||
|
success: function(t) {
|
||
|
t[r.statusName] != r.statusCode ? (a.renderForm(), a.layMain.html('<div class="' + f + '">' + (t[r.msgName] || "返回的数据状态异常") + "</div>")) : (a.renderData(t, e, t[r.countName]), d(), n.time = (new Date).getTime() - a.startTime + " ms"),
|
||
|
i && l.close(i),
|
||
|
"function" == typeof n.done && n.done(t, e, t[r.countName])
|
||
|
},
|
||
|
error: function(e, t) {
|
||
|
a.layMain.html('<div class="' + f + '">数据接口请求异常</div>'),
|
||
|
a.renderForm(),
|
||
|
i && l.close(i)
|
||
|
}
|
||
|
})
|
||
|
} else if (n.data && n.data.constructor === Array) {
|
||
|
var u = {},
|
||
|
h = e * n.limit - n.limit;
|
||
|
u[r.dataName] = n.data.concat().splice(h, n.limit),
|
||
|
u[r.countName] = n.data.length,
|
||
|
a.renderData(u, e, n.data.length),
|
||
|
d(),
|
||
|
"function" == typeof n.done && n.done(u, e, u[r.countName])
|
||
|
}
|
||
|
},
|
||
|
M.prototype.eachCols = function(e) {
|
||
|
var i = t.extend(!0, [], this.config.cols),
|
||
|
a = [],
|
||
|
l = 0;
|
||
|
layui.each(i,
|
||
|
function(e, t) {
|
||
|
layui.each(t,
|
||
|
function(t, n) {
|
||
|
if (n.colspan > 1) {
|
||
|
var o = 0;
|
||
|
l++,
|
||
|
n.CHILD_COLS = [],
|
||
|
layui.each(i[e + 1],
|
||
|
function(e, t) {
|
||
|
t.PARENT_COL || o == n.colspan || (t.PARENT_COL = l, n.CHILD_COLS.push(t), o += t.colspan > 1 ? t.colspan: 1)
|
||
|
})
|
||
|
}
|
||
|
n.PARENT_COL || a.push(n)
|
||
|
})
|
||
|
});
|
||
|
var n = function(t) {
|
||
|
layui.each(t || a,
|
||
|
function(t, i) {
|
||
|
return i.CHILD_COLS ? n(i.CHILD_COLS) : void e(t, i)
|
||
|
})
|
||
|
};
|
||
|
n()
|
||
|
},
|
||
|
M.prototype.renderData = function(e, n, o, r) {
|
||
|
var c = this,
|
||
|
s = c.config,
|
||
|
u = e[s.response.dataName] || [],
|
||
|
y = [],
|
||
|
p = [],
|
||
|
m = [],
|
||
|
v = function() {
|
||
|
return ! r && c.sortKey ? c.sort(c.sortKey.field, c.sortKey.sort, !0) : (layui.each(u,
|
||
|
function(e, a) {
|
||
|
var l = [],
|
||
|
o = [],
|
||
|
u = [],
|
||
|
h = e + s.limit * (n - 1) + 1;
|
||
|
0 !== a.length && (r || (a[d.config.indexName] = e), c.eachCols(function(e, n) {
|
||
|
var r = n.field || e,
|
||
|
f = a[r];
|
||
|
c.getColElem(c.layHeader, r);
|
||
|
if (void 0 !== f && null !== f || (f = ""), !(n.colspan > 1)) {
|
||
|
var y = ['<td data-field="' + r + '" ' +
|
||
|
function() {
|
||
|
var e = [];
|
||
|
return n.edit && e.push('data-edit="' + n.edit + '"'),
|
||
|
n.align && e.push('align="' + n.align + '"'),
|
||
|
n.templet && e.push('data-content="' + f + '"'),
|
||
|
n.toolbar && e.push('data-off="true"'),
|
||
|
n.event && e.push('lay-event="' + n.event + '"'),
|
||
|
n.style && e.push('style="' + n.style + '"'),
|
||
|
n.minWidth && e.push('data-minwidth="' + n.minWidth + '"'),
|
||
|
e.join(" ")
|
||
|
} () + ">", '<div class="layui-table-cell laytable-cell-' +
|
||
|
function() {
|
||
|
var e = s.index + "-" + r;
|
||
|
return "normal" === n.type ? e: e + " laytable-cell-" + n.type
|
||
|
} () + '">' +
|
||
|
function() {
|
||
|
var e = t.extend(!0, {
|
||
|
LAY_INDEX: h
|
||
|
},
|
||
|
a);
|
||
|
return "checkbox" === n.type ? '<input type="checkbox" name="layTableCheckbox" lay-skin="primary" ' +
|
||
|
function() {
|
||
|
var t = d.config.checkName;
|
||
|
return n[t] ? (a[t] = n[t], n[t] ? "checked": "") : e[t] ? "checked": ""
|
||
|
} () + ">": "numbers" === n.type ? h: n.toolbar ? i(t(n.toolbar).html() || "").render(e) : n.templet ?
|
||
|
function() {
|
||
|
return "function" == typeof n.templet ? n.templet(e) : i(t(n.templet).html() || String(f)).render(e)
|
||
|
} () : f
|
||
|
} (), "</div></td>"].join("");
|
||
|
l.push(y),
|
||
|
n.fixed && "right" !== n.fixed && o.push(y),
|
||
|
"right" === n.fixed && u.push(y)
|
||
|
}
|
||
|
}), y.push('<tr data-index="' + e + '">' + l.join("") + "</tr>"), p.push('<tr data-index="' + e + '">' + o.join("") + "</tr>"), m.push('<tr data-index="' + e + '">' + u.join("") + "</tr>"))
|
||
|
}), c.layBody.scrollTop(0), c.layMain.find("." + f).remove(), c.layMain.find("tbody").html(y.join("")), c.layFixLeft.find("tbody").html(p.join("")), c.layFixRight.find("tbody").html(m.join("")), c.renderForm(), c.syncCheckAll(), c.haveInit ? c.scrollPatch() : setTimeout(function() {
|
||
|
c.scrollPatch()
|
||
|
},
|
||
|
50), c.haveInit = !0, void l.close(c.tipsIndex))
|
||
|
};
|
||
|
return c.key = s.id || s.index,
|
||
|
d.cache[c.key] = u,
|
||
|
c.layPage[0 === u.length && 1 == n ? "addClass": "removeClass"](h),
|
||
|
r ? v() : 0 === u.length ? (c.renderForm(), c.layFixed.remove(), c.layMain.find("tbody").html(""), c.layMain.find("." + f).remove(), c.layMain.append('<div class="' + f + '">' + s.text.none + "</div>")) : (v(), void(s.page && (s.page = t.extend({
|
||
|
elem: "layui-table-page" + s.index,
|
||
|
count: o,
|
||
|
limit: s.limit,
|
||
|
limits: s.limits || [10, 20, 30, 40, 50, 60, 70, 80, 90],
|
||
|
groups: 3,
|
||
|
layout: ["prev", "page", "next", "skip", "count", "limit"],
|
||
|
prev: '<i class="layui-icon"></i>',
|
||
|
next: '<i class="layui-icon"></i>',
|
||
|
jump: function(e, t) {
|
||
|
t || (c.page = e.curr, s.limit = e.limit, c.pullData(e.curr, c.loading()))
|
||
|
}
|
||
|
},
|
||
|
s.page), s.page.count = o, a.render(s.page))))
|
||
|
},
|
||
|
M.prototype.getColElem = function(e, t) {
|
||
|
var i = this,
|
||
|
a = i.config;
|
||
|
return e.eq(0).find(".laytable-cell-" + (a.index + "-" + t) + ":eq(0)")
|
||
|
},
|
||
|
M.prototype.renderForm = function(e) {
|
||
|
n.render(e, "LAY-table-" + this.index)
|
||
|
},
|
||
|
M.prototype.sort = function(e, i, a, l) {
|
||
|
var n, r, c = this,
|
||
|
u = {},
|
||
|
h = c.config,
|
||
|
f = h.elem.attr("lay-filter"),
|
||
|
y = 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");
|
||
|
if (c.sortKey && !a && n === c.sortKey.field && i === c.sortKey.sort) return;
|
||
|
var p = c.layHeader.find("th .laytable-cell-" + h.index + "-" + n).find(w);
|
||
|
c.layHeader.find("th").find(w).removeAttr("lay-sort"),
|
||
|
p.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
|
||
|
},
|
||
|
"asc" === i ? r = layui.sort(y, n) : "desc" === i ? r = layui.sort(y, n, !0) : (r = layui.sort(y, d.config.indexName), delete c.sortKey),
|
||
|
u[h.response.dataName] = r,
|
||
|
c.renderData(u, c.page, c.count, !0),
|
||
|
l && layui.event.call(e, s, "sort(" + f + ")", {
|
||
|
field: n,
|
||
|
type: i
|
||
|
})
|
||
|
},
|
||
|
M.prototype.loading = function() {
|
||
|
var e = this,
|
||
|
t = e.config;
|
||
|
if (t.loading && t.url) return l.msg("数据请求中", {
|
||
|
icon: 16,
|
||
|
offset: [e.elem.offset().top + e.elem.height() / 2 - 35 - A.scrollTop() + "px", e.elem.offset().left + e.elem.width() / 2 - 90 - A.scrollLeft() + "px"],
|
||
|
time: -1,
|
||
|
anim: -1,
|
||
|
fixed: !1
|
||
|
})
|
||
|
},
|
||
|
M.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)
|
||
|
},
|
||
|
M.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)))
|
||
|
},
|
||
|
M.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(a, l) {
|
||
|
if (l.selectorText === ".laytable-cell-" + i.index + "-" + e) return t(l),
|
||
|
!0
|
||
|
})
|
||
|
},
|
||
|
M.prototype.fullSize = function() {
|
||
|
var e, t = this,
|
||
|
i = t.config,
|
||
|
a = i.height;
|
||
|
t.fullHeightGap && (a = A.height() - t.fullHeightGap, a < 135 && (a = 135), t.elem.css("height", a)),
|
||
|
e = parseFloat(a) - parseFloat(t.layHeader.height()) - 1,
|
||
|
i.toolbar && (e -= t.layTool.outerHeight()),
|
||
|
i.page && (e = e - t.layPage.outerHeight() - 1),
|
||
|
t.layMain.css("height", e)
|
||
|
},
|
||
|
M.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
|
||
|
},
|
||
|
M.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]),
|
||
|
o = i.outerWidth() - e.layMain.width();
|
||
|
if (e.autoColNums && o < 5 && !e.scrollPatchWStatus) {
|
||
|
var r = e.layHeader.eq(0).find("thead th:last-child"),
|
||
|
d = r.data("field");
|
||
|
e.getCssRule(d,
|
||
|
function(t) {
|
||
|
var i = t.style.width || r.outerWidth();
|
||
|
t.style.width = parseFloat(i) - n - o + "px",
|
||
|
e.layMain.height() - e.layMain.prop("clientHeight") > 0 && (t.style.width = parseFloat(t.style.width) - 1 + "px"),
|
||
|
e.scrollPatchWStatus = !0
|
||
|
})
|
||
|
}
|
||
|
if (a && l) {
|
||
|
if (!e.elem.find(".layui-table-patch")[0]) {
|
||
|
var c = t('<th class="layui-table-patch"><div class="layui-table-cell"></div></th>');
|
||
|
c.find("div").css({
|
||
|
width: a
|
||
|
}),
|
||
|
e.layHeader.eq(0).find("thead tr").append(c)
|
||
|
}
|
||
|
} else e.layHeader.eq(0).find(".layui-table-patch").remove();
|
||
|
var s = e.layMain.height(),
|
||
|
u = s - l;
|
||
|
e.layFixed.find(m).css("height", i.height() > u ? u: "auto"),
|
||
|
e.layFixRight[o > 0 ? "removeClass": "addClass"](h),
|
||
|
e.layFixRight.css("right", a - 1)
|
||
|
},
|
||
|
M.prototype.events = function() {
|
||
|
var e, a = this,
|
||
|
n = a.config,
|
||
|
o = t("body"),
|
||
|
c = {},
|
||
|
u = a.layHeader.find("th"),
|
||
|
h = ".layui-table-cell",
|
||
|
f = n.elem.attr("lay-filter");
|
||
|
u.on("mousemove",
|
||
|
function(e) {
|
||
|
var i = t(this),
|
||
|
a = i.offset().left,
|
||
|
l = e.clientX - a;
|
||
|
i.attr("colspan") > 1 || 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 i = t(this);
|
||
|
if (c.allowResize) {
|
||
|
var l = i.data("field");
|
||
|
e.preventDefault(),
|
||
|
c.resizeStart = !0,
|
||
|
c.offset = [e.clientX, e.clientY],
|
||
|
a.getCssRule(l,
|
||
|
function(e) {
|
||
|
var t = e.style.width || i.outerWidth();
|
||
|
c.rule = e,
|
||
|
c.ruleWidth = parseFloat(t),
|
||
|
c.minWidth = i.data("minwidth") || n.cellMinWidth
|
||
|
})
|
||
|
}
|
||
|
}),
|
||
|
S.on("mousemove",
|
||
|
function(t) {
|
||
|
if (c.resizeStart) {
|
||
|
if (t.preventDefault(), c.rule) {
|
||
|
var i = c.ruleWidth + t.clientX - c.offset[0];
|
||
|
i < c.minWidth && (i = c.minWidth),
|
||
|
c.rule.style.width = i + "px",
|
||
|
l.close(a.tipsIndex)
|
||
|
}
|
||
|
e = 1
|
||
|
}
|
||
|
}).on("mouseup",
|
||
|
function(t) {
|
||
|
c.resizeStart && (c = {},
|
||
|
o.css("cursor", ""), a.scrollPatch()),
|
||
|
2 === e && (e = null)
|
||
|
}),
|
||
|
u.on("click",
|
||
|
function() {
|
||
|
var i, l = t(this),
|
||
|
n = l.find(w),
|
||
|
o = n.attr("lay-sort");
|
||
|
return n[0] && 1 !== e ? (i = "asc" === o ? "desc": "desc" === o ? null: "asc", void a.sort(l, i, null, !0)) : e = 2
|
||
|
}).find(w + " .layui-edge ").on("click",
|
||
|
function(e) {
|
||
|
var i = t(this),
|
||
|
l = i.index(),
|
||
|
n = i.parents("th").eq(0).data("field");
|
||
|
layui.stope(e),
|
||
|
0 === l ? a.sort(n, "asc", null, !0) : a.sort(n, "desc", null, !0)
|
||
|
}),
|
||
|
a.elem.on("click", 'input[name="layTableCheckbox"]+',
|
||
|
function() {
|
||
|
var e = t(this).prev(),
|
||
|
i = a.layBody.find('input[name="layTableCheckbox"]'),
|
||
|
l = e.parents("tr").eq(0).data("index"),
|
||
|
n = e[0].checked,
|
||
|
o = "layTableAllChoose" === e.attr("lay-filter");
|
||
|
o ? (i.each(function(e, t) {
|
||
|
t.checked = n,
|
||
|
a.setCheckData(e, n)
|
||
|
}), a.syncCheckAll(), a.renderForm("checkbox")) : (a.setCheckData(l, n), a.syncCheckAll()),
|
||
|
layui.event.call(this, s, "checkbox(" + f + ")", {
|
||
|
checked: n,
|
||
|
data: d.cache[a.key] ? d.cache[a.key][l] || {}: {},
|
||
|
type: o ? "all": "one"
|
||
|
})
|
||
|
}),
|
||
|
a.layBody.on("mouseenter", "tr",
|
||
|
function() {
|
||
|
var e = t(this),
|
||
|
i = e.index();
|
||
|
a.layBody.find("tr:eq(" + i + ")").addClass(T)
|
||
|
}).on("mouseleave", "tr",
|
||
|
function() {
|
||
|
var e = t(this),
|
||
|
i = e.index();
|
||
|
a.layBody.find("tr:eq(" + i + ")").removeClass(T)
|
||
|
}),
|
||
|
a.layBody.on("change", "." + N,
|
||
|
function() {
|
||
|
var e = t(this),
|
||
|
i = this.value,
|
||
|
l = e.parent().data("field"),
|
||
|
n = e.parents("tr").eq(0).data("index"),
|
||
|
o = d.cache[a.key][n];
|
||
|
o[l] = i,
|
||
|
layui.event.call(this, s, "edit(" + f + ")", {
|
||
|
value: i,
|
||
|
data: o,
|
||
|
field: l
|
||
|
})
|
||
|
}).on("blur", "." + N,
|
||
|
function() {
|
||
|
var e, l = t(this),
|
||
|
n = l.parent().data("field"),
|
||
|
o = l.parents("tr").eq(0).data("index"),
|
||
|
r = d.cache[a.key][o];
|
||
|
a.eachCols(function(t, i) {
|
||
|
i.field == n && i.templet && (e = i.templet)
|
||
|
}),
|
||
|
l.siblings(h).html(e ? i(t(e).html() || this.value).render(r) : this.value),
|
||
|
l.parent().data("content", this.value),
|
||
|
l.remove()
|
||
|
}).on("change", "." + N2,//obj8.li 2018-07-04加入number编辑框的监听
|
||
|
function() {
|
||
|
var e = t(this),
|
||
|
i = this.value,
|
||
|
l = e.parent().data("field"),
|
||
|
n = e.parents("tr").eq(0).data("index"),
|
||
|
o = d.cache[a.key][n];
|
||
|
o[l] = i,
|
||
|
layui.event.call(this, s, "edit(" + f + ")", {
|
||
|
value: i,
|
||
|
data: o,
|
||
|
field: l
|
||
|
})
|
||
|
}).on("blur", "." + N2,//obj8.li 2018-07-04加入number编辑框的监听
|
||
|
function() {
|
||
|
var e, l = t(this),
|
||
|
n = l.parent().data("field"),
|
||
|
o = l.parents("tr").eq(0).data("index"),
|
||
|
r = d.cache[a.key][o];
|
||
|
a.eachCols(function(t, i) {
|
||
|
i.field == n && i.templet && (e = i.templet)
|
||
|
}),
|
||
|
l.siblings(h).html(e ? i(t(e).html() || this.value).render(r) : this.value),
|
||
|
l.parent().data("content", this.value),
|
||
|
l.remove()
|
||
|
}),
|
||
|
a.layBody.on("click", "td",
|
||
|
function() {
|
||
|
var e = t(this),
|
||
|
i = (e.data("field"), e.data("edit")),
|
||
|
o = e.children(h);
|
||
|
if (l.close(a.tipsIndex), !e.data("off")) if (i) if ("select" === i);
|
||
|
else {
|
||
|
//obj8.li 2018-07-04加入number编辑框==============================
|
||
|
var d;
|
||
|
if(e.data("edit") == "number"){
|
||
|
d = t('<input type="number" class="layui-input ' + N2 + '">');
|
||
|
}
|
||
|
if(e.data("edit") == "text"){
|
||
|
d = t('<input class="layui-input ' + N + '">');
|
||
|
}
|
||
|
//end==========================================================
|
||
|
//var d = t('<input class="layui-input ' + N + '">');//源代码 屏蔽
|
||
|
d[0].value = e.data("content") || o.text(),
|
||
|
e.find("." + N)[0] || e.append(d),
|
||
|
d.focus()
|
||
|
} else o.find(".layui-form-switch,.layui-form-checkbox")[0] || Math.round(o.prop("scrollWidth")) > Math.round(o.outerWidth()) && (a.tipsIndex = l.tips(['<div class="layui-table-tips-main" style="margin-top: -' + (o.height() + 16) + "px;" +
|
||
|
function() {
|
||
|
return "sm" === n.size ? "padding: 4px 15px; font-size: 12px;": "lg" === n.size ? "padding: 14px 15px;": ""
|
||
|
} () + '">', o.html(), "</div>", '<i class="layui-icon layui-table-tips-c">ဆ</i>'].join(""), o[0], {
|
||
|
tips: [3, ""],
|
||
|
time: -1,
|
||
|
anim: -1,
|
||
|
maxWidth: r.ios || r.android ? 300 : 600,
|
||
|
isOutAnim: !1,
|
||
|
skin: "layui-table-tips",
|
||
|
success: function(e, t) {
|
||
|
e.find(".layui-table-tips-c").on("click",
|
||
|
function() {
|
||
|
l.close(t)
|
||
|
})
|
||
|
}
|
||
|
}))
|
||
|
}),
|
||
|
a.layBody.on("click", "*[lay-event]",
|
||
|
function() {
|
||
|
var e = t(this),
|
||
|
l = e.parents("tr").eq(0).data("index"),
|
||
|
n = a.layBody.find('tr[data-index="' + l + '"]'),
|
||
|
o = "layui-table-click",
|
||
|
r = d.cache[a.key][l];
|
||
|
layui.event.call(this, s, "tool(" + f + ")", {
|
||
|
data: d.clearCacheKey(r),
|
||
|
event: e.attr("lay-event"),
|
||
|
tr: n,
|
||
|
del: function() {
|
||
|
d.cache[a.key][l] = [],
|
||
|
n.remove(),
|
||
|
a.scrollPatch()
|
||
|
},
|
||
|
update: function(e) {
|
||
|
e = e || {},
|
||
|
layui.each(e,
|
||
|
function(e, l) {
|
||
|
if (e in r) {
|
||
|
var o, d = n.children('td[data-field="' + e + '"]');
|
||
|
r[e] = l,
|
||
|
a.eachCols(function(t, i) {
|
||
|
i.field == e && i.templet && (o = i.templet)
|
||
|
}),
|
||
|
d.children(h).html(o ? i(t(o).html() || l).render(r) : l),
|
||
|
d.data("content", l)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}),
|
||
|
n.addClass(o).siblings("tr").removeClass(o)
|
||
|
}),
|
||
|
a.layMain.on("scroll",
|
||
|
function() {
|
||
|
var e = t(this),
|
||
|
i = e.scrollLeft(),
|
||
|
n = e.scrollTop();
|
||
|
a.layHeader.scrollLeft(i),
|
||
|
a.layFixed.find(m).scrollTop(n),
|
||
|
l.close(a.tipsIndex)
|
||
|
}),
|
||
|
A.on("resize",
|
||
|
function() {
|
||
|
a.fullSize(),
|
||
|
a.scrollPatch()
|
||
|
})
|
||
|
},
|
||
|
d.init = function(e, i) {
|
||
|
i = i || {};
|
||
|
var a = this,
|
||
|
l = t(e ? 'table[lay-filter="' + e + '"]': u + "[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
|
||
|
},
|
||
|
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
|
||
|
}
|
||
|
},
|
||
|
c.config = {},
|
||
|
d.reload = function(e, i) {
|
||
|
var a = c.config[e];
|
||
|
return i = i || {},
|
||
|
a ? (i.data && i.data.constructor === Array && delete a.data, d.render(t.extend(!0, {},
|
||
|
a, i))) : o.error("The ID option was not found in the table instance")
|
||
|
},
|
||
|
d.render = function(e) {
|
||
|
var t = new M(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(s, d)
|
||
|
});
|