init
This commit is contained in:
166
apps/admin/view/default/js/comm.js
Normal file
166
apps/admin/view/default/js/comm.js
Normal file
@@ -0,0 +1,166 @@
|
||||
$(document).ready(function (e) {
|
||||
|
||||
//菜单高亮显示
|
||||
light_nav();
|
||||
|
||||
//选择全部
|
||||
$("#selectall").on("click", function () {
|
||||
$("#selectitem input:checkbox").prop("checked", true);
|
||||
|
||||
})
|
||||
|
||||
//反选
|
||||
$("#invselect").on("click", function () {
|
||||
$("#selectitem input:checkbox").each(function() {
|
||||
if($(this).prop("checked")){
|
||||
$(this).prop("checked",false);
|
||||
}else{
|
||||
$(this).prop("checked",true);
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
//勾选方式选择全部
|
||||
$("#checkall").on("click", function () {
|
||||
if($(this).prop("checked")){
|
||||
$(".checkitem:enabled").prop("checked", true);
|
||||
}else{
|
||||
$(".checkitem").prop("checked", false);
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
var i=0;
|
||||
$('.menu-ico').click(function(){
|
||||
if($(window).width()>750){
|
||||
if(i==0){//隐藏
|
||||
$(".layui-side").animate({width:'toggle'});
|
||||
$(".layui-body").animate({left:'0px'});
|
||||
$(".layui-footer").animate({left:'0px'});
|
||||
i=1
|
||||
}else{//显示
|
||||
$(".layui-side").animate({width:'toggle'});
|
||||
$(".layui-body").animate({left:'200px'});
|
||||
$(".layui-footer").animate({left:'200px'});
|
||||
i=0
|
||||
}
|
||||
}else{
|
||||
$(".layui-side").animate({width:'toggle'});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$(window).resize(function(){
|
||||
if($(window).width()>750){ //大屏幕根据情况判断
|
||||
if(i==0){ //等于0,说明处于显示状态,全屏以后保持显示出来
|
||||
$(".layui-layout-admin .layui-side").show();
|
||||
}else{ //等于1,说明处于隐藏状态,全屏以后保持隐藏出来
|
||||
$(".layui-layout-admin .layui-side").hide();
|
||||
}
|
||||
}
|
||||
|
||||
if($(window).width()<750){//小屏幕,直接隐藏
|
||||
$(".layui-layout-admin .layui-side").hide();
|
||||
}
|
||||
})
|
||||
|
||||
//避免tab翻页问题
|
||||
var hash = location.hash;
|
||||
if(hash){
|
||||
$('.page').find('a').each(function(index,element){
|
||||
$(this).attr('href', $(this).attr('href')+hash);
|
||||
});
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
//对菜单进行高亮显示
|
||||
function light_nav(){
|
||||
|
||||
//二级菜单标记当前栏目
|
||||
var url = $('#url').data('url').toLowerCase();
|
||||
var controller = $('#controller').data('controller').toLowerCase();
|
||||
var mcode = $('#mcode').data('mcode');
|
||||
var aobj= $('#nav .nav-item').find('a');
|
||||
var flag = false;
|
||||
|
||||
|
||||
//第一种情况,url完全一致
|
||||
aobj.each(function (index, element) {
|
||||
var aUrl = $(element).attr('href').toLowerCase();
|
||||
if (url==aUrl) {
|
||||
$(element).parent("dd").addClass("layui-this");
|
||||
$(element).parents('.layui-nav-item').addClass('layui-nav-itemed');
|
||||
flag = true;
|
||||
}
|
||||
if(flag) return false;
|
||||
});
|
||||
|
||||
url = url.replace('.html','');
|
||||
|
||||
//第二种情况,菜单的子页面,如翻页
|
||||
if(!flag){
|
||||
aobj.each(function (index, element) {
|
||||
var aUrl = $(element).attr('href').toLowerCase();
|
||||
aUrl = aUrl.replace('.html','');
|
||||
if (url.indexOf(aUrl)>-1) {
|
||||
$(element).parent("dd").addClass("layui-this");
|
||||
$(element).parents('.layui-nav-item').addClass('layui-nav-itemed');
|
||||
flag = true;
|
||||
}
|
||||
if(flag) return false;
|
||||
});
|
||||
}
|
||||
|
||||
//第三种情况,只匹配到模型,如模型栏目内容的修改操作页面
|
||||
if(!flag){
|
||||
aobj.each(function (index, element) {
|
||||
var aUrl = $(element).attr("href").toLowerCase();
|
||||
if (mcode && aUrl.indexOf('/mcode/'+mcode)>-1) {
|
||||
$(element).parent("dd").addClass("layui-this");
|
||||
$(element).parents('.layui-nav-item').addClass('layui-nav-itemed');
|
||||
flag = true;
|
||||
}
|
||||
if(flag) return false;
|
||||
});
|
||||
}
|
||||
|
||||
//第四种情况,只匹配到控制器,如增、改的操作页面
|
||||
if(!flag){
|
||||
aobj.each(function (index, element) {
|
||||
var aUrl = $(element).attr("href").toLowerCase();
|
||||
if (controller!='index' && aUrl.indexOf('/'+controller+'/')>-1) {
|
||||
$(element).parent("dd").addClass("layui-this");
|
||||
$(element).parents('.layui-nav-item').addClass('layui-nav-itemed');
|
||||
flag = true;
|
||||
}
|
||||
if(flag) return false;
|
||||
});
|
||||
}
|
||||
|
||||
//默认高亮
|
||||
if(!flag){
|
||||
$('#nav').find('.nav-item').eq(2).addClass('layui-nav-itemed');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//判断option是否存在,如果不存在就增加
|
||||
function addOptionValue(id,value,text) {
|
||||
if(!isExistOption(id,value)){$('#'+id).append("<option value="+value+">"+text+"</option>");}
|
||||
}
|
||||
|
||||
//判断option是否存在
|
||||
function isExistOption(id,value) {
|
||||
var isExist = false;
|
||||
var count = $('#'+id).find('option').length;
|
||||
for(var i=0;i<count;i++)
|
||||
{
|
||||
if($('#'+id).get(0).options[i].value == value)
|
||||
{
|
||||
isExist = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return isExist;
|
||||
}
|
||||
5
apps/admin/view/default/js/jquery-1.12.4.min.js
vendored
Normal file
5
apps/admin/view/default/js/jquery-1.12.4.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
apps/admin/view/default/js/jquery-1.12.4.min.map
Normal file
1
apps/admin/view/default/js/jquery-1.12.4.min.map
Normal file
File diff suppressed because one or more lines are too long
4
apps/admin/view/default/js/jquery.dragsort-0.5.2.min.js
vendored
Normal file
4
apps/admin/view/default/js/jquery.dragsort-0.5.2.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
631
apps/admin/view/default/js/jquery.treetable.js
Normal file
631
apps/admin/view/default/js/jquery.treetable.js
Normal file
@@ -0,0 +1,631 @@
|
||||
/*
|
||||
* jQuery treetable Plugin 3.2.0
|
||||
* http://ludo.cubicphuse.nl/jquery-treetable
|
||||
*
|
||||
* Copyright 2013, Ludo van den Boom
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
*/
|
||||
(function($) {
|
||||
var Node, Tree, methods;
|
||||
|
||||
Node = (function() {
|
||||
function Node(row, tree, settings) {
|
||||
var parentId;
|
||||
|
||||
this.row = row;
|
||||
this.tree = tree;
|
||||
this.settings = settings;
|
||||
|
||||
// TODO Ensure id/parentId is always a string (not int)
|
||||
this.id = this.row.data(this.settings.nodeIdAttr);
|
||||
|
||||
// TODO Move this to a setParentId function?
|
||||
parentId = this.row.data(this.settings.parentIdAttr);
|
||||
if (parentId != null && parentId !== "") {
|
||||
this.parentId = parentId;
|
||||
}
|
||||
|
||||
this.treeCell = $(this.row.children(this.settings.columnElType)[this.settings.column]);
|
||||
this.expander = $(this.settings.expanderTemplate);
|
||||
this.indenter = $(this.settings.indenterTemplate);
|
||||
this.children = [];
|
||||
this.initialized = false;
|
||||
this.treeCell.prepend(this.indenter);
|
||||
}
|
||||
|
||||
Node.prototype.addChild = function(child) {
|
||||
return this.children.push(child);
|
||||
};
|
||||
|
||||
Node.prototype.ancestors = function() {
|
||||
var ancestors, node;
|
||||
node = this;
|
||||
ancestors = [];
|
||||
while (node = node.parentNode()) {
|
||||
ancestors.push(node);
|
||||
}
|
||||
return ancestors;
|
||||
};
|
||||
|
||||
Node.prototype.collapse = function() {
|
||||
if (this.collapsed()) {
|
||||
return this;
|
||||
}
|
||||
|
||||
this.row.removeClass("expanded").addClass("collapsed");
|
||||
|
||||
this._hideChildren();
|
||||
this.expander.attr("title", this.settings.stringExpand);
|
||||
this.expander.removeClass("fa-caret-down").addClass("fa-caret-right");
|
||||
|
||||
if (this.initialized && this.settings.onNodeCollapse != null) {
|
||||
this.settings.onNodeCollapse.apply(this);
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
Node.prototype.collapsed = function() {
|
||||
return this.row.hasClass("collapsed");
|
||||
};
|
||||
|
||||
// TODO destroy: remove event handlers, expander, indenter, etc.
|
||||
|
||||
Node.prototype.expand = function() {
|
||||
if (this.expanded()) {
|
||||
return this;
|
||||
}
|
||||
|
||||
this.row.removeClass("collapsed").addClass("expanded");
|
||||
|
||||
if (this.initialized && this.settings.onNodeExpand != null) {
|
||||
this.settings.onNodeExpand.apply(this);
|
||||
}
|
||||
|
||||
if ($(this.row).is(":visible")) {
|
||||
this._showChildren();
|
||||
}
|
||||
|
||||
this.expander.attr("title", this.settings.stringCollapse);
|
||||
this.expander.removeClass("fa-caret-right").addClass("fa-caret-down");
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
Node.prototype.expanded = function() {
|
||||
return this.row.hasClass("expanded");
|
||||
};
|
||||
|
||||
Node.prototype.hide = function() {
|
||||
this._hideChildren();
|
||||
this.row.hide();
|
||||
return this;
|
||||
};
|
||||
|
||||
Node.prototype.isBranchNode = function() {
|
||||
if(this.children.length > 0 || this.row.data(this.settings.branchAttr) === true) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
Node.prototype.updateBranchLeafClass = function(){
|
||||
this.row.removeClass('branch');
|
||||
this.row.removeClass('leaf');
|
||||
this.row.addClass(this.isBranchNode() ? 'branch' : 'leaf');
|
||||
};
|
||||
|
||||
Node.prototype.level = function() {
|
||||
return this.ancestors().length;
|
||||
};
|
||||
|
||||
Node.prototype.parentNode = function() {
|
||||
if (this.parentId != null) {
|
||||
return this.tree[this.parentId];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
Node.prototype.removeChild = function(child) {
|
||||
var i = $.inArray(child, this.children);
|
||||
return this.children.splice(i, 1)
|
||||
};
|
||||
|
||||
Node.prototype.render = function() {
|
||||
var handler,
|
||||
settings = this.settings,
|
||||
target;
|
||||
|
||||
if (settings.expandable === true && this.isBranchNode()) {
|
||||
handler = function(e) {
|
||||
$(this).parents("table").treetable("node", $(this).parents("tr").data(settings.nodeIdAttr)).toggle();
|
||||
return e.preventDefault();
|
||||
};
|
||||
|
||||
this.indenter.html(this.expander);
|
||||
target = settings.clickableNodeNames === true ? this.treeCell : this.expander;
|
||||
|
||||
target.off("click.treetable").on("click.treetable", handler);
|
||||
target.off("keydown.treetable").on("keydown.treetable", function(e) {
|
||||
if (e.keyCode == 13) {
|
||||
handler.apply(this, [e]);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.indenter[0].style.paddingLeft = "" + (this.level() * settings.indent) + "px";
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
Node.prototype.reveal = function() {
|
||||
if (this.parentId != null) {
|
||||
this.parentNode().reveal();
|
||||
}
|
||||
return this.expand();
|
||||
};
|
||||
|
||||
Node.prototype.setParent = function(node) {
|
||||
if (this.parentId != null) {
|
||||
this.tree[this.parentId].removeChild(this);
|
||||
}
|
||||
this.parentId = node.id;
|
||||
this.row.data(this.settings.parentIdAttr, node.id);
|
||||
return node.addChild(this);
|
||||
};
|
||||
|
||||
Node.prototype.show = function() {
|
||||
if (!this.initialized) {
|
||||
this._initialize();
|
||||
}
|
||||
this.row.show();
|
||||
if (this.expanded()) {
|
||||
this._showChildren();
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
Node.prototype.toggle = function() {
|
||||
if (this.expanded()) {
|
||||
this.collapse();
|
||||
} else {
|
||||
this.expand();
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
Node.prototype._hideChildren = function() {
|
||||
var child, _i, _len, _ref, _results;
|
||||
_ref = this.children;
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
child = _ref[_i];
|
||||
_results.push(child.hide());
|
||||
}
|
||||
return _results;
|
||||
};
|
||||
|
||||
Node.prototype._initialize = function() {
|
||||
var settings = this.settings;
|
||||
|
||||
this.render();
|
||||
|
||||
if (settings.expandable === true && settings.initialState === "collapsed") {
|
||||
this.collapse();
|
||||
} else {
|
||||
this.expand();
|
||||
}
|
||||
|
||||
if (settings.onNodeInitialized != null) {
|
||||
settings.onNodeInitialized.apply(this);
|
||||
}
|
||||
|
||||
return this.initialized = true;
|
||||
};
|
||||
|
||||
Node.prototype._showChildren = function() {
|
||||
var child, _i, _len, _ref, _results;
|
||||
_ref = this.children;
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
child = _ref[_i];
|
||||
_results.push(child.show());
|
||||
}
|
||||
return _results;
|
||||
};
|
||||
|
||||
return Node;
|
||||
})();
|
||||
|
||||
Tree = (function() {
|
||||
function Tree(table, settings) {
|
||||
this.table = table;
|
||||
this.settings = settings;
|
||||
this.tree = {};
|
||||
|
||||
// Cache the nodes and roots in simple arrays for quick access/iteration
|
||||
this.nodes = [];
|
||||
this.roots = [];
|
||||
}
|
||||
|
||||
Tree.prototype.collapseAll = function() {
|
||||
var node, _i, _len, _ref, _results;
|
||||
_ref = this.nodes;
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
node = _ref[_i];
|
||||
_results.push(node.collapse());
|
||||
}
|
||||
return _results;
|
||||
};
|
||||
|
||||
Tree.prototype.expandAll = function() {
|
||||
var node, _i, _len, _ref, _results;
|
||||
_ref = this.nodes;
|
||||
_results = [];
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
node = _ref[_i];
|
||||
_results.push(node.expand());
|
||||
}
|
||||
return _results;
|
||||
};
|
||||
|
||||
Tree.prototype.findLastNode = function (node) {
|
||||
if (node.children.length > 0) {
|
||||
return this.findLastNode(node.children[node.children.length - 1]);
|
||||
} else {
|
||||
return node;
|
||||
}
|
||||
};
|
||||
|
||||
Tree.prototype.loadRows = function(rows) {
|
||||
var node, row, i;
|
||||
|
||||
if (rows != null) {
|
||||
for (i = 0; i < rows.length; i++) {
|
||||
row = $(rows[i]);
|
||||
|
||||
if (row.data(this.settings.nodeIdAttr) != null) {
|
||||
node = new Node(row, this.tree, this.settings);
|
||||
this.nodes.push(node);
|
||||
this.tree[node.id] = node;
|
||||
|
||||
if (node.parentId != null && this.tree[node.parentId]) {
|
||||
this.tree[node.parentId].addChild(node);
|
||||
} else {
|
||||
this.roots.push(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < this.nodes.length; i++) {
|
||||
node = this.nodes[i].updateBranchLeafClass();
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
Tree.prototype.move = function(node, destination) {
|
||||
// Conditions:
|
||||
// 1: +node+ should not be inserted as a child of +node+ itself.
|
||||
// 2: +destination+ should not be the same as +node+'s current parent (this
|
||||
// prevents +node+ from being moved to the same location where it already
|
||||
// is).
|
||||
// 3: +node+ should not be inserted in a location in a branch if this would
|
||||
// result in +node+ being an ancestor of itself.
|
||||
var nodeParent = node.parentNode();
|
||||
if (node !== destination && destination.id !== node.parentId && $.inArray(node, destination.ancestors()) === -1) {
|
||||
node.setParent(destination);
|
||||
this._moveRows(node, destination);
|
||||
|
||||
// Re-render parentNode if this is its first child node, and therefore
|
||||
// doesn't have the expander yet.
|
||||
if (node.parentNode().children.length === 1) {
|
||||
node.parentNode().render();
|
||||
}
|
||||
}
|
||||
|
||||
if(nodeParent){
|
||||
nodeParent.updateBranchLeafClass();
|
||||
}
|
||||
if(node.parentNode()){
|
||||
node.parentNode().updateBranchLeafClass();
|
||||
}
|
||||
node.updateBranchLeafClass();
|
||||
return this;
|
||||
};
|
||||
|
||||
Tree.prototype.removeNode = function(node) {
|
||||
// Recursively remove all descendants of +node+
|
||||
this.unloadBranch(node);
|
||||
|
||||
// Remove node from DOM (<tr>)
|
||||
node.row.remove();
|
||||
|
||||
// Remove node from parent children list
|
||||
if (node.parentId != null) {
|
||||
node.parentNode().removeChild(node);
|
||||
}
|
||||
|
||||
// Clean up Tree object (so Node objects are GC-ed)
|
||||
delete this.tree[node.id];
|
||||
this.nodes.splice($.inArray(node, this.nodes), 1);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
Tree.prototype.render = function() {
|
||||
var root, _i, _len, _ref;
|
||||
_ref = this.roots;
|
||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||
root = _ref[_i];
|
||||
|
||||
// Naming is confusing (show/render). I do not call render on node from
|
||||
// here.
|
||||
root.show();
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
Tree.prototype.sortBranch = function(node, sortFun) {
|
||||
// First sort internal array of children
|
||||
node.children.sort(sortFun);
|
||||
|
||||
// Next render rows in correct order on page
|
||||
this._sortChildRows(node);
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
Tree.prototype.unloadBranch = function(node) {
|
||||
// Use a copy of the children array to not have other functions interfere
|
||||
// with this function if they manipulate the children array
|
||||
// (eg removeNode).
|
||||
var children = node.children.slice(0),
|
||||
i;
|
||||
|
||||
for (i = 0; i < children.length; i++) {
|
||||
this.removeNode(children[i]);
|
||||
}
|
||||
|
||||
// Reset node's collection of children
|
||||
node.children = [];
|
||||
|
||||
node.updateBranchLeafClass();
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
Tree.prototype._moveRows = function(node, destination) {
|
||||
var children = node.children, i;
|
||||
|
||||
node.row.insertAfter(destination.row);
|
||||
node.render();
|
||||
|
||||
// Loop backwards through children to have them end up on UI in correct
|
||||
// order (see #112)
|
||||
for (i = children.length - 1; i >= 0; i--) {
|
||||
this._moveRows(children[i], node);
|
||||
}
|
||||
};
|
||||
|
||||
// Special _moveRows case, move children to itself to force sorting
|
||||
Tree.prototype._sortChildRows = function(parentNode) {
|
||||
return this._moveRows(parentNode, parentNode);
|
||||
};
|
||||
|
||||
return Tree;
|
||||
})();
|
||||
|
||||
// jQuery Plugin
|
||||
methods = {
|
||||
init: function(options, force) {
|
||||
var settings;
|
||||
|
||||
settings = $.extend({
|
||||
branchAttr: "ttBranch",
|
||||
clickableNodeNames: false,
|
||||
column: 0,
|
||||
columnElType: "td", // i.e. 'td', 'th' or 'td,th'
|
||||
expandable: false,
|
||||
expanderTemplate: "<a href='#' class='fa fa-caret-right'> </a>",
|
||||
indent: 19,
|
||||
indenterTemplate: "<span class='indenter'></span>",
|
||||
initialState: "collapsed",
|
||||
nodeIdAttr: "ttId", // maps to data-tt-id
|
||||
parentIdAttr: "ttParentId", // maps to data-tt-parent-id
|
||||
stringExpand: "Expand",
|
||||
stringCollapse: "Collapse",
|
||||
|
||||
// Events
|
||||
onInitialized: null,
|
||||
onNodeCollapse: null,
|
||||
onNodeExpand: null,
|
||||
onNodeInitialized: null
|
||||
}, options);
|
||||
|
||||
return this.each(function() {
|
||||
var el = $(this), tree;
|
||||
|
||||
if (force || el.data("treetable") === undefined) {
|
||||
tree = new Tree(this, settings);
|
||||
tree.loadRows(this.rows).render();
|
||||
|
||||
el.addClass("treetable").data("treetable", tree);
|
||||
|
||||
if (settings.onInitialized != null) {
|
||||
settings.onInitialized.apply(tree);
|
||||
}
|
||||
}
|
||||
|
||||
return el;
|
||||
});
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
return this.each(function() {
|
||||
return $(this).removeData("treetable").removeClass("treetable");
|
||||
});
|
||||
},
|
||||
|
||||
collapseAll: function() {
|
||||
this.data("treetable").collapseAll();
|
||||
return this;
|
||||
},
|
||||
|
||||
collapseNode: function(id) {
|
||||
var node = this.data("treetable").tree[id];
|
||||
|
||||
if (node) {
|
||||
node.collapse();
|
||||
} else {
|
||||
throw new Error("Unknown node '" + id + "'");
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
expandAll: function() {
|
||||
this.data("treetable").expandAll();
|
||||
return this;
|
||||
},
|
||||
|
||||
expandNode: function(id) {
|
||||
var node = this.data("treetable").tree[id];
|
||||
|
||||
if (node) {
|
||||
if (!node.initialized) {
|
||||
node._initialize();
|
||||
}
|
||||
|
||||
node.expand();
|
||||
} else {
|
||||
throw new Error("Unknown node '" + id + "'");
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
loadBranch: function(node, rows) {
|
||||
var settings = this.data("treetable").settings,
|
||||
tree = this.data("treetable").tree;
|
||||
|
||||
// TODO Switch to $.parseHTML
|
||||
rows = $(rows);
|
||||
|
||||
if (node == null) { // Inserting new root nodes
|
||||
this.append(rows);
|
||||
} else {
|
||||
var lastNode = this.data("treetable").findLastNode(node);
|
||||
rows.insertAfter(lastNode.row);
|
||||
}
|
||||
|
||||
this.data("treetable").loadRows(rows);
|
||||
|
||||
// Make sure nodes are properly initialized
|
||||
rows.filter("tr").each(function() {
|
||||
tree[$(this).data(settings.nodeIdAttr)].show();
|
||||
});
|
||||
|
||||
if (node != null) {
|
||||
// Re-render parent to ensure expander icon is shown (#79)
|
||||
node.render().expand();
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
move: function(nodeId, destinationId) {
|
||||
var destination, node;
|
||||
|
||||
node = this.data("treetable").tree[nodeId];
|
||||
destination = this.data("treetable").tree[destinationId];
|
||||
this.data("treetable").move(node, destination);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
node: function(id) {
|
||||
return this.data("treetable").tree[id];
|
||||
},
|
||||
|
||||
removeNode: function(id) {
|
||||
var node = this.data("treetable").tree[id];
|
||||
|
||||
if (node) {
|
||||
this.data("treetable").removeNode(node);
|
||||
} else {
|
||||
throw new Error("Unknown node '" + id + "'");
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
reveal: function(id) {
|
||||
var node = this.data("treetable").tree[id];
|
||||
|
||||
if (node) {
|
||||
node.reveal();
|
||||
} else {
|
||||
throw new Error("Unknown node '" + id + "'");
|
||||
}
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
sortBranch: function(node, columnOrFunction) {
|
||||
var settings = this.data("treetable").settings,
|
||||
prepValue,
|
||||
sortFun;
|
||||
|
||||
columnOrFunction = columnOrFunction || settings.column;
|
||||
sortFun = columnOrFunction;
|
||||
|
||||
if ($.isNumeric(columnOrFunction)) {
|
||||
sortFun = function(a, b) {
|
||||
var extractValue, valA, valB;
|
||||
|
||||
extractValue = function(node) {
|
||||
var val = node.row.find("td:eq(" + columnOrFunction + ")").text();
|
||||
// Ignore trailing/leading whitespace and use uppercase values for
|
||||
// case insensitive ordering
|
||||
return $.trim(val).toUpperCase();
|
||||
}
|
||||
|
||||
valA = extractValue(a);
|
||||
valB = extractValue(b);
|
||||
|
||||
if (valA < valB) return -1;
|
||||
if (valA > valB) return 1;
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
|
||||
this.data("treetable").sortBranch(node, sortFun);
|
||||
return this;
|
||||
},
|
||||
|
||||
unloadBranch: function(node) {
|
||||
this.data("treetable").unloadBranch(node);
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.treetable = function(method) {
|
||||
if (methods[method]) {
|
||||
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
||||
} else if (typeof method === 'object' || !method) {
|
||||
return methods.init.apply(this, arguments);
|
||||
} else {
|
||||
return $.error("Method " + method + " does not exist on jQuery.treetable");
|
||||
}
|
||||
};
|
||||
|
||||
// Expose classes to world
|
||||
this.TreeTable || (this.TreeTable = {});
|
||||
this.TreeTable.Node = Node;
|
||||
this.TreeTable.Tree = Tree;
|
||||
})(jQuery);
|
||||
1855
apps/admin/view/default/js/jscolor.js
Normal file
1855
apps/admin/view/default/js/jscolor.js
Normal file
File diff suppressed because it is too large
Load Diff
245
apps/admin/view/default/js/mylayui.js
Normal file
245
apps/admin/view/default/js/mylayui.js
Normal file
@@ -0,0 +1,245 @@
|
||||
layui.use(['element','upload','laydate','form'], function(){
|
||||
var element = layui.element;
|
||||
var upload = layui.upload;
|
||||
var laydate = layui.laydate;
|
||||
var form = layui.form;
|
||||
|
||||
//获取hash来切换选项卡,假设当前地址的hash为lay-id对应的值
|
||||
var layid = location.hash.replace(/^#tab=/, '');
|
||||
element.tabChange('tab', layid); //假设当前地址为:http://a.com#test1=222,那么选项卡会自动切换到“发送消息”这一项
|
||||
|
||||
//监听Tab切换,以改变地址hash值
|
||||
element.on('tab(tab)', function(){
|
||||
var clayid=this.getAttribute('lay-id');
|
||||
if(clayid){
|
||||
location.hash = 'tab='+ clayid;
|
||||
$('.page').find('a').each(function(index,element){//避免tab翻页问题
|
||||
var url=$(this).attr('href');
|
||||
if(url.indexOf('tab=')==-1){
|
||||
$(this).attr('href', url+'#tab='+ clayid);
|
||||
}else{
|
||||
$(this).attr('href', url.replace(/tab=[\w]+/, 'tab='+ clayid));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//跳转
|
||||
form.on('select(tourl)', function(data){
|
||||
window.location.href= data.value;
|
||||
});
|
||||
|
||||
|
||||
//提示
|
||||
$(".tips").on("mouseover",function(){
|
||||
layer.tips($(this).data('content'), this);
|
||||
})
|
||||
|
||||
//用户登录验证
|
||||
form.on('submit(login-submit)', function(data){
|
||||
var form = $("#dologin");
|
||||
var url = form.attr('action');
|
||||
var username = form.find("#username").val();
|
||||
var password = form.find("#password").val();
|
||||
var checkcode = form.find("#checkcode").val();
|
||||
var formcheck = form.find("#formcheck").val();
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: url,
|
||||
dataType: 'json',
|
||||
data: {
|
||||
username: username,
|
||||
password: password,
|
||||
checkcode: checkcode,
|
||||
formcheck: formcheck
|
||||
},
|
||||
success: function (response, status) {
|
||||
if (response.code == 1) {
|
||||
layer.msg("登录成功!", {icon: 1});
|
||||
window.location.href = response.data;
|
||||
} else {
|
||||
form.find("#checkcode").val("");
|
||||
$('#codeimg').click();//更新验证码
|
||||
layer.msg("登录失败:" + response.data, {icon: 5});
|
||||
}
|
||||
},
|
||||
error:function(xhr,status,error){
|
||||
layer.msg("登录请求发生错误!", {icon: 5});
|
||||
$('#note').html('登录请求发生错误,您可按照如下方式排查:<br>1、试着删除根目录下runtime目录,刷新页面重试;<br>2、检查系统会话文件存储目录是否具有写入权限;<br>3、检查服务器环境pathinfo及伪静态规则配置;<br>4、如果还不行那就到交流群出钱请人处理吧!');
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
|
||||
var sitedir=$('#sitedir').data('sitedir');
|
||||
var uploadurl = $("#preurl").data('preurl')+'/index/upload';
|
||||
|
||||
//执行单图片实例
|
||||
var uploadInst = upload.render({
|
||||
elem: '.upload' //绑定元素
|
||||
,url: uploadurl //上传接口
|
||||
,field: 'upload' //字段名称
|
||||
,multiple: false //多文件上传
|
||||
,accept: 'images' //接收文件类型 images(图片)、file(所有文件)、video(视频)、audio(音频)
|
||||
,acceptMime: 'image/*'
|
||||
,before: function(obj){
|
||||
//判断是否需要加水印
|
||||
if($(this.item).hasClass('watermark')){
|
||||
uploadInst.config.url=uploadurl+'/watermark/1';//改变URL
|
||||
}
|
||||
layer.load(); //上传loading
|
||||
}
|
||||
,done: function(res){
|
||||
var item = this.item;
|
||||
var des=$(item).data('des');
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
if(res.code==1){
|
||||
$('#'+des).val(res.data[0]);
|
||||
$('#'+des+'_box').html("<dl><dt><img src='"+sitedir+res.data[0]+"' data-url='"+res.data[0]+"' ></dt><dd>删除</dd></dl>");
|
||||
layer.msg('上传成功!');
|
||||
}else{
|
||||
layer.msg('上传失败:'+res.data);
|
||||
}
|
||||
}
|
||||
,error: function(){
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
layer.msg('上传发生错误!');
|
||||
}
|
||||
});
|
||||
|
||||
//执行多图片上传实例
|
||||
var files='';
|
||||
var html='';
|
||||
var uploadsInst = upload.render({
|
||||
elem: '.uploads' //绑定元素
|
||||
,url: uploadurl //上传接口
|
||||
,field: 'upload' //字段名称
|
||||
,multiple: true//多文件上传
|
||||
,accept: 'images' //接收文件类型 images(图片)、file(所有文件)、video(视频)、audio(音频)
|
||||
,acceptMime: 'image/*'
|
||||
,before: function(obj){
|
||||
//判断是否需要加水印
|
||||
if($(this.item).hasClass('watermark')){
|
||||
uploadsInst.config.url=uploadurl+'/watermark/1';//改变URL
|
||||
}
|
||||
layer.load(); //上传loading
|
||||
}
|
||||
,done: function(res){
|
||||
if(res.code==1){
|
||||
if(files){
|
||||
files+=','+res.data[0];
|
||||
}else{
|
||||
files+=res.data[0];
|
||||
}
|
||||
html += "<dl><dt><img src='"+sitedir+res.data[0]+"' data-url='"+res.data[0]+"'></dt><dd>删除</dd>" +
|
||||
"<dt><input type='text' name='picstitle[]' style='width:95%' /></dt>"+
|
||||
"</dl>";
|
||||
}else{
|
||||
layer.msg('有文件上传失败:'+res.data);
|
||||
}
|
||||
}
|
||||
,allDone: function(obj){
|
||||
var item = this.item;
|
||||
var des=$(item).data('des');
|
||||
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
if(files!=''){
|
||||
if($('#'+des).val()){
|
||||
$('#'+des).val($('#'+des).val()+','+files);
|
||||
}else{
|
||||
$('#'+des).val(files);
|
||||
}
|
||||
$('#'+des+'_box').append(html);
|
||||
layer.msg('成功上传'+obj.successful+'个文件!');
|
||||
files='';
|
||||
html='';
|
||||
}else{
|
||||
layer.msg('全部上传失败!');
|
||||
}
|
||||
|
||||
}
|
||||
,error: function(){
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
layer.msg('上传发生错误!');
|
||||
}
|
||||
});
|
||||
|
||||
//图片页面删除功能
|
||||
$('.pic').on("click",'dl dd',function(){
|
||||
var id=$(this).parents('.pic').attr('id');
|
||||
var url=$(this).siblings('dt').find('img').data('url');
|
||||
var input=$('#'+id.replace('_box',''));
|
||||
var value = input.val();
|
||||
value = value.replace(url,'');
|
||||
value = value.replace(/^,/, '');
|
||||
value = value.replace(/,$/, '');
|
||||
value = value.replace(/,,/, ',');
|
||||
input.val(value);
|
||||
$(this).parents('dl').remove();
|
||||
});
|
||||
|
||||
//执行附件上传实例
|
||||
var uploadFileInst = upload.render({
|
||||
elem: '.file' //绑定元素
|
||||
,url: uploadurl //上传接口
|
||||
,field: 'upload' //字段名称
|
||||
,multiple: false //多文件上传
|
||||
,accept: 'file' //接收文件类型 images(图片)、file(所有文件)、video(视频)、audio(音频)
|
||||
,before: function(obj){
|
||||
layer.load(); //上传loading
|
||||
}
|
||||
,done: function(res){
|
||||
var item = this.item;
|
||||
var des=$(item).data('des');
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
if(res.code==1){
|
||||
$('#'+des).val(res.data[0]);
|
||||
layer.msg('上传成功!');
|
||||
}else{
|
||||
layer.msg('上传失败:'+res.data);
|
||||
}
|
||||
}
|
||||
,error: function(){
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
layer.msg('上传发生错误!');
|
||||
}
|
||||
});
|
||||
|
||||
//使用多日期控件
|
||||
useLayDateMultiple('year','year');
|
||||
useLayDateMultiple('month','month');
|
||||
useLayDateMultiple('time','time');
|
||||
useLayDateMultiple('date','date');
|
||||
useLayDateMultiple('datetime','datetime');
|
||||
|
||||
//选择模型切换模板
|
||||
form.on('select(model)', function(data){
|
||||
var elem = data.elem;
|
||||
var type = $(elem).find("option:selected").data('type');
|
||||
var listtpl = $(elem).find("option:selected").data('listtpl');
|
||||
var contenttpl = $(elem).find("option:selected").data('contenttpl');
|
||||
|
||||
$(elem).parents('form').find("#type").val(type);
|
||||
addOptionValue("listtpl",listtpl,listtpl);
|
||||
addOptionValue("contenttpl",contenttpl,contenttpl);
|
||||
$(elem).parents('form').find("#listtpl").val(listtpl);
|
||||
$(elem).parents('form').find("#contenttpl").val(contenttpl);
|
||||
form.render(null, 'sort');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
//日期控件函数
|
||||
function useLayDateMultiple(cls,type) {
|
||||
layui.use('laydate', function() {
|
||||
var laydate = layui.laydate;
|
||||
lay('.' + cls).each(function() {
|
||||
laydate.render({
|
||||
elem : this,
|
||||
type : type,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user