初始化排课条件设置

beetlsql3-dev
姚丹ab 2 years ago
parent 66680715c2
commit 13cbb97888

@ -0,0 +1,732 @@
;
layui.define("jquery", function(e) {
"use strict";
var o = layui.jquery,
a = layui.hint(),
f = layui.form,
r = "layui-tree-enter",
i = function(e) {
this.options = e
},
t = {
arrow: ["", ""],
checkbox: ["", ""],
radio: ["", ""],
branch: ["folder-close", "folder"],
leaf: "leaf"
},
tt = {},
TreeTable = function() {
this.mapping = {};
},
TreeNode = function(item) {
this.item = item;
this.nodes = [];
};
i.prototype.expand = function(treeNode, isOpened, e) {
var o = this;
var subTreeNodes = treeNode.nodes;
if (subTreeNodes && subTreeNodes.length > 0) {
for (var ind = 0; ind < subTreeNodes.length; ind++) {
var subTreeNode = subTreeNodes[ind];
var subTrNode = document.getElementById(subTreeNode.id);
if (subTrNode) {
!isOpened ? (e.data("spread", null), subTrNode.setAttribute('class', 'layui-hide layui-anim layui-anim-fadein')) : (e.data("spread", !0), subTrNode.setAttribute('class', 'layui-anim layui-anim-fadein'))
}
if (isOpened && !subTreeNode.isOpened) {
continue;
}
o.expand(subTreeNode, isOpened, e);
}
}
},
i.prototype.traverseModel = function(treeTable, parentNode, item, childrenAttrs) {
var o = this;
if (item) {
var treeNode = new TreeNode(item);
if (parentNode) {
treeNode.parentId = parentNode.id;
treeNode.id = item.id;
treeNode.level = parentNode.level + 1;
parentNode.nodes[parentNode.nodes.length] = treeNode;
treeNode.parent = parentNode;
} else {
treeNode.id = item.id;
treeNode.level = 0;
}
treeNode.isOpened = false;
treeTable.mapping[treeNode.id] = treeNode;
var children = item[childrenAttrs];
if (children && children.constructor == Array) {
for (var i = 0; i < children.length; i++) {
o.traverseModel(treeTable, treeNode, children[i], childrenAttrs);
}
}
}
}, i.prototype.initGird = function(e) {
var ob = this, i = ob.options;
i = o.extend({}, i, {checkbox: i.checkbox?i.checkbox:false , spreadable :i.spreadable?i.spreadable:false});
var tableHeaderStr = '<thead><tr>';
tableHeaderStr += (i.checkbox == false ? '' : '<th style="width:10px"><input type="checkbox" name="treeGirdCheckbox" lay-skin="primary" lay-filter="allChoose"></th>');
for (var ind = 0; ind < i.layout.length; ind++) {
var headerClass = i.layout[ind].headerClass ? ' class="' + i.layout[ind].headerClass + '"' : '';
tableHeaderStr += '<th' + headerClass + '>' + i.layout[ind].name + '</th>';
}
tableHeaderStr += '</tr></thead>';
tableHeaderStr = o(tableHeaderStr);
var treeTable = new TreeTable();
var root = {
id: 'root',
children: i.nodes
}
ob.traverseModel(treeTable, null, root, ['children']);
tt[e.selector] = treeTable;
e.addClass("layui-tree layui-treetable"),
i.skin && e.addClass("layui-tree-skin-" + i.skin),
ob.treeGird(e), ob.checkboxEvent(e, i),
e.wrapInner('<tbody></tbody'),
e.prepend(tableHeaderStr),
e.wrapInner('<table class="layui-table"></table>'),
e.wrapInner('<div class="layui-form"></div>'),
ob.on(e);
return e;
}, i.prototype.treeGird = function(e, a) {
var r = this,
i = r.options,
n = a || i.nodes,
nt = tt[e.selector];
layui.each(n, function(a, n) {
if (n.children) {
layui.each(n.children, function(index, item) {
item.pid = n.id;
});
}
var treeNode = nt.mapping[n.id];
var indent = "";
if (treeNode.level > 1) {
for (var ind = 1; ind < treeNode.level; ind++) {
indent += '<span style="display: inline-block;width: 20px;"></span>';
}
}
var p;
if (i.spreadable) {
n.spread = true, p = false, treeNode.isOpened = true;
} else {
p = treeNode.parentId == 'root' ? null : treeNode.parentId;
}
var l = n.children && n.children.length > 0,
str = o(['<tr class="' + (p ? "layui-hide layui-anim layui-anim-fadein" : "layui-anim layui-anim-fadein") + '" id="' + n.id + '">',
function() {
if (i.checkbox){
return '<td><input type="checkbox" name="treeGirdCheckbox" lay-skin="primary" lay-filter="*" value="' + n.id + '" ' + ((n.checked && n.checked == true) ? 'checked="checked"' : "") +'></td>';
}
}(),
function() {
var ret = ""
for (var ind = 0; ind < i.layout.length; ind++) {
if (i.layout[ind].treeNodes) {
ret += '<td class="' + i.layout[ind].colClass + '" style="' + i.layout[ind].style + '"><li ' + (n.spread ? 'data-spread="' + n.spread + '"' : "") + '>' + (indent + (l ? '<i class="layui-icon layui-tree-spread">' + (n.spread ? t.arrow[1] : t.arrow[0]) + "</i>" : "")) + '<a href="' + (n.href || "javascript:;") + '" ' + (i.target && n.href ? 'target="' + i.target + '"' : "") + ">" + ('<i class="layui-icon layui-tree-' + (l ? "branch" : "leaf") + ' '+(l ? n.spread ? t.branch[1] : t.branch[0] : t.leaf)+'">' + "</i>") + ("<cite>" + (n.name || "未命名") + "</cite></a></li></td>");
} else if (i.layout[ind].render) {
ret += '<td class="' + i.layout[ind].colClass + '" style="' + i.layout[ind].style + '">' + i.layout[ind].render(JSON.stringify(n)) + '</td>'
} else {
ret += '<td class="' + i.layout[ind].colClass + '" style="' + i.layout[ind].style + '">' + n[i.layout[ind].field] + '</td>';
}
}
return ret;
}(), "</tr>"].join(""));
e.append(str), l && (r.treeGird(e, n.children)), r.spreadGird(str, n, e.selector), i.drag && r.drag(str, n);
r.changed(str, n)
})
},i.prototype.checkboxEvent = function (e, options){
var nt = tt[e.selector];
f.on('checkbox(allChoose)', function(data){
var child = o(data.elem).parents('table').find('tbody input[type="checkbox"]');
child.each(function(index, item){
item.checked = data.elem.checked;
});
f.render('checkbox');
});
f.on('checkbox(*)',function(data){
var node = nt.mapping[data.value].item;
if (options.callback && options.callback.beforeCheck) {
if (options.callback.beforeCheck(node)){
// 允许勾选或取消勾选
data.elem.checked ? data.othis.addClass('layui-form-checked') : data.othis.removeClass('layui-form-checked');
}else{
// 不允许勾选或取消勾选
data.elem.checked = !data.elem.checked;
!data.elem.checked ? data.othis.removeClass('layui-form-checked') :data.othis.addClass('layui-form-checked');
return true;
}
}
node.checked = data.elem.checked;
var sib = o(data.elem).parents('table').find('tbody input[type="checkbox"]:checked').length;
var total = o(data.elem).parents('table').find('tbody input[type="checkbox"]').length;
if(sib == total){
o(data.elem).parents('table').find('thead input[type="checkbox"]').prop("checked",true);
f.render();
}else{
o(data.elem).parents('table').find('thead input[type="checkbox"]').prop("checked",false);
f.render();
}
if (options.callback && options.callback.onCheck) {
return options.callback.onCheck(node);
}
});
},i.prototype.changed = function(e, o) {
var r = this;
if (o.pid == undefined || o.pid == null) {
e.children("input").on("change", function() {
var childUl = e.children("ul"),
checked = this.checked;
childUl.find("input").prop("checked", checked);
})
} else {
e.children("input").on("change", function() {
var that = this;
if (!this.checked) {
if (o.children && o.children.length > 0) {
var childUl = e.children("ul"),
checked = this.checked;
childUl.find("input").prop("checked", checked);
}
r.cancelParentsCheckboxCheck(that);
} else {
r.parentsChecked(this, this.checked);
if (o.children && o.children.length > 0) {
var childUl = e.children("ul"),
checked = this.checked;
childUl.find("input").prop("checked", checked);
}
}
});
}
}, i.prototype.cancelParentsCheckboxCheck = function(ele) {
if (!ele) {
return;
}
var r = this,
siblingInputs = r.siblingInputs(ele),
parentId = ele.getAttribute("data-parent-id"),
parentInput = null,
bool = true,
childrendInputs = null,
hasOneChildrenInputCheck = false;
if (parentId != 'undefined') {
parentInput = document.getElementById(parentId);
childrendInputs = r.currentChildrenInputs(parentInput);
}
for (var i = 0, len = siblingInputs.length; i < len; i++) {
if (siblingInputs[i].checked) {
bool = false;
break;
}
}
if (!childrendInputs || childrendInputs.length == 0) {
hasOneChildrenInputCheck = false;
} else {
for (var j = 0, len2 = childrendInputs.length; j < len2; j++) {
if (childrendInputs[j].getAttribute("data-parent-id") != "undefined") {
if (childrendInputs[j].checked) {
hasOneChildrenInputCheck = true;
break;
}
}
}
}
if (bool && !hasOneChildrenInputCheck) {
r.inputChecked(parentInput, false);
}
this.cancelParentsCheckboxCheck(parentInput);
}, i.prototype.siblingInputs = function(ele) {
var that = this;
if (ele) {
var parent = ele.parentElement,
parents = parent.parentElement,
childrens = parents.children,
siblingInputs = [];
} else {
return null;
}
for (var i = 0, len = childrens.length; i < len; i++) {
if (childrens[i] != parent) {
if (childrens[i].children[0].nodeName == "INPUT") {
siblingInputs.push(childrens[i].children[0]);
}
if (childrens[i].children[1].nodeName == "INPUT") {
siblingInputs.push(childrens[i].children[1]);
}
}
}
parent = null;
parents = null;
childrens = null;
return siblingInputs;
}, i.prototype.currentChildrenInputs = function(ele) {
var parent = ele.parentElement,
childrenInputs = [];
if (parent.getElementsByTagName("ul").length > 0) {
var uls = parent.getElementsByTagName("ul");
for (var i = 0, len = uls.length; i < len; i++) {
var inputs = uls[i].getElementsByTagName("input");
for (var j = 0, len2 = inputs.length; j < len2; j++) {
childrenInputs.push(inputs[j]);
}
}
}
return childrenInputs;
}, i.prototype.inputChecked = function(ele, checked) {
ele.checked = checked;
}, i.prototype.parentsChecked = function(e, checked) {
var r = this,
i = r.options,
selector = i.elem,
currentInput = e;
if (currentInput && (currentInput.nodeName == "INPUT")) {
var parentId = currentInput.getAttribute("data-parent-id"),
parentInput = null;
setTimeout(function() {
r.check(currentInput, checked);
if (parentId) {
r.parentsChecked(document.getElementById(parentId), checked);
}
}, 50);
}
}, i.prototype.findParents = function(ele, selector) {
var parent = ele.parentElement,
that = this;
if (selector.substr(0, 1) == "#") {
if (parent) {
if (parent.id != selector.substr(1)) {
that.findParents(parent, selector);
} else {
return parent;
}
}
} else if (selector.substr(0, 1) == ".") {
if (parent) {
var classnameArr = parent.className.split(" "),
len = classnameArr.length,
selectt = selector.substr(1),
hasSelector = false;
if (len > 0) {
for (var i = 0; i < len; i++) {
if (classnameArr[i] == selectt) {
hasSelector = true;
break;
}
}
}
if (!hasSelector) {
that.findParents(parent, selector);
} else if (hasSelector) {
return parent;
}
}
}
}, i.prototype.num = 1, i.prototype.uuid = function() {
var that = this,
randomStr = ['l', 'a', 'y', 'e', 'r', 'n', 'i'],
randomNum = Math.floor(Math.random() * 6);
return function() {
var str = "";
for (var i = 0; i <= randomNum; i++) {
str += randomStr[Math.floor(Math.random() * 6)];
}
return "layer_" + new Date().getTime() + "_" + (that.num++) + "_" + (++that.num) + "_" + str;
}();
}, i.prototype.check = function(input, bool) {
if (bool) {
input.checked = true;
} else {
input.checked = false;
}
}, i.prototype.click = function(e, o) {
var a = this,
r = a.options;
e.children("a").on("click", function(e) {
layui.stope(e), r.click(o)
})
}, i.prototype.spreadGird = function(e, o, el) {
var a = this,
r = (a.options, e.find(".layui-tree-spread")),
nodeId = e[0].id,
ri = e.find(".layui-tree-branch"),
nt = tt[el],
l = function() {
var treeNode = nt.mapping[nodeId];
var isOpened = treeNode.isOpened;
if (isOpened){
if (a.options.callback && a.options.callback.beforeCollapse && !a.options.callback.beforeCollapse(treeNode)) return true;
}else{
if (a.options.callback && a.options.callback.beforeExpand && !a.options.callback.beforeExpand(treeNode)) return true;
}
a.expand(treeNode, !isOpened, e);
isOpened ? (e.data("spread", null), r.html(t.arrow[0]), ri.removeClass(t.branch[1]), ri.addClass(t.branch[0])) : (e.data("spread", !0), r.html(t.arrow[1]), ri.removeClass(t.branch[0]), ri.addClass(t.branch[1]))
treeNode.isOpened = !isOpened;
if (isOpened){
if (a.options.callback && a.options.callback.onCollapse && !a.options.callback.onCollapse(treeNode)) return true;
}else{
if (a.options.callback && a.options.callback.onExpand && !a.options.callback.onExpand(treeNode)) return true;
}
};
(r.on("click", l), ri.parent().on("dblclick", l))
}, i.prototype.on = function(e) {
var a = this,
i = a.options,
t = "layui-tree-drag";
e.find("i").on("selectstart", function(e) {
return !1
}), i.drag && o(document).on("mousemove", function(e) {
var r = a.move;
if (r.from) {
var i = (r.to, o('<div class="layui-box ' + t + '"></div>'));
e.preventDefault(), o("." + t)[0] || o("body").append(i);
var n = o("." + t)[0] ? o("." + t) : i;
n.addClass("layui-show").html(r.from.elem.children("a").html()), n.css({
left: e.pageX + 10,
top: e.pageY + 10
})
}
}).on("mouseup", function() {
var e = a.move;
e.from && (e.from.elem.children("a").removeClass(r), e.to && e.to.elem.children("a").removeClass(r), a.move = {}, o("." + t).remove())
})
}, i.prototype.move = {}, i.prototype.drag = function(e, a) {
var i = this,
t = (i.options, e.children("a")),
n = function() {
var t = o(this),
n = i.move;
n.from && (n.to = {
item: a,
elem: e
}, t.addClass(r))
};
t.on("mousedown", function() {
var o = i.move;
o.from = {
item: a,
elem: e
}
}), t.on("mouseenter", n).on("mousemove", n).on("mouseleave", function() {
var e = o(this),
a = i.move;
a.from && (delete a.to, e.removeClass(r))
})
}, i.prototype.getLastChildNode = function(node){
var a = this, lastChildNode
if (node.children){
lastChildNode = this.getLastChildNode(node.children[node.children.length-1]);
}else{
lastChildNode = node;
}
return lastChildNode;
}, i.prototype.addNodes = function(v, parentNode, newNodes, isLastChild){
var a = this,
i = a.options,
nt = tt[i.elem];
layui.each(newNodes, function(an, n) {
if (n.children) {
layui.each(n.children, function (index, item) {
item.pid = n.id;
});
}
var treeNode = nt.mapping[n.id];
var indent = "";
if (treeNode.level > 1) {
for (var ind = 1; ind < treeNode.level; ind++) {
indent += '<span style="display: inline-block;width: 20px;"></span>';
}
}
var p;
if (i.spreadable) {
n.spread = true, p = false, treeNode.isOpened = true;
} else {
p = treeNode.parentId == 'root' ? null : treeNode.parentId;
}
if (isLastChild) {
if (parentNode) p = nt.mapping[parentNode.id].isOpened ? false : true;
else p = false;
}
var l = n.children && n.children.length > 0,
str = o(['<tr class="' + (p ? "layui-hide layui-anim layui-anim-fadein" : "layui-anim layui-anim-fadein") + '" id="' + n.id + '">',
function () {
if (i.checkbox) {
return '<td><input type="checkbox" name="treeGirdCheckbox" lay-skin="primary" lay-filter="*" value="' + n.id + '" ' + ((n.checked && n.checked == true) ? 'checked="checked"' : "") + '></td>';
}
}(),
function () {
var ret = ""
for (var ind = 0; ind < i.layout.length; ind++) {
if (i.layout[ind].treeNodes) {
ret += '<td class="' + i.layout[ind].colClass + '" style="' + i.layout[ind].style + '">'
+ '<li ' + (n.spread ? 'data-spread="' + n.spread + '"' : "") + '>'
+ (indent + (l ? '<i class="layui-icon layui-tree-spread">' + (n.spread ? t.arrow[1] : t.arrow[0]) + "</i>" : ""))
+ '<a href="' + (n.href || "javascript:;") + '" ' + (i.target && n.href ? 'target="' + i.target + '"' : "") + ">"
+ ('<i class="layui-icon layui-tree-' + (l ? "branch" : "leaf") + ' '+(l ? n.spread ? t.branch[1] : t.branch[0] : t.leaf)+' ">'
+ "</i>") + ("<cite>" + (n.name || "未命名") + "</cite></a></li></td>");
} else if (i.layout[ind].render) {
ret += '<td class="' + i.layout[ind].colClass + '" style="' + i.layout[ind].style + '">' + i.layout[ind].render(JSON.stringify(n)) + '</td>'
} else {
ret += '<td class="' + i.layout[ind].colClass + '" style="' + i.layout[ind].style + '">' + n[i.layout[ind].field] + '</td>';
}
}
return ret;
}(), "</tr>"].join(""));
if (parentNode) {
var lastChildNode;
if (isLastChild) {
lastChildNode = a.getLastChildNode(parentNode);
}else {
lastChildNode = parentNode;
}
v.find("tbody tr[id="+lastChildNode.id+"]").after(str);
}else{
v.find("tbody").append(str);
}
l && (a.addNodes(v, n, n.children, false)), a.spreadGird(str, n, v.selector), i.drag && a.drag(str, n);
a.changed(str, n)
})
}, i.prototype.removeNodes = function(v, treeNode){
var a = this, i = a.options, nt = tt[i.elem];
delete nt.mapping[treeNode.id];
var trNode = v.find("tbody tr[id="+treeNode.id+"]");
trNode.remove();
for (var i = 0; i < treeNode.nodes.length; i++){
a.removeNodes(v, nt.mapping[treeNode.nodes[i].id])
}
}, i.prototype.expandNode = function (nt, node, v, a, isOpened, sonSign){
var treeNode = nt.mapping[node.id];
var e = v.find("tbody tr[id=" + treeNode.id + "]");
var r = (a.options, e.find(".layui-tree-spread"));
if (isOpened){
if (!treeNode.isOpened) o(r).trigger("click");
}else{
if (treeNode.isOpened) o(r).trigger("click");
}
if (sonSign) {
for (var key in nt.mapping) {
var childNode = nt.mapping[key];
if (childNode.parentId == node.id) {
if (isOpened){
if (!childNode.isOpened) o(v.find("tbody tr[id=" + childNode.id + "]").find(".layui-tree-spread")).trigger("click");
}else{
if (treeNode.isOpened) o(v.find("tbody tr[id=" + childNode.id + "]").find(".layui-tree-spread")).trigger("click");
}
}
}
}
}, e("treetable", function(e) {
var r = new i(e = e || {}),
telem = o(e.elem);
var v = r.initGird(telem);
layui.addcss("modules/treetable/treetable.css");
var funs = {
getNode : function(idValue){
if (!idValue) return;
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode.id == idValue) {
return treeNode.item;
}
}
}, getNodeByParam : function(key, value, parentNode){
if (key == null || value == null) return;
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var arr = new Array();
for (var k in nt.mapping) {
var treeNode = nt.mapping[k];
if (treeNode.item[key] == value) {
var node = parentNode == null ? arr.push(treeNode.item):(parentNode.id == treeNode.parent.id ? arr.push(treeNode.item) : null);
return node;
}
}
return arr;
}, getNodesByParam : function(key, value, parentNode){
if (key == null || value == null) return;
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var arr = new Array();
for (var k in nt.mapping) {
var treeNode = nt.mapping[k];
if (treeNode.item[key] == value) {
parentNode == null ? arr.push(treeNode.item):(parentNode.id == treeNode.parent.id ? arr.push(treeNode.item) : null);
}
}
return arr;
}, getNodes : function(){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode && treeNode.item && treeNode.id != 'root'){
arr.push(treeNode.item);
}
}
return arr;
},addNode : function(parentNode, newNodes){
var i = r.options,
n = a || i.nodes,
nt = tt[v.selector];
var arr = [];
if (!Array.isArray(newNodes)){
arr.push(newNodes)
}else{
arr = newNodes;
}
var treeTable = new TreeTable();
r.traverseModel(treeTable, parentNode? nt.mapping[parentNode.id]:nt.mapping['root'], newNodes, ['children']);
for (var tttt in treeTable.mapping){
if ('root' == tttt) continue;
nt.mapping[tttt] = treeTable.mapping[tttt];
}
r.addNodes(v, parentNode, arr, true);
f.render();
},editNodeName : function(node){
var i = r.options, n = a || i.nodes, nt = tt[v.selector];
var treeNode = nt.mapping[node.id];
treeNode.item = node;
var trNode = v.find("tbody tr[id="+node.id+"] td li a cite");
trNode.text(node.name);
f.render();
},removeNode : function(node){
var i = r.options, n = a || i.nodes, nt = tt[v.selector];
var treeNode = nt.mapping[node.id];
r.removeNodes(v, treeNode);
f.render();
},getSelected : function() {
var arr = new Array();
var nt = tt[v.selector]
o(e.elem).find("input[type=checkbox]:checked").each(function(index, v) {
var treeNode = nt.mapping[v.value];
if (treeNode && treeNode.item && treeNode.id != 'root'){
arr.push(treeNode.item);
}
});
return arr;
},getUnSelected : function() {
var arr = new Array();
var nt = tt[v.selector]
o(e.elem).find("input[type=checkbox]:not(:checked)").each(function(index, v) {
var treeNode = nt.mapping[v.value];
if (treeNode && treeNode.item && treeNode.id != 'root'){
arr.push(treeNode.item);
}
});
return arr;
},expand : function() {
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode.id == 'root') continue;
var isOpened = treeNode.isOpened;
if (isOpened) continue;
var e = o('#' + treeNode.id),
r = (a.options, e.find(".layui-tree-spread")),
ri = e.find(".layui-tree-branch");
oi.expand(treeNode, !isOpened, e);
isOpened ? (e.data("spread", null), r.html(t.arrow[0]), ri.removeClass(t.branch[1]), ri.addClass(t.branch[0])) : (e.data("spread", !0), r.html(t.arrow[1]), ri.removeClass(t.branch[0]), ri.addClass(t.branch[1]))
treeNode.isOpened = !isOpened;
}
},collapse : function() {
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode.id == 'root') continue;
var isOpened = treeNode.isOpened;
if (!isOpened) continue;
var e = o('#' + treeNode.id),
r = (a.options, e.find(".layui-tree-spread")),
ri = e.find(".layui-tree-branch");
oi.expand(treeNode, !isOpened, e);
isOpened ? (e.data("spread", null), r.html(t.arrow[0]), ri.removeClass(t.branch[1]), ri.addClass(t.branch[0])) : (e.data("spread", !0), r.html(t.arrow[1]), ri.removeClass(t.branch[0]), ri.addClass(t.branch[1]))
treeNode.isOpened = !isOpened;
}
}, destory : function (){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var treeO = o(v.selector);
if (treeO) treeO.empty(), delete tt[v.selector];
}, expandNode : function(node, sonSign){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
r.expandNode(nt, node, v, a, true, sonSign);
}, collapseNode : function(node, sonSign){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
r.expandNode(nt, node, v, a, false, sonSign);
}, checkNode : function (node, check){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var ck = v.find("tbody tr[id=" + node.id + "] ");
ck.find('input[type=checkbox]').attr("checked", check);
ck.find('input[type=checkbox]')[0].checked = check;
check ? ck.find('.layui-form-checkbox').addClass('layui-form-checked') : ck.find('.layui-form-checkbox').removeClass('layui-form-checked')
}, setChkDisabled : function(node, disabled){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
var ck = v.find("tbody tr[id=" + node.id + "] ");
ck.find('input[type=checkbox]').attr("disabled",disabled);
disabled ? ck.find('.layui-form-checkbox').addClass('layui-checkbox-disbaled layui-disabled') : ck.find('.layui-form-checkbox').removeClass('layui-checkbox-disbaled layui-disabled');
}, checkAllNodes : function(check){
var a = this,
oi = new i(v = v || {}),
nt = tt[v.selector];
for (var key in nt.mapping) {
var treeNode = nt.mapping[key];
if (treeNode && treeNode.item && treeNode.id != 'root'){
var ck = v.find("tbody tr[id=" + treeNode.id + "] ");
ck.find('input[type=checkbox]').attr("checked", check);
ck.find('input[type=checkbox]')[0].checked = check;
check ? ck.find('.layui-form-checkbox').addClass('layui-form-checked') : ck.find('.layui-form-checkbox').removeClass('layui-form-checked')
}
}
var all = v.find('thead input[type="checkbox"]');
all.attr("checked", check);
all[0].checked = check;
check ? all.parents('tr').find('.layui-form-checkbox').addClass('layui-form-checked') : all.parents('tr').find('.layui-form-checkbox').removeClass('layui-form-checked')
}
}
for (var key in funs){
v[key] = funs[key];
}
if (e.callback) {
v.onCheck = e.callback.onCheck;
}
return telem[0] ? v : a.error("layui.tree 没有找到" + e.elem + "元素");
})
});

