提交 7485230a 编写于 作者: Skyeye云's avatar Skyeye云

集成ztree

上级 aaab9cbe
......@@ -21,4 +21,6 @@ public interface SysEveMenuDao {
public void deleteSysMenuMationById(Map<String, Object> map) throws Exception;
public List<Map<String, Object>> queryTreeSysMenuMationBySimpleLevel(Map<String, Object> map) throws Exception;
}
......@@ -17,4 +17,6 @@ public interface SysEveMenuService {
public void deleteSysMenuMationById(InputObject inputObject, OutputObject outputObject) throws Exception;
public void queryTreeSysMenuMationBySimpleLevel(InputObject inputObject, OutputObject outputObject) throws Exception;
}
......@@ -161,5 +161,25 @@ public class SysEveMenuServiceImpl implements SysEveMenuService{
//删除自身菜单
sysEveMenuDao.deleteSysMenuMationById(map);
}
/**
*
* @Title: queryTreeSysMenuMationBySimpleLevel
* @Description: 查看同级菜单
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@Override
public void queryTreeSysMenuMationBySimpleLevel(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> map = inputObject.getParams();
List<Map<String, Object>> beans = sysEveMenuDao.queryTreeSysMenuMationBySimpleLevel(map);
if(!beans.isEmpty()){
outputObject.setBeans(beans);
outputObject.settotal(beans.size());
}
}
}
......@@ -111,4 +111,20 @@ public class SysEveMenuController {
sysEveMenuService.deleteSysMenuMationById(inputObject, outputObject);
}
/**
*
* @Title: queryTreeSysMenuMationBySimpleLevel
* @Description: 异步加载树查看同级菜单
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping("/post/SysEveMenuController/queryTreeSysMenuMationBySimpleLevel")
@ResponseBody
public void queryTreeSysMenuMationBySimpleLevel(InputObject inputObject, OutputObject outputObject) throws Exception{
sysEveMenuService.queryTreeSysMenuMationBySimpleLevel(inputObject, outputObject);
}
}
......@@ -121,4 +121,21 @@
id = #{id}
</delete>
<select id="queryTreeSysMenuMationBySimpleLevel" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
a.id,
a.menu_name name,
a.menu_parent_id pId
FROM
sys_eve_menu a
<if test="parentId != &quot;0&quot;">
,sys_eve_menu b
</if>
WHERE INSTR(CONCAT(',', a.menu_parent_id, ','), CONCAT(',', #{parentId}, ','))
<if test="parentId != &quot;0&quot;">
AND b.id = #{parentId}
AND (b.menu_level + 1) = a.menu_level
</if>
</select>
</mapper>
\ No newline at end of file
......@@ -13,7 +13,7 @@
a.user_sex sexName,
a.user_lock userLock,
(SELECT c.user_name FROM sys_eve_user c WHERE a.creater = c.id) createName,
(SELECT group_concat(distinct b.name) FROM sys_eve_role b WHERE INSTR(CONCAT(',', a.role_id, ','), CONCAT(',', b.id, ','))) roleName,
(SELECT group_concat(distinct b.role_name) FROM sys_eve_role b WHERE INSTR(CONCAT(',', a.role_id, ','), CONCAT(',', b.id, ','))) roleName,
CONVERT(a.create_time, char) createTime
FROM
sys_eve_user a
......
......@@ -57,5 +57,8 @@
<url id="sys011" path="/post/SysEveMenuController/deleteSysMenuMationById" val="删除菜单信息">
<property id="rowId" name="id" ref="required" var="菜单ID" />
</url>
<url id="sys012" path="/post/SysEveMenuController/queryTreeSysMenuMationBySimpleLevel" val="异步加载树查看同级菜单">
<property id="parentId" name="parentId" ref="required" var="父菜单ID" />
</url>
</controller>
\ No newline at end of file
@charset "UTF-8";/*!
* jQuery contextMenu - Plugin for simple contextMenu handling
*
* Version: v2.6.3
*
* Authors: Björn Brala (SWIS.nl), Rodney Rehm, Addy Osmani (patches for FF)
* Web: http://swisnl.github.io/jQuery-contextMenu/
*
* Copyright (c) 2011-2017 SWIS BV and contributors
*
* Licensed under
* MIT License http://www.opensource.org/licenses/mit-license
*
* Date: 2017-10-30T19:03:13.936Z
*/@-webkit-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@-o-keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@keyframes cm-spin{0%{-webkit-transform:translateY(-50%) rotate(0);-o-transform:translateY(-50%) rotate(0);transform:translateY(-50%) rotate(0)}100%{-webkit-transform:translateY(-50%) rotate(359deg);-o-transform:translateY(-50%) rotate(359deg);transform:translateY(-50%) rotate(359deg)}}@font-face{font-family:context-menu-icons;font-style:normal;font-weight:400;src:url(font/context-menu-icons.eot?2wp27);src:url(font/context-menu-icons.eot?2wp27#iefix) format("embedded-opentype"),url(font/context-menu-icons.woff2?2wp27) format("woff2"),url(font/context-menu-icons.woff?2wp27) format("woff"),url(font/context-menu-icons.ttf?2wp27) format("truetype")}.context-menu-icon-add:before{content:"\EA01"}.context-menu-icon-copy:before{content:"\EA02"}.context-menu-icon-cut:before{content:"\EA03"}.context-menu-icon-delete:before{content:"\EA04"}.context-menu-icon-edit:before{content:"\EA05"}.context-menu-icon-loading:before{content:"\EA06"}.context-menu-icon-paste:before{content:"\EA07"}.context-menu-icon-quit:before{content:"\EA08"}.context-menu-icon::before{position:absolute;top:50%;left:0;width:2em;font-family:context-menu-icons;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-disabled::before{color:#bbb}.context-menu-icon.context-menu-icon-loading:before{-webkit-animation:cm-spin 2s infinite;-o-animation:cm-spin 2s infinite;animation:cm-spin 2s infinite}.context-menu-icon.context-menu-icon--fa{display:list-item;font-family:inherit}.context-menu-icon.context-menu-icon--fa::before{position:absolute;top:50%;left:0;width:2em;font-family:FontAwesome;font-size:1em;font-style:normal;font-weight:400;line-height:1;color:#2980b9;text-align:center;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.context-menu-icon.context-menu-icon--fa.context-menu-hover:before{color:#fff}.context-menu-icon.context-menu-icon--fa.context-menu-disabled::before{color:#bbb}.context-menu-list{position:absolute;display:inline-block;min-width:13em;max-width:26em;padding:.25em 0;margin:.3em;font-family:inherit;font-size:inherit;list-style-type:none;background:#fff;border:1px solid #bebebe;border-radius:.2em;-webkit-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5)}.context-menu-item{position:relative;padding:.2em 2em;color:#2f2f2f;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.context-menu-separator{padding:0;margin:.35em 0;border-bottom:1px solid #e6e6e6}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.context-menu-hover{color:#fff;cursor:pointer;background-color:#2980b9}.context-menu-item.context-menu-disabled{color:#bbb;cursor:default;background-color:#fff}.context-menu-input.context-menu-hover{color:#2f2f2f;cursor:default}.context-menu-submenu:after{position:absolute;top:50%;right:.5em;z-index:1;width:0;height:0;content:'';border-color:transparent transparent transparent #2f2f2f;border-style:solid;border-width:.25em 0 .25em .25em;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);-o-transform:translateY(-50%);transform:translateY(-50%)}.context-menu-item.context-menu-input{padding:.3em .6em}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{position:relative;top:.12em;margin-right:.4em}.context-menu-input>label{margin:0}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:7em}.context-menu-item>.context-menu-list{top:.3em;right:-.3em;display:none}.context-menu-item.context-menu-visible>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline}
/*# sourceMappingURL=jquery.contextMenu.min.css.map */
/*-------------------------------------
zTree Style using fontawesome instead of images
version: 1.1
author: Mike King
email: mikkelking @ hotmail . com
website: http://code.google.com/p/jquerytree/
-------------------------------------*/
/* Definitions ----------------------*/
/* End of Definitions ---------------*/
/* Imports -------------------------*/
/* End of Imports ------------------*/
.ztree * {
padding: 0;
margin: 0;
font-size: 12px;
font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif;
background-color: #af0000;
}
.ztree {
margin: 0;
padding: 5px;
color: #ffffff;
background-color: #af0000;
}
.ztree li {
padding: 0;
margin: 0;
list-style: none;
line-height: 17px;
text-align: left;
white-space: nowrap;
outline: 0;
}
.ztree li ul {
margin: 0px;
padding: 0 0 0 18px;
}
.ztree li a {
padding-right: 3px;
margin: 0;
cursor: pointer;
height: 17px;
color: #ffffff;
background-color: transparent;
text-decoration: none;
vertical-align: top;
display: inline-block;
}
.ztree li a input.rename {
height: 14px;
width: 80px;
padding: 0;
margin: 0;
color: #af0000;
background-color: #ffffff;
font-size: 12px;
border: 1px #585956 solid;
*border: 0px;
}
.ztree li a:hover {
text-decoration: underline;
}
.ztree li a.curSelectedNode {
padding-top: 0px;
background-color: #af4040;
color: #ffff00;
height: 17px;
opacity: 0.8;
}
.ztree li a.curSelectedNode_Edit {
padding-top: 0px;
background-color: transparent;
color: #ffff00;
height: 17px;
border: 1px #666 solid;
opacity: 0.8;
}
.ztree li a.tmpTargetNode_inner {
padding-top: 0px;
background-color: #aaa;
color: #ffff00;
height: 17px;
border: 1px #666 solid;
opacity: 0.8;
filter: alpha(opacity=80);
}
.ztree li span {
line-height: 17px;
margin-right: 2px;
background-color: transparent;
}
.ztree li span.button {
line-height: 0;
margin: 0;
padding: 0;
width: 15px;
height: 17px;
display: inline-block;
vertical-align: top;
border: 0px solid;
cursor: pointer;
outline: none;
background-color: transparent;
background-repeat: no-repeat;
background-attachment: scroll;
}
.ztree li span.button::before {
color: #ffffff;
font-family: FontAwesome;
padding-top: 10px;
}
.ztree li span.button.chk {
margin: 0px;
cursor: auto;
width: 12px;
display: inline-block;
padding-top: 10px;
padding-left: 2px;
}
.ztree li span.button.chk.checkbox_false_full::before {
content: "\f096";
}
.ztree li span.button.chk.checkbox_false_full_focus::before {
content: "\f096";
color: #ffff00;
}
.ztree li span.button.chk.checkbox_false_part::before {
content: "\f096";
color: #aaaaaa;
}
.ztree li span.button.chk.checkbox_false_part_focus::before {
content: "\f096";
color: #cad96c;
}
.ztree li span.button.chk.checkbox_false_disable::before {
content: "\f096";
color: #808080;
}
.ztree li span.button.chk.checkbox_true_full::before {
content: "\f046";
}
.ztree li span.button.chk.checkbox_true_full_focus::before {
content: "\f046";
}
.ztree li span.button.chk.checkbox_true_part::before {
content: "\f14a";
}
.ztree li span.button.chk.checkbox_true_part_focus::before {
content: "\f14a";
color: #ffff00;
}
.ztree li span.button.chk.checkbox_true_full_focus::before {
content: "\f046";
color: #ffff00;
}
.ztree li span.button.chk.checkbox_true_part::before {
content: "\f046";
color: #aaaaaa;
}
.ztree li span.button.chk.checkbox_true_part_focus::before {
content: "\f046";
color: #cad96c;
}
.ztree li span.button.chk.checkbox_true_disable::before {
content: "\f046";
color: #808080;
}
.ztree li span.button.chk.radio_false_full::before {
content: "\f10c";
}
.ztree li span.button.chk.radio_false_full_focus::before {
content: "\f10c";
color: #ffff00;
}
.ztree li span.button.chk.radio_false_part::before {
content: "\f10c";
color: #aaaaaa;
}
.ztree li span.button.chk.radio_false_part_focus::before {
content: "\f10c";
color: #ffff00;
}
.ztree li span.button.chk.radio_false_disable::before {
content: "\f1db";
color: #808080;
}
.ztree li span.button.chk.radio_true_full::before {
content: "\f192";
}
.ztree li span.button.chk.radio_true_full_focus::before {
content: "\f192";
color: #ffff00;
}
.ztree li span.button.chk.radio_true_part::before {
content: "\f192";
color: #aaaaaa;
}
.ztree li span.button.chk.radio_true_part_focus::before {
content: "\f192";
color: #aaaaaa;
}
.ztree li span.button.chk.radio_true_disable::before {
content: "\f1db";
color: #808080;
}
.ztree li span.button.switch {
width: 15px;
height: 17px;
}
.ztree li span.button.root_open::before {
content: "\f078";
padding-top: 10px;
padding-left: 2px;
display: inline-block;
}
.ztree li span.button.root_close::before {
content: "\f115";
padding-top: 10px;
padding-left: 2px;
display: inline-block;
}
.ztree li span.button.roots_open::before {
content: "\f078";
padding-top: 10px;
padding-left: 2px;
display: inline-block;
}
.ztree li span.button.roots_close::before {
content: "\f054";
padding-top: 10px;
padding-left: 2px;
display: inline-block;
}
.ztree li span.button.center_open::before {
content: "\f078";
padding-top: 10px;
padding-left: 2px;
display: inline-block;
}
.ztree li span.button.center_close::before {
content: "\f054";
padding-top: 10px;
padding-left: 2px;
display: inline-block;
}
.ztree li span.button.bottom_open::before {
content: "\f078";
padding-top: 10px;
padding-left: 2px;
display: inline-block;
}
.ztree li span.button.bottom_close::before {
content: "\f054";
padding-top: 10px;
padding-left: 2px;
display: inline-block;
}
.ztree li span.button.root_docu {
background: none;
}
.ztree li span.button.roots_docu::before {
content: "\f022";
padding-left: 2px;
display: inline-block;
color: #ffffff;
}
.ztree li span.button.center_docu::before {
padding-top: 10px;
padding-left: 2px;
display: inline-block;
color: #ffffff;
}
.ztree li span.button.bottom_docu::before {
padding-top: 10px;
padding-left: 2px;
display: inline-block;
color: #ffffff;
}
.ztree li span.button.noline_docu {
background: none;
}
.ztree li span.button.ico_open::before {
content: "\f115";
font-family: FontAwesome;
padding-top: 10px;
padding-left: 2px;
display: inline-block;
color: #ffffff;
}
.ztree li span.button.ico_close::before {
content: "\f114";
font-family: FontAwesome;
padding-top: 10px;
padding-left: 2px;
display: inline-block;
color: #ffffff;
}
.ztree li span.button.ico_docu::before {
content: "\f022";
font-family: FontAwesome;
padding-top: 10px;
padding-left: 2px;
display: inline-block;
color: #ffffff;
}
.ztree li span.button.edit {
margin-left: 4px;
margin-right: -1px;
vertical-align: top;
*vertical-align: middle;
padding-top: 10px;
}
.ztree li span.button.edit::before {
content: "\f044";
font-family: FontAwesome;
}
.ztree li span.button.remove {
margin-left: 4px;
margin-right: -1px;
vertical-align: top;
*vertical-align: middle;
padding-top: 10px;
}
.ztree li span.button.remove::before {
content: "\f1f8";
font-family: FontAwesome;
}
.ztree li span.button.add {
margin-left: 4px;
margin-right: -1px;
vertical-align: top;
*vertical-align: middle;
padding-top: 10px;
}
.ztree li span.button.add::before {
content: "\f067";
font-family: FontAwesome;
}
.ztree li span.button.ico_loading {
margin-right: 2px;
background: url(./img/loading.gif) no-repeat scroll 0 0 transparent;
vertical-align: top;
*vertical-align: middle;
}
ul.tmpTargetzTree {
background-color: #FFE6B0;
opacity: 0.8;
filter: alpha(opacity=80);
}
span.tmpzTreeMove_arrow {
width: 16px;
height: 17px;
display: inline-block;
padding: 0;
margin: 2px 0 0 1px;
border: 0 none;
position: absolute;
background-color: transparent;
background-attachment: scroll;
}
span.tmpzTreeMove_arrow::before {
content: "\f04b";
font-family: FontAwesome;
color: #ffff00;
}
ul.ztree.zTreeDragUL {
margin: 0;
padding: 0;
position: absolute;
width: auto;
height: auto;
overflow: hidden;
background-color: #cfcfcf;
border: 1px #ffff00 dotted;
opacity: 0.8;
filter: alpha(opacity=80);
}
.ztreeMask {
z-index: 10000;
background-color: #cfcfcf;
opacity: 0.0;
filter: alpha(opacity=0);
position: absolute;
}
/*-------------------------------------
zTree Style using fontawesome instead of images
version: 1.1
author: Mike King
email: mikkelking @ hotmail . com
website: http://code.google.com/p/jquerytree/
-------------------------------------*/
/* Definitions ----------------------*/
@font-size: 12px;
// Regular icon and text color is white, which suits any medium -> dark background
@color-normal: white;
// Background color
@color-bg: #af0000;
// Highlight color
@color-highlight: yellow;
// Partially selected (checkboxes, radio buttons)
@color-partial: #aaaaaa;
// Partially selected and focused (checkboxes, radio buttons)
@color-partfocus: #cad96c;
// Disabled altogether
@color-disabled: #808080;
// Editing color
@color-edit: yellow;
@w: 15px;
@h: 17px;
@pad-left: 2px;
@pad-top: 10px;
/* End of Definitions ---------------*/
/* Imports -------------------------*/
@import "fa.less";
/* End of Imports ------------------*/
.ztree * {padding:0; margin:0; font-size:@font-size; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif; background-color: @color-bg;}
.ztree {
margin:0; padding:5px; color:@color-normal; background-color: @color-bg;
li {
padding:0; margin:0; list-style:none; line-height:17px; text-align:left; white-space:nowrap; outline:0;
ul {
margin: 0px; padding:0 0 0 18px;
}
ul.line { }
a {padding-right:3px; margin:0; cursor:pointer; height:@h; color:@color-normal; background-color: transparent;
text-decoration:none; vertical-align:top; display: inline-block;
input.rename {height:14px; width:80px; padding:0; margin:0;
color: @color-bg; background-color: @color-normal;
font-size:@font-size; border:1px #585956 solid; *border:0px}
}
a:hover {text-decoration:underline}
a.curSelectedNode {padding-top:0px; background-color:#af4040; color:@color-highlight; height:@h; opacity:0.8;}
a.curSelectedNode_Edit {padding-top:0px; background-color:transparent; color:@color-highlight; height:@h; border:1px #666 solid; opacity:0.8;}
a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:@color-highlight; height:@h; border:1px #666 solid;
opacity:0.8; filter:alpha(opacity=80)}
a.tmpTargetNode_prev {}
a.tmpTargetNode_next {}
span {line-height:@h; margin-right:2px; background-color:transparent;}
span.button {line-height:0; margin:0; padding: 0; width:@w; height:@h; display: inline-block; vertical-align:top;
border:0px solid; cursor: pointer;outline:none;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
&::before{color: @color-normal; font-family: FontAwesome; padding-top:@pad-top;}
&.chk { margin:0px; cursor: auto; width: 12px;
display: inline-block;padding-top:@pad-top;padding-left:@pad-left;
&.checkbox_false_full::before {content: @fa-square-o;}
&.checkbox_false_full_focus::before {content: @fa-square-o; color:@color-highlight;}
&.checkbox_false_part::before {content: @fa-square-o;color: @color-partial;}
&.checkbox_false_part_focus::before {content: @fa-square-o; color:@color-partfocus;}
&.checkbox_false_disable::before {content: @fa-square-o; color:@color-disabled;}
&.checkbox_true_full::before {content: @fa-check-square-o;}
&.checkbox_true_full_focus::before {content: @fa-check-square-o;}
&.checkbox_true_part::before {content: @fa-check-square;}
&.checkbox_true_part_focus::before {content: @fa-check-square; color: @color-highlight}
&.checkbox_true_full_focus::before {content: @fa-check-square-o; color: @color-highlight}
&.checkbox_true_part::before {content: @fa-check-square-o;color: @color-partial}
&.checkbox_true_part_focus::before {content: @fa-check-square-o;color: @color-partfocus;}
&.checkbox_true_disable::before {content: @fa-check-square-o;color: @color-disabled}
&.radio_false_full::before {content: @fa-circle-o;}
&.radio_false_full_focus::before {content: @fa-circle-o;color: @color-highlight}
&.radio_false_part::before {content: @fa-circle-o;color: @color-partial}
&.radio_false_part_focus::before {content: @fa-circle-o;color: @color-highlight}
&.radio_false_disable::before {content: @fa-circle-thin;color: @color-disabled}
&.radio_true_full::before {content: @fa-dot-circle-o;}
&.radio_true_full_focus::before {content: @fa-dot-circle-o;color: @color-highlight}
&.radio_true_part::before {content: @fa-dot-circle-o;color: @color-partial}
&.radio_true_part_focus::before {content: @fa-dot-circle-o;color: @color-partial;}
&.radio_true_disable::before {content: @fa-circle-thin;color: @color-disabled}
}
&.switch {width:@w; height:@h}
&.root_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
&.root_close::before{content: @fa-folder-open-o;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
&.roots_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
&.roots_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
&.center_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
&.center_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
&.bottom_open::before{content: @fa-chevron-down;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
&.bottom_close::before{content: @fa-chevron-right;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;}
&.noline_open{}
&.noline_close{}
&.root_docu{ background:none;}
&.roots_docu::before{content: @fa-list-alt;padding-left:@pad-left;display: inline-block;color:@color-normal;}
&.center_docu::before{padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
&.bottom_docu::before{padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
&.noline_docu{ background:none;}
&.ico_open::before {content: @fa-folder-open-o;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
&.ico_close::before {content: @fa-folder-o;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
&.ico_docu::before{content: @fa-list-alt;font-family: FontAwesome;padding-top:@pad-top;padding-left:@pad-left;display: inline-block;color:@color-normal;}
&.edit {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;}
&.edit::before{content: @fa-pencil-square-o;font-family: FontAwesome;}
&.remove {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;}
&.remove::before{content: @fa-trash;font-family: FontAwesome;}
&.add {margin-left:4px; margin-right: -1px; vertical-align:top; *vertical-align:middle;padding-top:@pad-top;}
&.add::before{content: @fa-plus;font-family: FontAwesome;}
&.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
}
}
}
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
// this is the arrow that moves
span.tmpzTreeMove_arrow{width:16px; height:@h; display: inline-block;
padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
background-color:transparent; background-attachment: scroll;
}
span.tmpzTreeMove_arrow::before{content: @fa-play;font-family: FontAwesome;color: @color-highlight;
}
// outline
ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden;
background-color:#cfcfcf; border:1px @color-highlight dotted; opacity:0.8; filter:alpha(opacity=80)}
.ztreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
@fa-glass: "\f000";
@fa-music: "\f001";
@fa-search: "\f002";
@fa-envelope-o: "\f003";
@fa-heart: "\f004";
@fa-star: "\f005";
@fa-star-o: "\f006";
@fa-user: "\f007";
@fa-film: "\f008";
@fa-th-large: "\f009";
@fa-th: "\f00a";
@fa-th-list: "\f00b";
@fa-check: "\f00c";
@fa-times: "\f00d";
@fa-search-plus: "\f00e";
@fa-search-minus: "\f010";
@fa-power-off: "\f011";
@fa-signal: "\f012";
@fa-cog: "\f013";
@fa-trash-o: "\f014";
@fa-home: "\f015";
@fa-file-o: "\f016";
@fa-clock-o: "\f017";
@fa-road: "\f018";
@fa-download: "\f019";
@fa-arrow-circle-o-down: "\f01a";
@fa-arrow-circle-o-up: "\f01b";
@fa-inbox: "\f01c";
@fa-play-circle-o: "\f01d";
@fa-repeat: "\f01e";
@fa-refresh: "\f021";
@fa-list-alt: "\f022";
@fa-lock: "\f023";
@fa-flag: "\f024";
@fa-headphones: "\f025";
@fa-volume-off: "\f026";
@fa-volume-down: "\f027";
@fa-volume-up: "\f028";
@fa-qrcode: "\f029";
@fa-barcode: "\f02a";
@fa-tag: "\f02b";
@fa-tags: "\f02c";
@fa-book: "\f02d";
@fa-bookmark: "\f02e";
@fa-print: "\f02f";
@fa-camera: "\f030";
@fa-font: "\f031";
@fa-bold: "\f032";
@fa-italic: "\f033";
@fa-text-height: "\f034";
@fa-text-width: "\f035";
@fa-align-left: "\f036";
@fa-align-center: "\f037";
@fa-align-right: "\f038";
@fa-align-justify: "\f039";
@fa-list: "\f03a";
@fa-outdent: "\f03b";
@fa-indent: "\f03c";
@fa-video-camera: "\f03d";
@fa-picture-o: "\f03e";
@fa-pencil: "\f040";
@fa-map-marker: "\f041";
@fa-adjust: "\f042";
@fa-tint: "\f043";
@fa-pencil-square-o: "\f044";
@fa-share-square-o: "\f045";
@fa-check-square-o: "\f046";
@fa-arrows: "\f047";
@fa-step-backward: "\f048";
@fa-fast-backward: "\f049";
@fa-backward: "\f04a";
@fa-play: "\f04b";
@fa-pause: "\f04c";
@fa-stop: "\f04d";
@fa-forward: "\f04e";
@fa-fast-forward: "\f050";
@fa-step-forward: "\f051";
@fa-eject: "\f052";
@fa-chevron-left: "\f053";
@fa-chevron-right: "\f054";
@fa-plus-circle: "\f055";
@fa-minus-circle: "\f056";
@fa-times-circle: "\f057";
@fa-check-circle: "\f058";
@fa-question-circle: "\f059";
@fa-info-circle: "\f05a";
@fa-crosshairs: "\f05b";
@fa-times-circle-o: "\f05c";
@fa-check-circle-o: "\f05d";
@fa-ban: "\f05e";
@fa-arrow-left: "\f060";
@fa-arrow-right: "\f061";
@fa-arrow-up: "\f062";
@fa-arrow-down: "\f063";
@fa-share: "\f064";
@fa-expand: "\f065";
@fa-compress: "\f066";
@fa-plus: "\f067";
@fa-minus: "\f068";
@fa-asterisk: "\f069";
@fa-exclamation-circle: "\f06a";
@fa-gift: "\f06b";
@fa-leaf: "\f06c";
@fa-fire: "\f06d";
@fa-eye: "\f06e";
@fa-eye-slash: "\f070";
@fa-exclamation-triangle: "\f071";
@fa-plane: "\f072";
@fa-calendar: "\f073";
@fa-random: "\f074";
@fa-comment: "\f075";
@fa-magnet: "\f076";
@fa-chevron-up: "\f077";
@fa-chevron-down: "\f078";
@fa-retweet: "\f079";
@fa-shopping-cart: "\f07a";
@fa-folder: "\f07b";
@fa-folder-open: "\f07c";
@fa-arrows-v: "\f07d";
@fa-arrows-h: "\f07e";
@fa-bar-chart: "\f080";
@fa-twitter-square: "\f081";
@fa-facebook-square: "\f082";
@fa-camera-retro: "\f083";
@fa-key: "\f084";
@fa-cogs: "\f085";
@fa-comments: "\f086";
@fa-thumbs-o-up: "\f087";
@fa-thumbs-o-down: "\f088";
@fa-star-half: "\f089";
@fa-heart-o: "\f08a";
@fa-sign-out: "\f08b";
@fa-linkedin-square: "\f08c";
@fa-thumb-tack: "\f08d";
@fa-external-link: "\f08e";
@fa-sign-in: "\f090";
@fa-trophy: "\f091";
@fa-github-square: "\f092";
@fa-upload: "\f093";
@fa-lemon-o: "\f094";
@fa-phone: "\f095";
@fa-square-o: "\f096";
@fa-bookmark-o: "\f097";
@fa-phone-square: "\f098";
@fa-twitter: "\f099";
@fa-facebook: "\f09a";
@fa-github: "\f09b";
@fa-unlock: "\f09c";
@fa-credit-card: "\f09d";
@fa-rss: "\f09e";
@fa-hdd-o: "\f0a0";
@fa-bullhorn: "\f0a1";
@fa-bell: "\f0f3";
@fa-certificate: "\f0a3";
@fa-hand-o-right: "\f0a4";
@fa-hand-o-left: "\f0a5";
@fa-hand-o-up: "\f0a6";
@fa-hand-o-down: "\f0a7";
@fa-arrow-circle-left: "\f0a8";
@fa-arrow-circle-right: "\f0a9";
@fa-arrow-circle-up: "\f0aa";
@fa-arrow-circle-down: "\f0ab";
@fa-globe: "\f0ac";
@fa-wrench: "\f0ad";
@fa-tasks: "\f0ae";
@fa-filter: "\f0b0";
@fa-briefcase: "\f0b1";
@fa-arrows-alt: "\f0b2";
@fa-users: "\f0c0";
@fa-link: "\f0c1";
@fa-cloud: "\f0c2";
@fa-flask: "\f0c3";
@fa-scissors: "\f0c4";
@fa-files-o: "\f0c5";
@fa-paperclip: "\f0c6";
@fa-floppy-o: "\f0c7";
@fa-square: "\f0c8";
@fa-bars: "\f0c9";
@fa-list-ul: "\f0ca";
@fa-list-ol: "\f0cb";
@fa-strikethrough: "\f0cc";
@fa-underline: "\f0cd";
@fa-table: "\f0ce";
@fa-magic: "\f0d0";
@fa-truck: "\f0d1";
@fa-pinterest: "\f0d2";
@fa-pinterest-square: "\f0d3";
@fa-google-plus-square: "\f0d4";
@fa-google-plus: "\f0d5";
@fa-money: "\f0d6";
@fa-caret-down: "\f0d7";
@fa-caret-up: "\f0d8";
@fa-caret-left: "\f0d9";
@fa-caret-right: "\f0da";
@fa-columns: "\f0db";
@fa-sort: "\f0dc";
@fa-sort-desc: "\f0dd";
@fa-sort-asc: "\f0de";
@fa-envelope: "\f0e0";
@fa-linkedin: "\f0e1";
@fa-undo: "\f0e2";
@fa-gavel: "\f0e3";
@fa-tachometer: "\f0e4";
@fa-comment-o: "\f0e5";
@fa-comments-o: "\f0e6";
@fa-bolt: "\f0e7";
@fa-sitemap: "\f0e8";
@fa-umbrella: "\f0e9";
@fa-clipboard: "\f0ea";
@fa-lightbulb-o: "\f0eb";
@fa-exchange: "\f0ec";
@fa-cloud-download: "\f0ed";
@fa-cloud-upload: "\f0ee";
@fa-user-md: "\f0f0";
@fa-stethoscope: "\f0f1";
@fa-suitcase: "\f0f2";
@fa-bell-o: "\f0a2";
@fa-coffee: "\f0f4";
@fa-cutlery: "\f0f5";
@fa-file-text-o: "\f0f6";
@fa-building-o: "\f0f7";
@fa-hospital-o: "\f0f8";
@fa-ambulance: "\f0f9";
@fa-medkit: "\f0fa";
@fa-fighter-jet: "\f0fb";
@fa-beer: "\f0fc";
@fa-h-square: "\f0fd";
@fa-plus-square: "\f0fe";
@fa-angle-double-left: "\f100";
@fa-angle-double-right: "\f101";
@fa-angle-double-up: "\f102";
@fa-angle-double-down: "\f103";
@fa-angle-left: "\f104";
@fa-angle-right: "\f105";
@fa-angle-up: "\f106";
@fa-angle-down: "\f107";
@fa-desktop: "\f108";
@fa-laptop: "\f109";
@fa-tablet: "\f10a";
@fa-mobile: "\f10b";
@fa-circle-o: "\f10c";
@fa-quote-left: "\f10d";
@fa-quote-right: "\f10e";
@fa-spinner: "\f110";
@fa-circle: "\f111";
@fa-reply: "\f112";
@fa-github-alt: "\f113";
@fa-folder-o: "\f114";
@fa-folder-open-o: "\f115";
@fa-smile-o: "\f118";
@fa-frown-o: "\f119";
@fa-meh-o: "\f11a";
@fa-gamepad: "\f11b";
@fa-keyboard-o: "\f11c";
@fa-flag-o: "\f11d";
@fa-flag-checkered: "\f11e";
@fa-terminal: "\f120";
@fa-code: "\f121";
@fa-reply-all: "\f122";
@fa-star-half-o: "\f123";
@fa-location-arrow: "\f124";
@fa-crop: "\f125";
@fa-code-fork: "\f126";
@fa-chain-broken: "\f127";
@fa-question: "\f128";
@fa-info: "\f129";
@fa-exclamation: "\f12a";
@fa-superscript: "\f12b";
@fa-subscript: "\f12c";
@fa-eraser: "\f12d";
@fa-puzzle-piece: "\f12e";
@fa-microphone: "\f130";
@fa-microphone-slash: "\f131";
@fa-shield: "\f132";
@fa-calendar-o: "\f133";
@fa-fire-extinguisher: "\f134";
@fa-rocket: "\f135";
@fa-maxcdn: "\f136";
@fa-chevron-circle-left: "\f137";
@fa-chevron-circle-right: "\f138";
@fa-chevron-circle-up: "\f139";
@fa-chevron-circle-down: "\f13a";
@fa-html5: "\f13b";
@fa-css3: "\f13c";
@fa-anchor: "\f13d";
@fa-unlock-alt: "\f13e";
@fa-bullseye: "\f140";
@fa-ellipsis-h: "\f141";
@fa-ellipsis-v: "\f142";
@fa-rss-square: "\f143";
@fa-play-circle: "\f144";
@fa-ticket: "\f145";
@fa-minus-square: "\f146";
@fa-minus-square-o: "\f147";
@fa-level-up: "\f148";
@fa-level-down: "\f149";
@fa-check-square: "\f14a";
@fa-pencil-square: "\f14b";
@fa-external-link-square: "\f14c";
@fa-share-square: "\f14d";
@fa-compass: "\f14e";
@fa-caret-square-o-down: "\f150";
@fa-caret-square-o-up: "\f151";
@fa-caret-square-o-right: "\f152";
@fa-eur: "\f153";
@fa-gbp: "\f154";
@fa-usd: "\f155";
@fa-inr: "\f156";
@fa-jpy: "\f157";
@fa-rub: "\f158";
@fa-krw: "\f159";
@fa-btc: "\f15a";
@fa-file: "\f15b";
@fa-file-text: "\f15c";
@fa-sort-alpha-asc: "\f15d";
@fa-sort-alpha-desc: "\f15e";
@fa-sort-amount-asc: "\f160";
@fa-sort-amount-desc: "\f161";
@fa-sort-numeric-asc: "\f162";
@fa-sort-numeric-desc: "\f163";
@fa-thumbs-up: "\f164";
@fa-thumbs-down: "\f165";
@fa-youtube-square: "\f166";
@fa-youtube: "\f167";
@fa-xing: "\f168";
@fa-xing-square: "\f169";
@fa-youtube-play: "\f16a";
@fa-dropbox: "\f16b";
@fa-stack-overflow: "\f16c";
@fa-instagram: "\f16d";
@fa-flickr: "\f16e";
@fa-adn: "\f170";
@fa-bitbucket: "\f171";
@fa-bitbucket-square: "\f172";
@fa-tumblr: "\f173";
@fa-tumblr-square: "\f174";
@fa-long-arrow-down: "\f175";
@fa-long-arrow-up: "\f176";
@fa-long-arrow-left: "\f177";
@fa-long-arrow-right: "\f178";
@fa-apple: "\f179";
@fa-windows: "\f17a";
@fa-android: "\f17b";
@fa-linux: "\f17c";
@fa-dribbble: "\f17d";
@fa-skype: "\f17e";
@fa-foursquare: "\f180";
@fa-trello: "\f181";
@fa-female: "\f182";
@fa-male: "\f183";
@fa-gittip: "\f184";
@fa-sun-o: "\f185";
@fa-moon-o: "\f186";
@fa-archive: "\f187";
@fa-bug: "\f188";
@fa-vk: "\f189";
@fa-weibo: "\f18a";
@fa-renren: "\f18b";
@fa-pagelines: "\f18c";
@fa-stack-exchange: "\f18d";
@fa-arrow-circle-o-right: "\f18e";
@fa-arrow-circle-o-left: "\f190";
@fa-caret-square-o-left: "\f191";
@fa-dot-circle-o: "\f192";
@fa-wheelchair: "\f193";
@fa-vimeo-square: "\f194";
@fa-try: "\f195";
@fa-plus-square-o: "\f196";
@fa-space-shuttle: "\f197";
@fa-slack: "\f198";
@fa-envelope-square: "\f199";
@fa-wordpress: "\f19a";
@fa-openid: "\f19b";
@fa-university: "\f19c";
@fa-graduation-cap: "\f19d";
@fa-yahoo: "\f19e";
@fa-google: "\f1a0";
@fa-reddit: "\f1a1";
@fa-reddit-square: "\f1a2";
@fa-stumbleupon-circle: "\f1a3";
@fa-stumbleupon: "\f1a4";
@fa-delicious: "\f1a5";
@fa-digg: "\f1a6";
@fa-pied-piper: "\f1a7";
@fa-pied-piper-alt: "\f1a8";
@fa-drupal: "\f1a9";
@fa-joomla: "\f1aa";
@fa-language: "\f1ab";
@fa-fax: "\f1ac";
@fa-building: "\f1ad";
@fa-child: "\f1ae";
@fa-paw: "\f1b0";
@fa-spoon: "\f1b1";
@fa-cube: "\f1b2";
@fa-cubes: "\f1b3";
@fa-behance: "\f1b4";
@fa-behance-square: "\f1b5";
@fa-steam: "\f1b6";
@fa-steam-square: "\f1b7";
@fa-recycle: "\f1b8";
@fa-car: "\f1b9";
@fa-taxi: "\f1ba";
@fa-tree: "\f1bb";
@fa-spotify: "\f1bc";
@fa-deviantart: "\f1bd";
@fa-soundcloud: "\f1be";
@fa-database: "\f1c0";
@fa-file-pdf-o: "\f1c1";
@fa-file-word-o: "\f1c2";
@fa-file-excel-o: "\f1c3";
@fa-file-powerpoint-o: "\f1c4";
@fa-file-image-o: "\f1c5";
@fa-file-archive-o: "\f1c6";
@fa-file-audio-o: "\f1c7";
@fa-file-video-o: "\f1c8";
@fa-file-code-o: "\f1c9";
@fa-vine: "\f1ca";
@fa-codepen: "\f1cb";
@fa-jsfiddle: "\f1cc";
@fa-life-ring: "\f1cd";
@fa-circle-o-notch: "\f1ce";
@fa-rebel: "\f1d0";
@fa-empire: "\f1d1";
@fa-git-square: "\f1d2";
@fa-git: "\f1d3";
@fa-hacker-news: "\f1d4";
@fa-tencent-weibo: "\f1d5";
@fa-qq: "\f1d6";
@fa-weixin: "\f1d7";
@fa-paper-plane: "\f1d8";
@fa-paper-plane-o: "\f1d9";
@fa-history: "\f1da";
@fa-circle-thin: "\f1db";
@fa-header: "\f1dc";
@fa-paragraph: "\f1dd";
@fa-sliders: "\f1de";
@fa-share-alt: "\f1e0";
@fa-share-alt-square: "\f1e1";
@fa-bomb: "\f1e2";
@fa-futbol-o: "\f1e3";
@fa-tty: "\f1e4";
@fa-binoculars: "\f1e5";
@fa-plug: "\f1e6";
@fa-slideshare: "\f1e7";
@fa-twitch: "\f1e8";
@fa-yelp: "\f1e9";
@fa-newspaper-o: "\f1ea";
@fa-wifi: "\f1eb";
@fa-calculator: "\f1ec";
@fa-paypal: "\f1ed";
@fa-google-wallet: "\f1ee";
@fa-cc-visa: "\f1f0";
@fa-cc-mastercard: "\f1f1";
@fa-cc-discover: "\f1f2";
@fa-cc-amex: "\f1f3";
@fa-cc-paypal: "\f1f4";
@fa-cc-stripe: "\f1f5";
@fa-bell-slash: "\f1f6";
@fa-bell-slash-o: "\f1f7";
@fa-trash: "\f1f8";
@fa-copyright: "\f1f9";
@fa-at: "\f1fa";
@fa-eyedropper: "\f1fb";
@fa-paint-brush: "\f1fc";
@fa-birthday-cake: "\f1fd";
@fa-area-chart: "\f1fe";
@fa-pie-chart: "\f200";
@fa-line-chart: "\f201";
@fa-lastfm: "\f202";
@fa-lastfm-square: "\f203";
@fa-toggle-off: "\f204";
@fa-toggle-on: "\f205";
@fa-bicycle: "\f206";
@fa-bus: "\f207";
@fa-ioxhost: "\f208";
@fa-angellist: "\f209";
@fa-cc: "\f20a";
@fa-ils: "\f20b";
@fa-meanpath: "\f20c";
/*-------------------------------------
zTree Style
version: 3.4
author: Hunter.z
email: hunter.z@263.net
website: http://code.google.com/p/jquerytree/
-------------------------------------*/
.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
.ztree {margin:0; padding:5px; color:#333}
.ztree li{padding:0; margin:0; list-style:none; line-height:17px; text-align:left; white-space:nowrap; outline:0}
.ztree li ul{ margin:0; padding:0 0 0 18px}
.ztree li ul.line{ background:url(./img/line_conn.png) 0 0 repeat-y;}
.ztree li a {padding-right:3px; margin:0; cursor:pointer; height:21px; color:#333; background-color: transparent; text-decoration:none; vertical-align:top; display: inline-block}
.ztree li a:hover {text-decoration:underline}
.ztree li a.curSelectedNode {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; opacity:0.8;}
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; border:1px #666 solid; opacity:0.8;}
.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:white; height:21px; border:1px #666 solid;
opacity:0.8; filter:alpha(opacity=80)}
.ztree li a.tmpTargetNode_prev {}
.ztree li a.tmpTargetNode_next {}
.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
font-size:12px; border:1px #585956 solid; *border:0px}
.ztree li span {line-height:21px; margin-right:2px}
.ztree li span.button {line-height:0; margin:0; padding: 0; width:21px; height:21px; display: inline-block; vertical-align:middle;
border:0 none; cursor: pointer;outline:none;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")}
.ztree li span.button.chk {width:13px; height:13px; margin:0 2px; cursor: auto}
.ztree li span.button.chk.checkbox_false_full {background-position: -5px -5px;}
.ztree li span.button.chk.checkbox_false_full_focus {background-position: -5px -26px;}
.ztree li span.button.chk.checkbox_false_part {background-position: -5px -48px;}
.ztree li span.button.chk.checkbox_false_part_focus {background-position: -5px -68px;}
.ztree li span.button.chk.checkbox_false_disable {background-position: -5px -89px;}
.ztree li span.button.chk.checkbox_true_full {background-position: -26px -5px;}
.ztree li span.button.chk.checkbox_true_full_focus {background-position: -26px -26px;}
.ztree li span.button.chk.checkbox_true_part {background-position: -26px -48px;}
.ztree li span.button.chk.checkbox_true_part_focus {background-position: -26px -68px;}
.ztree li span.button.chk.checkbox_true_disable {background-position: -26px -89px;}
.ztree li span.button.chk.radio_false_full {background-position: -47px -5px;}
.ztree li span.button.chk.radio_false_full_focus {background-position: -47px -26px;}
.ztree li span.button.chk.radio_false_part {background-position: -47px -47px;}
.ztree li span.button.chk.radio_false_part_focus {background-position: -47px -68px;}
.ztree li span.button.chk.radio_false_disable {background-position: -47px -89px;}
.ztree li span.button.chk.radio_true_full {background-position: -68px -5px;}
.ztree li span.button.chk.radio_true_full_focus {background-position: -68px -26px;}
.ztree li span.button.chk.radio_true_part {background-position: -68px -47px;}
.ztree li span.button.chk.radio_true_part_focus {background-position: -68px -68px;}
.ztree li span.button.chk.radio_true_disable {background-position: -68px -89px;}
.ztree li span.button.switch {width:21px; height:21px}
.ztree li span.button.root_open{background-position:-105px -63px}
.ztree li span.button.root_close{background-position:-126px -63px}
.ztree li span.button.roots_open{background-position: -105px 0;}
.ztree li span.button.roots_close{background-position: -126px 0;}
.ztree li span.button.center_open{background-position: -105px -21px;}
.ztree li span.button.center_close{background-position: -126px -21px;}
.ztree li span.button.bottom_open{background-position: -105px -42px;}
.ztree li span.button.bottom_close{background-position: -126px -42px;}
.ztree li span.button.noline_open{background-position: -105px -84px;}
.ztree li span.button.noline_close{background-position: -126px -84px;}
.ztree li span.button.root_docu{ background:none;}
.ztree li span.button.roots_docu{background-position: -84px 0;}
.ztree li span.button.center_docu{background-position: -84px -21px;}
.ztree li span.button.bottom_docu{background-position: -84px -42px;}
.ztree li span.button.noline_docu{ background:none;}
.ztree li span.button.ico_open{margin-right:2px; background-position: -147px -21px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_close{margin-right:2px; margin-right:2px; background-position: -147px 0; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_docu{margin-right:2px; background-position: -147px -42px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.edit {margin-left:2px; margin-right: -1px; background-position: -189px -21px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.edit:hover {
background-position: -168px -21px;
}
.ztree li span.button.remove {margin-left:2px; margin-right: -1px; background-position: -189px -42px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.remove:hover {
background-position: -168px -42px;
}
.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position: -189px 0; vertical-align:top; *vertical-align:middle}
.ztree li span.button.add:hover {
background-position: -168px 0;
}
.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
span.tmpzTreeMove_arrow {width:16px; height:21px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-position:-168px -84px; background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")}
ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
.ztreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
/*-------------------------------------
zTree Style
version: 3.5.19
author: Hunter.z
email: hunter.z@263.net
website: http://code.google.com/p/jquerytree/
-------------------------------------*/
.ztree * {padding:0; margin:0; /* font-size:12px; */ font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
.ztree {margin:0; padding:5px; color:#333}
.ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0}
.ztree li ul{ margin:0; padding:0 0 0 18px}
.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent;
text-decoration:none; vertical-align:top; display: inline-block}
.ztree li a:hover {text-decoration:underline}
.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
opacity:0.8; filter:alpha(opacity=80)}
.ztree li a.tmpTargetNode_prev {}
.ztree li a.tmpTargetNode_next {}
.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
font-size:12px; border:1px #7EC4CC solid; *border:0px}
.ztree li span {line-height:16px; margin-right:2px}
.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
border:0 none; cursor: pointer;outline:none;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
.ztree li span.button.switch {width:18px; height:18px}
.ztree li span.button.root_open{background-position:-92px -54px}
.ztree li span.button.root_close{background-position:-74px -54px}
.ztree li span.button.roots_open{background-position:-92px 0}
.ztree li span.button.roots_close{background-position:-74px 0}
.ztree li span.button.center_open{background-position:-92px -18px}
.ztree li span.button.center_close{background-position:-74px -18px}
.ztree li span.button.bottom_open{background-position:-92px -36px}
.ztree li span.button.bottom_close{background-position:-74px -36px}
.ztree li span.button.noline_open{background-position:-92px -72px}
.ztree li span.button.noline_close{background-position:-74px -72px}
.ztree li span.button.root_docu{ background:none;}
.ztree li span.button.roots_docu{background-position:-56px 0}
.ztree li span.button.center_docu{background-position:-56px -18px}
.ztree li span.button.bottom_docu{background-position:-56px -36px}
.ztree li span.button.noline_docu{ background:none;}
.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
/* level style*/
/*.ztree li span.button.level0 {
display:none;
}
.ztree li ul.level0 {
padding:0;
background:none;
}*/
\ No newline at end of file
layui.define([], function(exports) {
var FsButtonCommon = function() {
};
FsButtonCommon.prototype.test = function(elem, data, datagrid) {
alert("测试自定义按钮" + JSON.stringify(data));
}
var fsButtonCommon = new FsButtonCommon();
exports('fsButtonCommon', fsButtonCommon);
});
\ No newline at end of file
layui.define(['layer', 'form', 'fsButtonCommon'], function(exports) {
var form = layui.form,
layer = layui.layer,
fsButtonCommon = layui.fsButtonCommon;
var fsCommon = {
/**错误msg提示 */
errorMsg: function(text) {
top.winui.window.msg(text, {icon: 2,time: 2000});
},
/**成功 msg提示 */
successMsg: function(text) {
top.winui.window.msg(text, {icon: 1,time: 2000});
},
/**警告弹出提示*/
warnMsg: function(text) {
top.winui.window.msg(text, {icon: 0});
},
confirm: function(title, text, callBackFunc) {
top.layer.confirm(text, {
title: title,
resize: false,
btn: ['确定', '取消'],
btnAlign: 'c',
anim: 1,
icon: 3
}, callBackFunc, function() {
});
},
invokeServer: function(funcNo, param, callBackFunc, async, method) {
var url = "/" + funcNo;
fsCommon.invoke(url, param, callBackFunc, async, method);
},
invoke: function(url, param, callBackFunc, async, method) {
if(!isNull(reqBasePath)) {
url = reqBasePath + url;
}
if(isNull(async)) {
async = true;
}
if(isNull(method)) {
method = "post";
}
//打开加载层
var index = layer.load();
$.ajax({
url: url,
type: method,
async: async,
data: param,
dataType: "json",
success: function(result) {
callBackFunc(result);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
var status = XMLHttpRequest.status;
if(status == 404) {
fsCommon.errorMsg("请求地址出错!");
} else if(status == 302) {
fsCommon.errorMsg('连接网页出错!');
} else if(textStatus == "timeout") {
fsCommon.errorMsg("请求超时!");
} else {
fsCommon.errorMsg('请求异常!');
}
},
complete: function(XMLHttpRequest, textStatus) {
//关闭加载层
layer.close(index);
}
});
},
//是否需要刷新table,true 需要
isRefreshTable: function() {
var refreshTable = top.$('meta[name="refreshTable"]').attr("content");
if(refreshTable == "1") {
//刷新后,清空
top.$('meta[name="refreshTable"]').attr("content", "0");
return true;
}
return false;
},
getUrlParam: function() {
var param = window.location.search;
var pattern = /([^?&=]+)=([^&#]*)/g;
var dict = {};
var search = null;
if(typeof param === "object" && param instanceof Location) {
search = param.search;
} else if(typeof param === "string") {
search = param;
} else {
throw new Error("参数类型非法!请传入window.loaction对象或者url字符串。");
}
search.replace(pattern, function(rs, $1, $2) {
var key = decodeURIComponent($1);
var value = decodeURIComponent($2);
dict[key] = value;
return rs;
});
return dict;
},
/**
* 设置刷新table状态,1 需要刷新
*/
setRefreshTable: function(state) {
var refreshTable = top.$('meta[name="refreshTable"]');
if(refreshTable.length == 0) {
top.$('head').append("<meta name=\"refreshTable\" content=\"" + state + "\"/>");
} else {
refreshTable.attr("content", state);
}
},
/**
* 更新form表单数据
*/
autofill: function(elem, data) {
if(!isNull(elem) && !isNull(data)) {
$(elem)[0].reset();
$(elem).autofill(data);
form.render(); //更新全部
}
},
//弹出窗口
open: function(_title, _width, _height, _url, _end, isMaximize) {
if(isNull(_width)) {
_width = "700px";
}
if(isNull(_height)) {
_height = "400px";
}
if(parseInt(_width.replace(/[^0-9]/ig, "")) > $(window.top.document).width()) {
_width = $(window.top.document).width() + "px";
}
if(parseInt(_height.replace(/[^0-9]/ig, "")) > $(window.top.document).height()) {
_height = $(window.top.document).height() + "px";
}
var index = top.layer.open({
type: 2,
title: _title,
area: [_width, _height],
fixed: true, //不固定
scrollbar: true,
maxmin: true,
content: _url,
end: _end
});
if(isMaximize == "1") {
top.layer.full(index);
}
},
/**
* 按钮事件绑定
*/
buttonEvent: function(fsType, getDatagrid) {
var botton = "";
if(fsType == "tree") { //操作树
botton = $("button.fsTree");
} else { //默认操作table
botton = $("button:not(.fsTree)");
}
botton.on("click", function(event) {
var _this = $(this);
fsCommon.buttonCallback(_this, getDatagrid);
});
},
/**
* 按钮回调
*/
buttonCallback: function(_this, getDatagrid, tid) {
var _function = _this.attr("function");
var _funcNo = _this.attr("funcNo");
var _method = _this.attr("method");
//判断是否是普通按钮和树按钮
var _tableId = _this.attr("tableId");
if(_this.filter('.fsTree').length == 1) {
_tableId = _this.attr("treeId");
}
var selectTreeId = _this.attr("selectTreeId");
if(!isNull(selectTreeId)) {
var value = $("#" + selectTreeId).val();
if(isNull(value)) {
fsCommon.warnMsg("请选择左边树!");
return false;
} else if(value === "0") {
fsCommon.warnMsg("请选择非根目录!");
return false;
}
}
switch(_function) {
case "refresh":
var obj = getDatagrid(_tableId);
if(!isNull(obj)) {
//刷新
obj.refresh(tid);
}
break;
case "submit":
//提交
//单选判断 //多选判断
if("1" == _this.attr("isSelect") || "1" == _this.attr("isMutiDml")) {
//获取选中的数据
var data = getDatagrid(_tableId).getCheckData(tid);
if(data.length == 0) {
fsCommon.warnMsg("请选择需要操作的数据!");
return;
}
if("1" == _this.attr("isSelect") && data.length > 1) {
fsCommon.warnMsg("请选择一行数据!");
return;
}
}
var param = {}; //参数
var submitForm = function() {
var url = _this.attr("url"); //请求url
if(isNull(_funcNo) && isNull(url)) {
fsCommon.warnMsg("功能号或请求地址为空!");
return;
}
if(isNull(url)) {
url = "/fsbus/" + _funcNo;
}
//获取参数
var inputs = _this.attr("inputs");
if(!isNull(inputs)) {
//获取选中的数据
var data = getDatagrid(_tableId).getCheckData(tid);
var param2 = fsCommon.getParamByInputs(inputs, data);
$.extend(param, param2);
}
//请求数据
fsCommon.invoke(url, param, function(data) {
if(data[statusName] == successNo) {
fsCommon.setRefreshTable("1");
if(_this.attr("isRefresh") !== "0" && !isNull(getDatagrid(_tableId))) {
//刷新
getDatagrid(_tableId).refresh(tid);
}
if(_this.attr("isClose") == "1") {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
fsCommon.successMsg('操作成功!');
} else {
//提示错误消息
fsCommon.errorMsg(data[msgName]);
}
}, null, _method);
}
if("1" == _this.attr("isConfirm")) {
var confirmMsg = _this.attr("confirmMsg");
if(isNull(confirmMsg)) {
confirmMsg = "是否确定操作选中的数据?";
}
fsCommon.confirm("提示", confirmMsg, function(index) {
top.layer.close(index);
submitForm();
});
} else {
submitForm();
}
break;
case "close":
//关闭
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
parent.layer.close(index);
break;
case "query":
//查询
var obj = getDatagrid(_tableId);
if(!isNull(obj)) {
var formData = _this.parentsUntil('form').parent().getFormData();
obj.query(formData);
}
break;
case "top":
var _url = _this.attr("topUrl");
if(isNull(_url)) {
fsCommon.warnMsg("url地址为空!");
return false;
}
if("1" == _this.attr("isSelect")) {
//获取选中的数据
var data = getDatagrid(_tableId).getCheckData();
if(data.length == 0) {
fsCommon.warnMsg("请选择需要操作的数据!");
return;
}
if(data.length > 1) {
fsCommon.warnMsg("请选择一行数据!");
return;
}
}
var inputs = _this.attr("inputs");
if(!isNull(inputs)) {
//获取选中的数据
var data = getDatagrid(_tableId).getCheckData(tid);
_url = fsCommon.getUrlByInputs(_url, inputs, data[0]);
//处理数据缓存
if(loadDataType == "1") {
var uuid = $.uuid();
_url += "&_fsUuid=" + uuid;
//缓存选中的数据
$.setSessionStorage(uuid, JSON.stringify(data[0]));
}
}
//弹出的方式
var _mode = _this.attr("topMode");
if(!isNull(_mode)) {
if(_url.indexOf('?') == -1) {
_url += "?";
} else {
_url += "&";
}
_url += "_mode=" + _mode;
}
var _title = _this.attr("topTitle");
var _width = _this.attr("topWidth");
var _height = _this.attr("topHeight");
var isMaximize = _this.attr("isMaximize");
fsCommon.open(_title, _width, _height, _url, function() {
if(_this.attr("isRefresh") !== "0" && fsCommon.isRefreshTable()) {
getDatagrid(_tableId).refresh(tid);
}
}, isMaximize);
break;
case "upload":
var _title = "上传附件";
var _width = "400px";
var _height = "280px";
var _url = "/plugins/frame/views/upload.html";
var inputs = _this.attr("inputs");
if(!isNull(inputs)) {
_url = fsCommon.getUrlByInputs(_url, inputs, null);
}
var fileParam = {};
if(!isNull(_this.attr("fileAccept"))) {
fileParam["fileAccept"] = _this.attr("fileAccept");
}
if(!isNull(_this.attr("fileExts"))) {
fileParam["fileExts"] = _this.attr("fileExts");
}
if(!isNull(_this.attr("fileSize"))) {
fileParam["fileSize"] = _this.attr("fileSize");
}
if(!isNull(fileParam)) {
if(_url.indexOf('?') == -1) {
_url += "?";
} else {
_url += "&";
}
_url += "fileParam=" + escape(JSON.stringify(fileParam));
}
fsCommon.open(_title, _width, _height, _url, function() {
var uploadFilePath = top.$('meta[name="uploadFilePath"]').attr("content");
if(!isNull(uploadFilePath)) {
if(!isNull(_this.attr("fileElem"))) {
$(_this.attr("fileElem")).val(uploadFilePath);
}
}
});
break;
case "addRow":
getDatagrid(_tableId).addRow();
break;
case "save":
var groupId = _this.attr("groupId"); //分组id
if(isNull(groupId)) {
fsCommon.warnMsg("未配置分组id!");
return;
}
var fsFormData = {}; //form表单数据
var isFsForm = false; //是否有form表单
var fsTableData = []; //数据表格数据
var isFsTable = false; //是否有table表格
var isFsVerifyForm = true;
$("table.fsDatagrid,form").each(function(index, elem) {
var _groupId = $(this).attr("groupId");
if(!isNull(_groupId) && groupId == _groupId) {
if("FORM" == elem.tagName.toUpperCase()) {
var isVerify = form.verifyForm($(this));
if(isVerify != false) { //验证通过
//获取form表单数据
var formData = $(this).getFormData();
$.extend(fsFormData, formData);
isFsForm = true;
} else {
isFsVerifyForm = false;
return false;
}
} else if("TABLE" == elem.tagName.toUpperCase()) {
var data = getDatagrid(elem.id).getData();
$.extend(fsTableData, data);
isFsTable = true;
}
}
});
if(!isFsVerifyForm) {
return;
}
var param = {}; //参数
var submitFormSave = function() {
var url = _this.attr("url"); //请求url
if(isNull(_funcNo) && isNull(url)) {
fsCommon.warnMsg("功能号或请求地址为空!");
return;
}
if(isNull(url)) {
url = "/fsbus/" + _funcNo;
}
//获取参数
var inputs = _this.attr("inputs");
if(!isNull(inputs)) {
var param2 = fsCommon.getParamByInputs(inputs);
$.extend(param, param2);
}
if(isFsForm) {
param["fsFormData"] = encodeURIComponent(JSON.stringify(fsFormData));
}
if(isFsTable) {
param["fsTableData"] = encodeURIComponent(JSON.stringify(fsTableData));
}
//请求数据
fsCommon.invoke(url, param, function(data) {
if(data[statusName] == successNo) {
fsCommon.setRefreshTable("1");
fsCommon.successMsg('操作成功!');
//是否自动关闭,默认是
if(_this.attr("isClose") != "0") {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
} else {
//提示错误消息
fsCommon.errorMsg(data[msgName]);
}
}, null, _method);
}
if("1" == _this.attr("isConfirm")) {
var confirmMsg = _this.attr("confirmMsg");
if(isNull(confirmMsg)) {
confirmMsg = "是否确定操作选中的数据?";
}
fsCommon.confirm("提示", confirmMsg, function(index) {
top.layer.close(index);
submitFormSave();
});
} else {
submitFormSave();
}
break;
default:
if(!isNull(_function)) {
try {
var obj = null;
if(!isNull(getDatagrid)) {
obj = getDatagrid(_tableId)
}
var data = null;
if(null != obj) {
data = obj.getCheckData();
}
if(!isNull(fsButtonCommon[_function])) {
//执行
fsButtonCommon[_function](_this, data, obj, fsCommon);
} else if(!isNull(layui.fsButton[_function])) {
layui.fsButton[_function](_this, data, obj, fsCommon);
}
} catch(e) {
console.error(e);
}
}
break;
}
},
/**获取参数对象**/
getParamByInputs: function(inputs, data) {
var param = {}; //参数
if(!isNull(inputs)) {
var inputArr = inputs.split(',');
$.each(inputArr, function(i, value) {
var paramArr = value.split(':', 2);
if(!isNull(paramArr[0])) {
//获取参数值,如果值为空,获取datagrid选中行数据
var _vaule = paramArr[1];
if(isNull(_vaule)) {
//多结果集,分割
var newValue = "";
if(!isNull(data)) {
//如果多选,获取多选数据
$(data).each(function(index, dom) {
if(!isNull(newValue)) {
newValue += ",";
}
var __value = dom[paramArr[0]];
if(isNull(__value)) {
__value = "";
}
newValue += __value;
});
}
_vaule = newValue;
} else if($.startsWith(_vaule, "$")) {
var xxxx = _vaule.substring(1);
//多结果集,分割
var newValue = "";
if(!isNull(data)) {
//如果多选,获取多选数据
$(data).each(function(index, dom) {
if(!isNull(newValue)) {
newValue += ",";
}
var __value = dom[xxxx];
if(isNull(__value)) {
__value = "";
}
newValue += __value;
});
}
_vaule = newValue;
} else if($.startsWith(_vaule, "#")) {
_vaule = $(_vaule).val();
}
if(isNull(_vaule)) {
_vaule = "";
}
param[paramArr[0]] = _vaule;
}
});
}
return param;
},
/**返回url组装参数**/
getUrlByInputs: function(_url, inputs, data) {
if(!isNull(inputs)) {
var urlStr = "";
var inputArr = inputs.split(',');
$.each(inputArr, function(i, value) {
var paramArr = value.split(':', 2);
if(!isNull(paramArr[0])) {
if(!isNull(urlStr)) {
urlStr += '&';
}
//获取参数值,如果值为空,获取datagrid选中行数据
var _vaule = paramArr[1];
if(isNull(_vaule)) //如果值为空或者值是#/$开头 $取参数,#取选择器
{
_vaule = data[paramArr[0]];
} else if($.startsWith(_vaule, "$")) {
_vaule = data[_vaule.substring(1)];
} else if($.startsWith(_vaule, "#")) {
_vaule = $(_vaule).val();
}
if(!isNull(_vaule)) {
urlStr += paramArr[0] + "=" + _vaule;
}
}
});
if(_url.indexOf('?') == -1) {
_url += "?";
}
_url += urlStr;
}
return _url;
}
};
exports('fsCommon', fsCommon);
})
\ No newline at end of file
layui.define(['layer', "fsCommon"], function(exports) {
var layer = layui.layer,
fsCommon = layui.fsCommon,
FsTree = function() {
this.config = {
funcNo: undefined, //功能号
url: undefined, //请求url地址
id: "",
isRoot: true, //是否显示更目录,默认显示
clickCallback: undefined //点击回掉函数
}
};
/**
* 渲染tree
*/
FsTree.prototype.render = function(options) {
var _this = this;
$.extend(true, _this.config, options);
if(isNull(_this.config.id)) {
fsCommon.warnMsg("id不能为空!");
return;
}
var domTree = $("#" + _this.config.id);
_this.config.treeName = domTree.attr("treeName");
_this.config.treeIdKey = domTree.attr("treeIdKey");
_this.config.treePIdKey = domTree.attr("treePIdKey");
_this.config.checkType = domTree.attr("checkType");
_this.config.isDrag = domTree.attr("isDrag"); //是否拖拽
_this.queryTree();
_this.rightMenu();
return _this;
};
/**
* 右键菜单
*/
FsTree.prototype.rightMenu = function() {
var _this = this;
//查询菜单列表
var treeDom = $("#" + _this.config.id);
var fsTreeRightMenu = treeDom.next(".fsTreeRightMenu");
if(fsTreeRightMenu.length == 0) {
return;
}
var _rightMenu = {};
$.each(fsTreeRightMenu.children(), function() {
var thisMenu = $(this);
var uuid = $.uuid();
thisMenu.attr("id", uuid);
var obj = {};
obj["name"] = thisMenu.attr("name");
var icon2 = thisMenu.attr("icon");
var icon = thisMenu.attr("icon");
if(icon == "add") {
icon = "fa-plus";
} else if(icon == "refresh") {
icon = "fa-refresh";
} else if(icon == "edit") {
icon = "fa-edit";
} else if(icon == "del") {
icon = "fa-trash";
}
obj["icon"] = icon;
var disabled = thisMenu.attr("disabledType"); //禁用模式
if(!isNull(disabled)) {
obj["disabled"] = function() {
var disableds = disabled.split("|");
for(var i = 0; i < disableds.length; i++) {
if(disableds[i] == "parent") { //父栏目禁用
var tid = $(this).parent().attr("id");
var zTree = $.fn.zTree.getZTreeObj(_this.config.id);
var node = zTree.getNodeByTId(tid);
if(null != node && node["isParent"]) { //父栏目禁用
return true;
}
} else if(disableds[i] == "rootNode") {
var tid = $(this).parent().attr("id");
var zTree = $.fn.zTree.getZTreeObj(_this.config.id);
var node = zTree.getNodeByTId(tid);
if(null != node && node.level === 0) { //根节点禁用
return true;
}
}
}
return false;
};
}
_rightMenu[uuid] = obj;
});
$.contextMenu({
selector: "#" + _this.config.id + " a",
callback: function(key, options) {
var tid = $(this).parent().attr("id");
var _thisButton = $("#" + key);
fsCommon.buttonCallback(_thisButton, _this.config.getTree, tid);
},
items: _rightMenu
});
}
//显示树
FsTree.prototype.showTree = function(data) {
var _this = this;
var funcNo = _this.config.funcNo;
var url = _this.config.url; //请求url
if(isNull(funcNo) && isNull(url)) {
fsCommon.warnMsg("功能号或请求地址为空!");
return;
}
if(isNull(url)) {
url = "/fsbus/" + funcNo;
}
var servletUrl = reqBasePath;
if(!isNull(servletUrl)) {
url = servletUrl + url;
}
var checkType = _this.config.checkType;
var setting = {
view: {
showLine: false
},
data: {
key: {
name: _this.config.treeName
},
simpleData: {
enable: true,
idKey: _this.config.treeIdKey,
pIdKey: _this.config.treePIdKey,
rootPId: 0
}
},
edit: edit,
callback: {
onClick: _this.config.clickCallback,
onAsyncSuccess: function() {
//判断是否选中,如果有选择的值,那么默认选中根节点
if("checkbox" == checkType || "radio" == checkType) {
var zTree = $.fn.zTree.getZTreeObj(_this.config.id);
var node = zTree.getNodeByParam(_this.config.treeIdKey, 0, null);
if(null != node) {
var checkedNode = zTree.getCheckedNodes(true);
if(checkedNode.length > 1 || (checkedNode.length == 1 && checkedNode[0][_this.config.treeIdKey] !== 0)) {
node.checked = true;
} else {
node.checked = false;
}
zTree.refresh();
}
}
}
}
};
if("checkbox" == checkType || "radio" == checkType) {
var check = {};
check["enable"] = true;
check["chkStyle"] = checkType;
setting["check"] = check;
}
if(_this.config.isDrag == "1") { //允许拖拽
var edit = {};
edit["enable"] = true;
edit["showRemoveBtn"] = false;
edit["showRenameBtn"] = false;
setting["edit"] = edit;
}
$.fn.zTree.init($("#" + _this.config.id), setting, data);
};
//查询菜单树列表
FsTree.prototype.queryTree = function() {
var _this = this;
var funcNo = _this.config.funcNo;
var url = _this.config.url; //请求url
if(isNull(funcNo) && isNull(url)) {
fsCommon.warnMsg("功能号或请求地址为空!");
return;
}
if(isNull(url)) {
url = "/" + funcNo;
}
var domTree = $("#" + _this.config.id);
domTree.empty();
var otherParam = {}; //业务参数
var inputs = domTree.attr("inputs");
if(!isNull(inputs)) {
//参数处理,如果有参数,自动带入条件
var urlParam = fsCommon.getUrlParam();
var paramObj = fsCommon.getParamByInputs(inputs, urlParam);
if(!isNull(paramObj)) {
$.extend(otherParam, paramObj);
}
}
//处理查询表单
var defaultForm = domTree.attr("defaultForm");
if(!isNull(defaultForm)) {
var fromData = $("#" + defaultForm).getFormData(true);
$.extend(otherParam, fromData);
}
_this.config.otherParam = otherParam;
if(domTree.attr("isLoad") === "0") {
var array = new Array();
if(domTree.attr("isRoot") !== "0") { //是否显示根目录
var arr = {};
arr["open"] = true;
arr["isParent"] = true;
arr["drag"] = false;
arr[_this.config.treeName] = "全部";
arr[_this.config.treeIdKey] = 0;
array.push(arr);
}
_this.showTree(array);
} else {
var method = domTree.attr("method"); //请求方式
if(!isNull(otherParam)){
if(isNull(otherParam.parentId)){
otherParam.parentId = "0";
}
}debugger
fsCommon.invoke(url, otherParam, function(data) {
if(data.returnCode == 0) {
var array = data.rows;
if(!$.isArray(array)) {
array = new Array();
}
if(domTree.attr("isRoot") !== "0") { //是否显示根目录
var arr = {};
arr["open"] = true;
arr["isParent"] = true;
arr["drag"] = false;
arr[_this.config.treeName] = "全部";
arr[_this.config.treeIdKey] = 0;
array.push(arr);
}
_this.showTree(array);
} else {
//提示错误消息
fsCommon.warnMsg(data.returnMessage, {icon: 0});
}
}, false, method);
}
}
/**
* 刷新节点,tid不为空,刷新当前tid节点数据,否则刷新全部数据
*/
FsTree.prototype.refresh = function(tid) {
var _this = this;
var zTree = $.fn.zTree.getZTreeObj(_this.config.id),
type = "refresh",
silent = false;
var node2 = zTree.getNodeByTId(tid);
var treeId = null;
if(!isNull(node2)) {
treeId = node2[_this.config.treeIdKey];
}
_this.queryTree();
var domTree = $("#" + _this.config.id);
if(domTree.attr("isRoot") !== "0") { //是否显示根目录
node = zTree.getNodesByFilter(function(node) {
return node.level == 0
}, true);
}
if(!isNull(tid) && !isNull(treeId)) {
//选中刷新的菜单
var node3 = zTree.getNodeByParam(_this.config.treeIdKey, treeId, null);
zTree.selectNode(node3); //选中
zTree.setting.callback.onClick(null, zTree.setting.treeId, node3); //调用事件
}
}
/**
* 查询
*/
FsTree.prototype.query = function(param) {
//处理查询表单
var _this = this;
var zTree = $.fn.zTree.getZTreeObj(_this.config.id);
zTree.setting.async.otherParam = param;
//强制加载
$("#" + _this.config.id).attr("isLoad", "1");
_this.refresh();
}
/**
* 获取选中的节点
*/
FsTree.prototype.getCheckData = function(tid) {
var _this = this;
var zTree = $.fn.zTree.getZTreeObj(_this.config.id);
if(isNull(tid)) {
//判断是否复选框选择
var checkType = $("#" + _this.config.id).attr("checkType");
if("checkbox" == checkType || "radio" == checkType) {
return zTree.getCheckedNodes(true);
} else {
return zTree.getSelectedNodes();
}
}
var arr = new Array();
arr.push(zTree.getNodeByTId(tid));
return arr;
}
var fsTree = new FsTree();
exports("fsTree", fsTree);
});
\ No newline at end of file
......@@ -96,6 +96,9 @@ function isNull(str){
carousel: 'modules/carousel',// 轮播
code: 'modules/code', // 代码修饰器
jquery: 'modules/jquery', // DOM库(第三方)
fsButtonCommon: 'modules/ztree/js/fsButtonCommon',//ztree树依赖项
fsCommon: 'modules/ztree/js/fsCommon',//ztree树依赖项
fsTree: 'modules/ztree/js/fsTree',//ztree树
mobile: 'modules/mobile', // 移动大模块 | 若当前为开发目录,则为移动模块入口,否则为移动模块集合
'layui.all': '../layui.all', // PC模块合并版
};
......
var rowId = "";
layui.config({
base: basePath,
version: skyeyeVersion
}).define(['table', 'jquery', 'winui', 'form'], function (exports) {
}).define(['table', 'jquery', 'winui', 'form', 'fsCommon', 'fsTree'], function (exports) {
winui.renderColor();
var $ = layui.$,
form = layui.form,
fsTree = layui.fsTree,
fsCommon = layui.fsCommon,
table = layui.table;
//表格渲染
table.render({
id: 'messageTable',
......@@ -105,6 +108,77 @@ layui.config({
}});
}
/********* tree 处理 start *************/
var trees = {};
var treeDoms = $("ul.fsTree");
if(treeDoms.length > 0) {
$(treeDoms).each(function(i) {
var treeId = $(this).attr("id");
var funcNo = $(this).attr("funcNo");
var url = $(this).attr("url");
var tree = fsTree.render({
id: treeId,
funcNo: funcNo,
url: url,
clickCallback: ztreeOnAsyncSuccess,
getTree: getTree
});
if(treeDoms.length == 1) {
trees[treeId] = tree;
} else {
//深度拷贝对象
trees[treeId] = $.extend(true, {}, tree);
}
});
//绑定按钮事件
fsCommon.buttonEvent("tree", getTree);
}
function getTree(treeId) {
if($.isEmpty(trees)) {
fsCommon.warnMsg("未配置tree!");
return;
}
if($.isEmpty(treeId)) {
treeId = "treeDemo";
}
return trees[treeId];
}
//异步加载的方法
function ztreeOnAsyncSuccess(event, treeId, treeNode) {
// var url = reqBasePath + "sys012?parentId=";
// if(treeNode == undefined) {
// url += "0"; //默认ID是1.
// } else {
// url += treeNode.id; //动态获取选中节点的ID
// }
// AjaxPostUtil.request({url:url, params:"", type:'json', callback:function(jsonData){
// if(jsonData.returnCode == 0){
// if(jsonData.total != 0) {
// if(treeNode == undefined) {
// //zTreeObj.addNodes(null,data,true);// 如果是根节点,那么就在null后面加载数据
// $.fn.zTree.getZTreeObj("menuListUl").addNodes(null, jsonData.rows, true);
// } else {
// // zTreeObj.addNodes(treeNode,jsonData,true);//如果是加载子节点,那么就是父节点下面加载
// $.fn.zTree.getZTreeObj("menuListUl").addNodes(treeNode, jsonData.rows, true); //这里注意,不要添加#
// zTreeObj.updateNode(treeNode);
// }
// }
// //$.fn.zTree.getZTreeObj("bindOrganization").expandAll(true);
// //zTreeObj.updateNode(treeNode);
// $.fn.zTree.getZTreeObj("menuListUl").expandNode(treeNode, true, false, false); // 将新获取的子节点展开
// }else{
// top.winui.window.msg(jsonData.returnMessage, {icon: 2,time: 2000});
// }
// }});
}
/********* tree 处理 end *************/
//刷新数据
$("body").on("click", "#reloadTable", function(){
loadTable();
......
var rowId = "";
layui.config({
base: basePath,
version: skyeyeVersion
}).define(['table', 'jquery', 'winui', 'form'], function (exports) {
winui.renderColor();
var $ = layui.$,
form = layui.form,
table = layui.table;
//表格渲染
table.render({
id: 'messageTable',
elem: '#messageTable',
method: 'post',
url: reqBasePath + 'sys006',
where:{menuName:$("#menuName").val(), menuUrl:$("#menuUrl").val()},
even:true, //隔行变色
page: true,
limits: [8, 16, 24, 32, 40, 48, 56],
limit: 8,
cols: [[
{ field: 'id', type: 'checkbox' },
{ field: 'menuName', title: '角色名称', width: 120 },
{ field: 'menuIcon', title: '角色描述', width: 520 },
{ field: 'createTime', title: '创建时间', width: 180 },
{ field: 'userName', title: '创建人', width: 150 },
{ title: '操作', fixed: 'right', align: 'center', width: 120, toolbar: '#tableBar'}
]]
});
table.on('tool(messageTable)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'del') { //删除
del(data, obj);
}else if (layEvent === 'edit') { //编辑
edit(data);
}
});
//搜索表单
form.render();
form.on('submit(formSearch)', function (data) {
//表单验证
if (winui.verifyForm(data.elem)) {
loadTable();
}
return false;
});
//删除
function del(data, obj){
var msg = obj ? '确认删除菜单【' + obj.data.menuName + '】吗?' : '确认删除选中数据吗?';
layer.confirm(msg, { icon: 3, title: '删除系统菜单' }, function (index) {
layer.close(index);
//向服务端发送删除指令
AjaxPostUtil.request({url:reqBasePath + "sys011", params:{rowId: data.id}, type:'json', callback:function(json){
if(json.returnCode == 0){
top.winui.window.msg("删除成功", {icon: 1,time: 2000});
loadTable();
}else{
top.winui.window.msg(json.returnMessage, {icon: 2,time: 2000});
}
}});
});
}
//编辑
function edit(data){
rowId = data.id;
_openNewWindows({
url: "../../tpl/sysevemenu/sysevemenuedit.html",
title: "编辑用户",
pageId: "sysevemenuedit",
callBack: function(refreshCode){
if (refreshCode == '0') {
top.winui.window.msg("操作成功", {icon: 1,time: 2000});
loadTable();
} else if (refreshCode == '-9999') {
top.winui.window.msg("操作失败", {icon: 2,time: 2000});
}
}});
}
//刷新数据
$("body").on("click", "#reloadTable", function(){
loadTable();
});
//新增菜单
$("body").on("click", "#addBean", function(){
_openNewWindows({
url: "../../tpl/sysevemenu/sysevemenuadd.html",
title: "新增菜单",
pageId: "sysevemenuadd",
callBack: function(refreshCode){
if (refreshCode == '0') {
top.winui.window.msg("操作成功", {icon: 1,time: 2000});
loadTable();
} else if (refreshCode == '-9999') {
top.winui.window.msg("操作失败", {icon: 2,time: 2000});
}
}});
});
function loadTable(){
table.reload("messageTable", {where:{menuName:$("#menuName").val(), menuUrl:$("#menuUrl").val()}});
}
exports('sysevemenulist', {});
});
......@@ -6,6 +6,8 @@
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
<link href="../../assets/lib/layui/lay/modules/ztree/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" />
<link href="../../assets/lib/layui/lay/modules/contextMenu/jquery.contextMenu.min.css" rel="stylesheet" />
</head>
<body>
<div class="txtcenter" style="width:700px;margin:0 auto;padding-top:20px;">
......@@ -29,6 +31,7 @@
</div>
</form>
</div>
<div class="winui-toolbar">
<div class="winui-tool">
<button id="reloadTable" class="winui-toolbtn"><i class="fa fa-refresh" aria-hidden="true"></i>刷新数据</button>
......@@ -36,15 +39,28 @@
<!-- <button id="deleteBeans" class="winui-toolbtn"><i class="fa fa-trash" aria-hidden="true"></i>删除选中</button> -->
</div>
</div>
<div style="margin:auto 10px;">
<table id="messageTable" lay-filter="messageTable"></table>
<script type="text/html" id="tableBar">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</div>
<div class="layui-row">
<div class="layui-col-xs2">
<ul id="treeDemo" class="ztree fsTree" method="get" isRoot="1" url="sys012"
treeIdKey="id" inputs="parentId" treePIdKey="pId" treeName="name"></ul>
</div>
<div class="layui-col-xs10">
<div style="margin:auto 10px;">
<table id="messageTable" lay-filter="messageTable"></table>
</div>
</div>
</div>
<script type="text/html" id="tableBar">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript" src="../../assets/lib/layui/lay/modules/jquery.min.js"></script>
<script type="text/javascript" src="../../assets/lib/layui/lay/modules/contextMenu/jquery.contextMenu.min.js"></script>
<script type="text/javascript" src="../../assets/lib/layui/lay/modules/ztree/js/jquery.ztree.all.min.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/sysevemenu/'}).use('sysevemenulist');
</script>
......
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
</head>
<body>
<div class="txtcenter" style="width:700px;margin:0 auto;padding-top:20px;">
<form class="layui-form layui-form-pane" action="" autocomplete="off">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">角色名称</label>
<div class="layui-input-inline">
<input type="text" id="roleName" name="roleName" placeholder="请输入角色名称" class="layui-input" />
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block" style="margin:0;">
<button class="layui-btn" lay-submit lay-filter="formSearch">搜索</button>
</div>
</div>
</form>
</div>
<div class="winui-toolbar">
<div class="winui-tool">
<button id="reloadTable" class="winui-toolbtn"><i class="fa fa-refresh" aria-hidden="true"></i>刷新数据</button>
<button id="addBean" class="winui-toolbtn"><i class="fa fa-plus" aria-hidden="true"></i>新增角色</button>
<!-- <button id="deleteBeans" class="winui-toolbtn"><i class="fa fa-trash" aria-hidden="true"></i>删除选中</button> -->
</div>
</div>
<div style="margin:auto 10px;">
<table id="messageTable" lay-filter="messageTable"></table>
<script type="text/html" id="tableBar">
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
</div>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/syseverole/'}).use('syseverolelist');
</script>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册