@ -8,7 +8,7 @@ layui.config({
}).extend({ //设定组件别名
treetable: 'treetable'
});
layui.define([ 'form', 'laydate', 'table','treetable','element'], function(exports) {
layui.define(['laydate', 'form', 'table', 'treetable', 'element'], function (exports) {
var form = layui.form;
var laydate = layui.laydate;
var table = layui.table;
@ -16,7 +16,6 @@ layui.define([ 'form', 'laydate', 'table','treetable','element'], function(expor
var treetable = layui.treetable;
var teacherOpenCourseScheduleSessionTagTable = null;
var teacherOpenCourseScheduleSessionClassTable = null;
var tagTableData = Common.postAjax('/jlw/teacherOpenCourseScheduleSessionTag/list.json' ).data;// 课次数据接口
var classRoomTableData = Common.postAjax('/jlw/teacherOpenCourseScheduleSessionClass/list.json' ).data;// 排课教室数据接口;
//一些事件触发
element.on('tab(docDemoTabBrief)', function(data){
@ -43,143 +42,147 @@ layui.define([ 'form', 'laydate', 'table','treetable','element'], function(expor
var sx_ = localStorage.getItem("teacherOpenCourseScheduleSessionTagTable_field_"+Common.userInfoId); //筛选值显示、隐藏缓存
if($.isEmpty(sx_)){sx_ = {};}else {sx_ = JSON.parse(sx_);}
/*课次设置table*/
teacherOpenCourseScheduleSessionTagTable = table.render({
elem : '#teacherOpenCourseScheduleSessionTagTable',
height : Lib.getTableHeight(1),
cellMinWidth: 100,
method : 'post',
data:tagTableData
/*,page : Lib.tablePage // 开启分页
,toolbar: '#toolbar_teacherOpenCourseScheduleSessionTag' //自定义头部左侧工具栏
,defaultToolbar: ['filter', 'print', 'exports'] //头部右侧工具栏*/
,limit : 100
, cols: [[ // 表头
/* {
field : 'teacherOpenCourseScheduleSessionTagId',
title : '课程开课-课次标签ID',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseScheduleSessionTagId'])?false:sx_['teacherOpenCourseScheduleSessionTagId'],
teacherOpenCourseScheduleSessionTagTable = function(){
table.render({
elem : '#teacherOpenCourseScheduleSessionTagTable',
height : Lib.getTableHeight(1),
cellMinWidth: 100,
method : 'post',
url:Common.ctxPath + "/jlw/teacherOpenCourseScheduleSessionTag/list.json"
/*,page : Lib.tablePage // 开启分页
,toolbar: '#toolbar_teacherOpenCourseScheduleSessionTag' //自定义头部左侧工具栏
,defaultToolbar: ['filter', 'print', 'exports'] //头部右侧工具栏*/
,limit : 100
, cols: [[ // 表头
/* {
field : 'teacherOpenCourseScheduleSessionTagId',
title : '课程开课-课次标签ID',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseScheduleSessionTagId'])?false:sx_['teacherOpenCourseScheduleSessionTagId'],
width : 60,
},
{
field : 'teacherOpenCourseScheduleSessionTagDuration',
title : '课程时长(分钟)',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseScheduleSessionTagDuration'])?false:sx_['teacherOpenCourseScheduleSessionTagDuration'],
},
{
field : 'teacherOpenCourseScheduleSessionTagAddTime',
title : '创建时间',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseScheduleSessionTagAddTime'])?false:sx_['teacherOpenCourseScheduleSessionTagAddTime'],
},
width : 60,
},
{
field : 'teacherOpenCourseScheduleSessionTagDuration',
title : '课程时长(分钟)',
{
field : 'orgId',
title : '组织ID',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseScheduleSessionTagDuration'])?false:sx_['teacherOpenCourseScheduleSessionTagDuration'],
hide:$.isEmpty(sx_['orgId'])?false:sx_['orgId'],
},
{
field : 'teacherOpenCourseScheduleSessionTagAddTime',
title : '创建时间',
field : 'userId',
title : '用户ID',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseScheduleSessionTagAddTime'])?false:sx_['teacherOpenCourseScheduleSessionTagAddTime'],
},
{
field : 'orgId',
title : '组织ID',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['orgId'])?false:sx_['orgId'],
},
{
field : 'userId',
title : '用户ID',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['userId'])?false:sx_['userId'],
},*/
{
field: 'teacherOpenCourseScheduleSessionTagName',
title: '课次名称',
align: "center",
hideField: false,
hide: $.isEmpty(sx_['teacherOpenCourseScheduleSessionTagName']) ? false : sx_['teacherOpenCourseScheduleSessionTagName'],
},
{
field: 'teacherOpenCourseScheduleSessionTagStartTime',
title: '开始时间',
align: "center",
hideField: false,
hide: $.isEmpty(sx_['teacherOpenCourseScheduleSessionTagStartTime']) ? false : sx_['teacherOpenCourseScheduleSessionTagStartTime'],
templet:StartTime,
event:"startTime"
},
{
field: 'teacherOpenCourseScheduleSessionTagEndTime',
title: '结束时间',
align: "center",
hideField: false,
edit:"text",
hide: $.isEmpty(sx_['teacherOpenCourseScheduleSessionTagEndTime']) ? false : sx_['teacherOpenCourseScheduleSessionTagEndTime'],
templet:EndTime,
event:"endTime"
},
{
field: 'operation_', title: '操作', align: "center", templet: function (d) {
var htm = '<a class="layui-table-link" lay-event="del" style="color: #FF5722;">删除</a>';
return htm;
hide:$.isEmpty(sx_['userId'])?false:sx_['userId'],
},*/
{
field: 'teacherOpenCourseScheduleSessionTagName',
title: '课次名称',
align: "center",
edit: "text",
hideField: false,
/* style:"border: 2px solid #F6F6F6;",*/
hide: $.isEmpty(sx_['teacherOpenCourseScheduleSessionTagName']) ? false : sx_['teacherOpenCourseScheduleSessionTagName'],
},
{
field: 'teacherOpenCourseScheduleSessionTagStartTime',
title: '开始时间',
align: "center",
hideField: false,
hide: $.isEmpty(sx_['teacherOpenCourseScheduleSessionTagStartTime']) ? false : sx_['teacherOpenCourseScheduleSessionTagStartTime'],
templet:StartTime,
event:"startTime"
},
{
field: 'teacherOpenCourseScheduleSessionTagEndTime',
title: '结束时间',
align: "center",
hideField: false,
hide: $.isEmpty(sx_['teacherOpenCourseScheduleSessionTagEndTime']) ? false : sx_['teacherOpenCourseScheduleSessionTagEndTime'],
templet:EndTime,
event:"endTime"
},
{
field: 'operation_', title: '操作', align: "center", templet: function (d) {
var htm = '<a class="layui-table-link" lay-event="del" style="color: #FF5722;">删除</a>';
return htm;
}
}
}
]]
});
]]
});
}
teacherOpenCourseScheduleSessionTagTable();
/*排课教室table*/
teacherOpenCourseScheduleSessionClassTable = function () {
treetable.render({
elem: '#teacherOpenCourseScheduleSessionClassTable',
height: Lib.getTableHeight(1),
cellMinWidth: 100,
method: 'post',
treeColIndex: 0, //树形图标显示在第几列
treeSpid: '0', //最上级的父级id
treeIdName: 'teacherOpenCourseScheduleSessionClassId', //id字段的名称
treePidName: 'teacherOpenCourseScheduleSessionClassParentId', //父级节点字段
treeDefaultClose: false, //是否默认折叠
treeLinkage: true, //父级展开时是否自动展开所有子级
data: classRoomTableData
/*,page : Lib.tablePage // 开启分页*/
/* ,toolbar: '#toolbar_teacherOpenCourseScheduleSessionClass' //自定义头部左侧工具栏
,defaultToolbar: ['filter', 'print', 'exports'] //头部右侧工具栏*/
, limit: 100
, cols: [[ // 表头
/*{
field : 'teacherOpenCourseScheduleSessionClassId',
title : '课程开课-排课位置ID',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseScheduleSessionClassId'])?false:sx_['teacherOpenCourseScheduleSessionClassId'],
teacherOpenCourseScheduleSessionClassTable = treetable.render({
elem: '#teacherOpenCourseScheduleSessionClassTable',
height: Lib.getTableHeight(1),
cellMinWidth: 100,
method:'post',
treeColIndex: 0, //树形图标显示在第几列
treeSpid: '0', //最上级的父级id
treeIdName: 'teacherOpenCourseScheduleSessionClassId', //id字段的名称
treePidName: 'teacherOpenCourseScheduleSessionClassParentId', //父级节点字段
treeDefaultClose: false, //是否默认折叠
treeLinkage: true, //父级展开时是否自动展开所有子级
data:classRoomTableData
/*,page : Lib.tablePage // 开启分页*/
/* ,toolbar: '#toolbar_teacherOpenCourseScheduleSessionClass' //自定义头部左侧工具栏
,defaultToolbar: ['filter', 'print', 'exports'] //头部右侧工具栏*/
, limit: 100
, cols: [[ // 表头
/*{
field : 'teacherOpenCourseScheduleSessionClassId',
title : '课程开课-排课位置ID',
align:"center",
hideField :false,
hide:$.isEmpty(sx_['teacherOpenCourseScheduleSessionClassId'])?false:sx_['teacherOpenCourseScheduleSessionClassId'],
width : 60,
},*/
{
field: 'teacherOpenCourseScheduleSessionClassName',
title: '教学楼 / 教室号',
align: "center",
hideField: false,
hide: $.isEmpty(sx_['teacherOpenCourseScheduleSessionClassName']) ? false : sx_['teacherOpenCourseScheduleSessionClassName'],
}
,{
field : 'operation_',title : '操作',align:"center", templet: function (d) {
console.log(d)
var htm;
if(d.teacherOpenCourseScheduleSessionClassParentId === '0'){
htm = '<a class="layui-table-link" lay-event="add">添加教室</a>'
}else {
htm = '';
width : 60,
},*/
{
field: 'teacherOpenCourseScheduleSessionClassName',
title: '教学楼 / 教室号',
align: "center",
hideField: false,
hide: $.isEmpty(sx_['teacherOpenCourseScheduleSessionClassName']) ? false : sx_['teacherOpenCourseScheduleSessionClassName'],
}
, {
field: 'operation_', title: '操作', align: "center", templet: function (d) {
var htm;
if (d.teacherOpenCourseScheduleSessionClassParentId === '0') {
htm = '<a class="layui-table-link" lay-event="add">添加教室</a>'
} else {
htm = '';
}
htm += '<a class="layui-table-link" lay-event="edit">编辑</a>';
htm += '<a class="layui-table-link" lay-event="del" style="color: #FF5722">删除</a>';
return htm;
}
htm += '<a class="layui-table-link" lay-event="edit">编辑</a>';
htm += '<a class="layui-table-link" lay-event="del" style="color: #FF5722">删除</a>';
return htm;
}
}
]]
]]
});
});
};
teacherOpenCourseScheduleSessionClassTable();
table.on('checkbox(teacherOpenCourseScheduleSessionTagTable)', function(obj){
var teacherOpenCourseScheduleSessionTag = obj.data;
if(obj.checked){
@ -189,9 +192,8 @@ layui.define([ 'form', 'laydate', 'table','treetable','element'], function(expor
}
});
table.on('edit(teacherOpenCourseScheduleSessionTagTable)', function(obj){ //注edit是固定事件名test是table原始容器的属性 lay-filter="对应的值"
console.log(obj.value); //得到修改后的值
console.log(obj.field); //当前编辑的字段名
console.log(obj.data); //所在行的所有相关数据
var id = obj.data.teacherOpenCourseScheduleSessionTagId;
submitTag(id,obj.data);
});
},
@ -213,38 +215,18 @@ layui.define([ 'form', 'laydate', 'table','treetable','element'], function(expor
"deep": null
};
classRoomTableData.push(newRow);
console.log(classRoomTableData)
treetable.reload('teacherOpenCourseScheduleSessionClassTable',{data: classRoomTableData});
teacherOpenCourseScheduleSessionClassTable();
},
add: function () {
/*var url = "/jlw/teacherOpenCourseScheduleSessionTag/add.do";
Common.openDlg(url,"课次管理>新增");*/
var data =table.cache["teacherOpenCourseScheduleSessionTagTable"];
let newRow= {
"teacherOpenCourseScheduleSessionTagName": "第"+$.toChinesNum(tagTableData.length+1)+"节",
"teacherOpenCourseScheduleSessionTagName": "",
"teacherOpenCourseScheduleSessionTagStartTime": "00:00",
"teacherOpenCourseScheduleSessionTagEndTime": "00:00",
};
tagTableData.push(newRow);
table.reload('teacherOpenCourseScheduleSessionTagTable',{
data: tagTableData,
done: function(res, curr, count){//curr当前页码
laydate.render({
elem: '#startTime'+newRow.teacherOpenCourseScheduleSessionTagName
, type: 'time'
, trigger: 'click'
, format: 'HH:mm'
, show:true
});
laydate.render({
elem: '#endTime'+newRow.teacherOpenCourseScheduleSessionTagName
, type: 'time'
, trigger: 'click'
, format: 'HH:mm'
, show:true
});
}
});
console.log(tagTableData)
submitTag('',newRow);//添加课次
}
};
//触发事件
@ -255,7 +237,7 @@ layui.define([ 'form', 'laydate', 'table','treetable','element'], function(expor
}, initTableTool: table.on('tool(teacherOpenCourseScheduleSessionTagTable)', function (obj) {
var data = obj.data;
var teacherOpenCourseScheduleSessionTagName = data.teacherOpenCourseScheduleSessionTagName;
var teacherOpenCourseScheduleSessionTagId = data.teacherOpenCourseScheduleSessionTagId;
if (obj.event === 'edit') {
var url = "/jlw/teacherOpenCourseScheduleSessionTag/add.do?teacherOpenCourseScheduleSessionTagId="+data.teacherOpenCourseScheduleSessionTagId;
Common.openDlg(url,"课次管理>"+data.teacherOpenCourseScheduleSessionTagId+">编辑");
@ -267,44 +249,68 @@ layui.define([ 'form', 'laydate', 'table','treetable','element'], function(expor
icon: ret.code == 0?1:2,
time: 1500 //2秒关闭如果不配置默认是3秒
},function (){
if($.isEmpty(data.teacherOpenCourseScheduleSessionTagId)){
tagTableData.splice($(obj.tr[0]).attr('data-index'),1);
layui.table.reload('teacherOpenCourseScheduleSessionTagTable',{data: tagTableData});
}
if(ret.code == 0){
Lib.tableRefresh();
parent.Lib.tableRefresh();
teacherOpenCourseScheduleSessionTagTable();
}
});
});
}else if(obj.event === 'startTime'){
var id = '#startTime' + (Number($(obj.tr[0]).attr('data-index')) + 1);
laydate.render({
elem: '#startTime'+teacherOpenCourseScheduleSessionTagName
elem: id
, type: 'time'
, trigger: 'click'
, format: 'HH:mm'
, show:true
, done: function (value, date, endDate) {
data.teacherOpenCourseScheduleSessionTagStartTime = value;
submitTag(teacherOpenCourseScheduleSessionTagId,data);//修改课次
}
});
}if(obj.event === 'endTime'){
}if(obj.event == 'endTime'){
var id = '#endTime' + (Number($(obj.tr[0]).attr('data-index')) + 1);
laydate.render({
elem: '#endTime'+teacherOpenCourseScheduleSessionTagName
elem: id
, type: 'time'
, trigger: 'click'
, format: 'HH:mm'
, min:data.teacherOpenCourseScheduleSessionTagStartTime
, show:true
, done: function (value, date, endDate) {
data.teacherOpenCourseScheduleSessionTagEndTime = value;
submitTag(teacherOpenCourseScheduleSessionTagId,data);//修改课次
}
});
}
})
};
function StartTime(obj){
var teacherOpenCourseScheduleSessionTagStartTime = obj.teacherOpenCourseScheduleSessionTagStartTime;
var id = "startTime"+obj.teacherOpenCourseScheduleSessionTagName;
return '<div id='+id+'>'+teacherOpenCourseScheduleSessionTagStartTime+'</div>'
var id = "startTime" + obj.LAY_INDEX;
return '<input type="text" class="layui-input" id=' + id + ' value=' + teacherOpenCourseScheduleSessionTagStartTime + '>';
}
function EndTime(obj){
var teacherOpenCourseScheduleSessionTagEndTime = obj.teacherOpenCourseScheduleSessionTagEndTime;
var id = "endTime"+obj.teacherOpenCourseScheduleSessionTagName;
return '<div id='+id+'>'+teacherOpenCourseScheduleSessionTagEndTime+'</div>'
var id = "endTime" + obj.LAY_INDEX;
return '<input type="text" class="layui-input" id=' + id + ' value=' + teacherOpenCourseScheduleSessionTagEndTime + '>';
}
function submitTag(id,param){
var url = "/jlw/teacherOpenCourseScheduleSessionTag/add.json";
if(!$.isEmpty(id)){
url = "/jlw/teacherOpenCourseScheduleSessionTag/edit.json"
}
var ret = Common.postAjax(url,param);
layer.msg(ret.code == 0 ? "成功!" : ret.msg, {
offset: ['50%'],
icon: ret.code == 0 ? 1 : 2,
time: 1500 //2秒关闭如果不配置默认是3秒
}, function () {
if (ret.code == 0) {
parent.Lib.tableRefresh();
teacherOpenCourseScheduleSessionTagTable();
}
});
};
exports('index',view);

Loading…
Cancel
Save