From 8b3261b6c90eeadfffd4e8cfb0efe44c52b61aaf Mon Sep 17 00:00:00 2001 From: Xia Kaixiang Date: Mon, 22 Apr 2019 16:00:05 +0800 Subject: [PATCH] =?utf8?q?=E4=B8=BB=E5=8A=9F=E8=83=BD=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../dlpay/framework/dao/FunctionDao.java | 5 + .../dlpay/framework/domain/TFunction.java | 11 + .../dlpay/framework/domain/TOperator.java | 19 + .../dlpay/framework/security/OperUtil.java | 68 + .../controller/security_controller.kt | 23 +- .../kotlin/com/supwisdom/dlpay/security.kt | 2 + .../system/controller/system_controller.kt | 1 + .../service/impl/system_service_impl.kt | 52 + .../dlpay/system/service/system_service.kt | 19 + .../resources/static/custom/css/admin.css | 704 ++++++++ .../static/{payapi => custom}/css/login.css | 0 .../static/custom/css/theme-blue.css | 102 ++ .../{payapi => custom}/images/bg_login.png | Bin .../resources/static/custom/images/head.png | Bin 0 -> 53185 bytes .../static/{payapi => custom}/images/logo.png | Bin .../resources/static/custom/module/admin.js | 327 ++++ .../module/formSelects/formSelects-v4.all.js | 1415 +++++++++++++++++ .../module/formSelects/formSelects-v4.css | 156 ++ .../module/formSelects/formSelects-v4.js | 1412 ++++++++++++++++ .../resources/static/custom/module/index.js | 158 ++ .../custom/module/treetable-lay/treetable.css | 17 + .../custom/module/treetable-lay/treetable.js | 198 +++ src/main/resources/static/libs/q.js | 100 ++ .../zTree/css/metroStyle/img/line_conn.png | Bin 0 -> 933 bytes .../libs/zTree/css/metroStyle/img/loading.gif | Bin 0 -> 381 bytes .../libs/zTree/css/metroStyle/img/metro.gif | Bin 0 -> 4679 bytes .../libs/zTree/css/metroStyle/img/metro.png | Bin 0 -> 5283 bytes .../libs/zTree/css/metroStyle/metroStyle.css | 96 ++ .../zTree/css/zTreeStyle/img/line_conn.gif | Bin 0 -> 45 bytes .../libs/zTree/css/zTreeStyle/img/loading.gif | Bin 0 -> 381 bytes .../css/zTreeStyle/img/zTreeStandard.gif | Bin 0 -> 5564 bytes .../css/zTreeStyle/img/zTreeStandard.png | Bin 0 -> 11173 bytes .../libs/zTree/css/zTreeStyle/zTreeStyle.css | 97 ++ .../libs/zTree/js/jquery.ztree.all-3.5.min.js | 161 ++ src/main/resources/templates/index.html | 584 ++----- src/main/resources/templates/login.html | 6 +- 36 files changed, 5276 insertions(+), 457 deletions(-) create mode 100644 src/main/java/com/supwisdom/dlpay/framework/security/OperUtil.java create mode 100644 src/main/kotlin/com/supwisdom/dlpay/system/controller/system_controller.kt create mode 100644 src/main/kotlin/com/supwisdom/dlpay/system/service/impl/system_service_impl.kt create mode 100644 src/main/kotlin/com/supwisdom/dlpay/system/service/system_service.kt create mode 100755 src/main/resources/static/custom/css/admin.css rename src/main/resources/static/{payapi => custom}/css/login.css (100%) create mode 100755 src/main/resources/static/custom/css/theme-blue.css rename src/main/resources/static/{payapi => custom}/images/bg_login.png (100%) create mode 100755 src/main/resources/static/custom/images/head.png rename src/main/resources/static/{payapi => custom}/images/logo.png (100%) create mode 100755 src/main/resources/static/custom/module/admin.js create mode 100755 src/main/resources/static/custom/module/formSelects/formSelects-v4.all.js create mode 100755 src/main/resources/static/custom/module/formSelects/formSelects-v4.css create mode 100755 src/main/resources/static/custom/module/formSelects/formSelects-v4.js create mode 100755 src/main/resources/static/custom/module/index.js create mode 100755 src/main/resources/static/custom/module/treetable-lay/treetable.css create mode 100755 src/main/resources/static/custom/module/treetable-lay/treetable.js create mode 100755 src/main/resources/static/libs/q.js create mode 100755 src/main/resources/static/libs/zTree/css/metroStyle/img/line_conn.png create mode 100755 src/main/resources/static/libs/zTree/css/metroStyle/img/loading.gif create mode 100755 src/main/resources/static/libs/zTree/css/metroStyle/img/metro.gif create mode 100755 src/main/resources/static/libs/zTree/css/metroStyle/img/metro.png create mode 100755 src/main/resources/static/libs/zTree/css/metroStyle/metroStyle.css create mode 100755 src/main/resources/static/libs/zTree/css/zTreeStyle/img/line_conn.gif create mode 100755 src/main/resources/static/libs/zTree/css/zTreeStyle/img/loading.gif create mode 100755 src/main/resources/static/libs/zTree/css/zTreeStyle/img/zTreeStandard.gif create mode 100755 src/main/resources/static/libs/zTree/css/zTreeStyle/img/zTreeStandard.png create mode 100755 src/main/resources/static/libs/zTree/css/zTreeStyle/zTreeStyle.css create mode 100755 src/main/resources/static/libs/zTree/js/jquery.ztree.all-3.5.min.js diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/FunctionDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/FunctionDao.java index d846c256..e881f2ce 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/dao/FunctionDao.java +++ b/src/main/java/com/supwisdom/dlpay/framework/dao/FunctionDao.java @@ -2,8 +2,13 @@ package com.supwisdom.dlpay.framework.dao; import com.supwisdom.dlpay.framework.domain.TFunction; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface FunctionDao extends JpaRepository { + @Query("select distinct t from TFunction t,TRoleFunction a, TOperRole b where t.id=a.functionId and a.roleId=b.roleId and b.operid=?1 order by t.orderNum ") + List getTFunctionsByOperid(String operid); } diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java index 7ccab750..5b7beab8 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java +++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java @@ -28,6 +28,9 @@ public class TFunction { @Column(name="ORDER_NUM", precision = 9) private Integer orderNum; + @Column(name="MENU_ICON", precision = 9) + private String menuIcon; + @Column(name="CREATETIME", length = 14) private String createtime; @@ -82,6 +85,14 @@ public class TFunction { this.orderNum = orderNum; } + public String getMenuIcon() { + return menuIcon; + } + + public void setMenuIcon(String menuIcon) { + this.menuIcon = menuIcon; + } + public String getCreatetime() { return createtime; } diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java index 83885d37..62853029 100644 --- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java +++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java @@ -41,6 +41,25 @@ public class TOperator implements UserDetails { @Transient private Collection authorities; //权限 + public TOperator() { + } + + public TOperator(String opercode, String opername) { + this.opercode = opercode; + this.opername = opername; + } + + public TOperator(String opercode, String opertype, String opername, String operpwd, String status, String opendate, String closedate, Collection authorities) { + this.opercode = opercode; + this.opertype = opertype; + this.opername = opername; + this.operpwd = operpwd; + this.status = status; + this.opendate = opendate; + this.closedate = closedate; + this.authorities = authorities; + } + public String getOperid() { return operid; } diff --git a/src/main/java/com/supwisdom/dlpay/framework/security/OperUtil.java b/src/main/java/com/supwisdom/dlpay/framework/security/OperUtil.java new file mode 100644 index 00000000..d576b41a --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/framework/security/OperUtil.java @@ -0,0 +1,68 @@ +package com.supwisdom.dlpay.framework.security; + +import com.supwisdom.dlpay.framework.domain.TOperator; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContextHolder; + +import java.util.Collection; + +public class OperUtil { + + public static TOperator getCurrentOper() { + Authentication au = SecurityContextHolder.getContext() + .getAuthentication(); + if (au == null) + return null; + if (au.getPrincipal() == null) + return null; + if (au != null && au.getPrincipal() instanceof TOperator) { + return (TOperator) au.getPrincipal(); + } else { + TOperator oper = new TOperator(); + oper.setOpername(au.getPrincipal().toString()); + oper.setOperpwd(au.getCredentials() == null ? null : au + .getCredentials().toString()); + return oper; + } + } + + public static String getCurrentOperid() { + TOperator oper = getCurrentOper(); + if (oper == null) + return null; + return oper.getOperid() == null ? oper.getOpercode() : oper.getOperid(); + } + + public static boolean isLogined() { + Authentication au = SecurityContextHolder.getContext() + .getAuthentication(); + if (au == null) + return false; + if (au.getPrincipal() == null) + return false; + if (au.getPrincipal() instanceof TOperator) + return true; + return false; + } + + public static boolean isAdmin() { + TOperator loginOper = OperUtil.getCurrentOper(); + if (loginOper != null) { + Collection gas = loginOper.getAuthorities(); + if (gas == null) { + return false; + } + boolean flag = false; + for (GrantedAuthority grantedAuthority : gas) { + if ("ROLE_ADMIN".equals(grantedAuthority.getAuthority())) { + flag = true; + } + } + return flag; + } else { + return false; + } + } + +} diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt index e1c06aab..4df76c68 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt @@ -7,9 +7,13 @@ import com.supwisdom.dlpay.framework.dao.ApiClientDao import com.supwisdom.dlpay.framework.security.validate.ImageCodeUtil import com.supwisdom.dlpay.framework.security.validate.VerifyCode import com.supwisdom.dlpay.framework.domain.ApiClientRedis +import com.supwisdom.dlpay.framework.domain.TOperator import com.supwisdom.dlpay.framework.redisrepo.ApiClientRepository +import com.supwisdom.dlpay.framework.security.OperUtil import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.framework.util.HmacUtil +import com.supwisdom.dlpay.system.service.CommonService +import com.supwisdom.dlpay.system.service.FunctionService import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpStatus import org.springframework.http.ResponseEntity @@ -17,9 +21,9 @@ import org.springframework.security.core.context.SecurityContextHolder import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler import org.springframework.social.connect.web.HttpSessionSessionStrategy import org.springframework.stereotype.Controller +import org.springframework.ui.Model import org.springframework.web.bind.annotation.* import org.springframework.web.context.request.ServletWebRequest -import sun.plugin.liveconnect.SecurityContextHelper import java.util.* import javax.imageio.ImageIO import javax.servlet.http.HttpServletRequest @@ -119,13 +123,15 @@ data class LoginForm(val username: String, val password: String, val imageCode: @Controller class WebHomeController { - - @GetMapping("/index") - fun homeView() = "index" + @Autowired + lateinit var functionService: FunctionService + @Autowired + lateinit var commonService: CommonService @GetMapping("/login") fun loginView() = "login" + @PostMapping("/login/form") fun loginForm(form: LoginForm): ResponseEntity { return ResponseEntity.ok(ResponseBodyBuilder.create() @@ -139,4 +145,13 @@ class WebHomeController { } return "redirect:/login?logout" } + + @GetMapping("/index") + fun homeView(model: Model): String { + model.addAttribute("loginOper", TOperator("111","开发测试")) + val funclist = functionService.getFunctionsByOperid("111") + model.addAttribute("menus", functionService.getMenuTree(funclist, "-1")) + model.addAttribute("payapiVersion",commonService.getSystemVersion()) + return "index" + } } diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt index 7998f237..7347908d 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/security.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt @@ -131,6 +131,8 @@ class WebSecurityConfig { .anyRequest().hasRole("THIRD_COMMON") .and() .csrf().ignoringAntMatchers("/api/**") +// .anyRequest().authenticated() + // 注册 filter } } diff --git a/src/main/kotlin/com/supwisdom/dlpay/system/controller/system_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/system/controller/system_controller.kt new file mode 100644 index 00000000..7477a8f0 --- /dev/null +++ b/src/main/kotlin/com/supwisdom/dlpay/system/controller/system_controller.kt @@ -0,0 +1 @@ +package com.supwisdom.dlpay.system.controller \ No newline at end of file diff --git a/src/main/kotlin/com/supwisdom/dlpay/system/service/impl/system_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/system/service/impl/system_service_impl.kt new file mode 100644 index 00000000..8e017d5e --- /dev/null +++ b/src/main/kotlin/com/supwisdom/dlpay/system/service/impl/system_service_impl.kt @@ -0,0 +1,52 @@ +package com.supwisdom.dlpay.system.service.impl + +import com.jcabi.manifests.Manifests +import com.supwisdom.dlpay.framework.dao.FunctionDao +import com.supwisdom.dlpay.framework.domain.TFunction +import com.supwisdom.dlpay.system.service.CommonService +import com.supwisdom.dlpay.system.service.FunctionService +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service +import java.util.HashMap + +@Service +class CommonServiceImpl : CommonService { + override fun getSystemVersion(): String { + try { + return Manifests.read("Payapi-Version") ?: "version 1.0" + } catch (ex: Exception) { + ex.printStackTrace() + return "unknown" + } + } +} + +@Service +class FunctionServiceImpl : FunctionService { + @Autowired + lateinit var functionDao: FunctionDao + + override fun getFunctionsByOperid(operid: String): List { + return functionDao.getTFunctionsByOperid(operid) ?: ArrayList(0) + } + + override fun getMenuTree(funcList: List, parentId: String): List> { + val list = java.util.ArrayList>() + for (func in funcList) { + if (parentId == func.parentId) { + val map = HashMap() + map["menuName"] = func.name + map["menuIcon"] = func.menuIcon + if ("#" == func.menuUrl) { + map["menuUrl"] = "javascript:;" + } else { + map["menuUrl"] = func.menuUrl + } + map["subMenus"] = getMenuTree(funcList, func.id) + list.add(map) + } + } + return list + } + +} \ No newline at end of file diff --git a/src/main/kotlin/com/supwisdom/dlpay/system/service/system_service.kt b/src/main/kotlin/com/supwisdom/dlpay/system/service/system_service.kt new file mode 100644 index 00000000..71337324 --- /dev/null +++ b/src/main/kotlin/com/supwisdom/dlpay/system/service/system_service.kt @@ -0,0 +1,19 @@ +package com.supwisdom.dlpay.system.service + +import com.supwisdom.dlpay.framework.domain.TFunction +import org.springframework.transaction.annotation.Propagation +import org.springframework.transaction.annotation.Transactional + +interface CommonService{ + fun getSystemVersion(): String; +} + +interface FunctionService { + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true) + fun getFunctionsByOperid(operid: String): List + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true) + fun getMenuTree(funcList: List, parentId: String): List> + + +} \ No newline at end of file diff --git a/src/main/resources/static/custom/css/admin.css b/src/main/resources/static/custom/css/admin.css new file mode 100755 index 00000000..608c847c --- /dev/null +++ b/src/main/resources/static/custom/css/admin.css @@ -0,0 +1,704 @@ +/** EasyWeb */ +html { + background-color: #f2f2f2; + color: #666; +} + +/** header样式 */ +/** 导航栏下面的线条 */ +.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar { + height: 2px; + background-color: #03152A; + top: 0 !important; +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-item { + line-height: 50px; /** 高度重写 */ +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-item .layui-nav-child { + top: 55px; +} + +.layui-layout-admin .layui-header .layui-nav-item .layui-icon { + font-size: 16px; /** 图标大小 */ +} + +.layui-layout-admin .layui-header .layui-layout-left { + left: 220px; + padding: 0 10px; + transition: all .3s; +} + +.layui-layout-admin .layui-header .layui-layout-right { + padding: 0; +} + +/** 重写header的背景色和字体颜色 */ +.layui-layout-admin .layui-header { + background-color: #fff; + height: 50px; + box-shadow: 0 1px 4px 0 rgba(0, 21, 41, .08); +} + +.layui-layout-admin .layui-header a { + color: #333; + padding: 0 15px; +} + +.layui-layout-admin .layui-header a:hover { + color: #333; +} + +.layui-layout-admin .layui-header .layui-nav-child a { + color: #333 !important; +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-more { + border-color: #666 transparent transparent; +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-mored { + border-color: transparent transparent #666; +} + +/** logo部分样式 */ +.layui-layout-admin .layui-header .layui-logo { + width: 220px; + background-color: #001529; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15); + color: #eee; + font-size: 16px; + font-family: Myriad Pro, Helvetica Neue, Arial, Helvetica, sans-serif; + font-weight: 300; + overflow: hidden; + line-height: 50px; + transition: all .3s; +} + +.layui-layout-admin .layui-header .layui-logo img { + height: 40px; +} + +.layui-layout-admin .layui-header .layui-logo cite { + font-style: normal; +} + +.layui-layout-admin .layui-header .layui-nav-img { + margin-right: 5px; +} + +.layui-layout-admin .layui-header .layui-nav-img + cite { + margin-right: 5px; +} + +.layui-layout-admin .layui-header .layui-nav-child dd { + text-align: center; +} + +.layui-layout-admin .layui-header a { + cursor: pointer; +} + +/** //header样式结束 */ + +/** 侧边栏样式 */ +.layui-layout-admin .layui-side .layui-side-scroll { + width: 240px; +} + +.layui-layout-admin .layui-side { + top: 50px; + width: 220px; + background-color: #001529; + transition: all .3s; + -webkit-transition: all .3s; +} + +.layui-layout-admin .layui-side .layui-nav { + width: 220px; + background-color: transparent; +} + +.layui-layout-admin .layui-side .layui-nav .layui-nav-item > a:hover { + background: transparent; +} + +.layui-layout-admin .layui-side .layui-nav .layui-nav-item > .layui-nav-child { + padding: 5px 0; + background-color: rgba(0, 0, 0, .3) !important; +} + +.layui-layout-admin .layui-side .layui-nav .layui-nav-more { + right: 15px; +} + +.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child a { + padding-left: 50px; /** 导航字体位置 */ +} + +.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child .layui-nav-child a { + padding-left: 70px; +} + +.layui-layout-admin .layui-side .layui-nav .layui-nav-item > a { + padding-top: 8px; + padding-bottom: 8px; +} + +/** 侧边栏样式结束 */ + +/** 主体部分样式 */ +.layui-layout-admin .layui-body { + left: 220px; + top: 50px; + transition: left .3s; + overflow-y: scroll; + padding: 15px; +} + +/** //主体部分样式结束 */ + +/** 底部样式 */ +.layui-layout-admin .layui-footer { + left: 220px; + background: #fff; + transition: all .3s; +} + +/** 底部样式结束 */ + +/** 侧导航折叠样式PC */ +.layui-layout-admin.admin-nav-mini .layui-header .layui-logo { + width: 60px; +} + +.layui-layout-admin.admin-nav-mini .layui-header .layui-logo cite { + display: none; +} + +.layui-layout-admin.admin-nav-mini .layui-header .layui-layout-left { + left: 60px; +} + +.layui-layout-admin.admin-nav-mini .layui-side { + width: 60px; +} + +.layui-layout-admin.admin-nav-mini .layui-side .layui-nav { + width: 60px; +} + +.layui-layout-admin.admin-nav-mini .layui-side-scroll { + width: 80px; +} + +/** 侧导航隐藏文字 */ +.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item > a > cite { + display: none; +} + +.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item > a .layui-nav-more { + display: none; +} + +.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item > a { + overflow: visible; +} + +.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-itemed .layui-nav-child { + display: none; +} + +.layui-layout-admin.admin-nav-mini .layui-body { + left: 60px; +} + +.layui-layout-admin.admin-nav-mini .layui-footer { + left: 60px; +} + +.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-itemed > a { + background: rgba(0, 0, 0, .3); +} + +/** 修改折叠的图标 */ +.layui-layout-admin.admin-nav-mini .layui-header .layui-icon-shrink-right:before { + content: "\e66b"; +} + +/** //侧导航折叠样式结束 */ + +/** 移动设备样式 */ +@media screen and (max-width: 750px) { + .layui-layout-admin .layui-side { + position: fixed; + left: -260px; + z-index: 10000; + } + + .layui-layout-admin .layui-body { + left: 0; + } + + .layui-layout-admin .layui-footer { + left: 0; + } + + .layui-layout-admin .layui-header .layui-logo { + left: -260px; + } + + .layui-layout-admin .layui-header .layui-layout-left { + left: 0; + } + + .layui-layout-admin .layui-header .layui-icon-shrink-right:before { + content: "\e66b"; + } + + /* 移动设备侧导航折叠样式 */ + .layui-layout-admin.admin-nav-mini .layui-header .layui-logo { + width: 220px; + left: 0; + z-index: 10001; + } + + .layui-layout-admin.admin-nav-mini .layui-header { + z-index: auto; + } + + .layui-layout-admin.admin-nav-mini .layui-header .layui-logo cite { + display: inline-block; + } + + .layui-layout-admin.admin-nav-mini .layui-header .layui-layout-left { + left: 0; + } + + .layui-layout-admin.admin-nav-mini .layui-side { + width: 220px; + left: 0; + } + + .layui-layout-admin.admin-nav-mini .layui-side .layui-nav { + width: 220px; + } + + .layui-layout-admin.admin-nav-mini .layui-side-scroll { + width: 240px; + } + + .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item > a > cite { + display: inline-block; + } + + .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item > a .layui-nav-more { + display: inline-block; + } + + .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item > a { + overflow: hidden; + } + + .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-itemed > .layui-nav-child { + display: block; + } + + .layui-layout-admin.admin-nav-mini .layui-body { + left: 0; + } + + .layui-layout-admin.admin-nav-mini .layui-footer { + left: 0; + } + + /** 移动设备遮罩层 */ + .layui-layout-admin.admin-nav-mini .site-mobile-shade { + content: ''; + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, .2); + z-index: 9999; + cursor: pointer; + } + + .layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-itemed > a { + background: transparent; + } + + .layui-layout-admin.admin-nav-mini .layui-header .layui-icon-shrink-right:before { + content: "\e668"; + } +} + +/** //移动设备样式结束 */ + +/** 右侧弹窗样式 */ +.layui-layer.layui-layer-adminRight { + top: 50px !important; + bottom: 0; + box-shadow: 1px 1px 10px rgba(0, 0, 0, .1); + border-radius: 0; + overflow: auto; +} + +/** 消息列表样式 */ +.message-list { +} + +.message-list-item { + padding: 10px 24px; + border-bottom: 1px solid #e8e8e8; + -ms-flex-align: start; + align-items: flex-start; + display: flex; + -ms-flex: 1 1; + flex: 1 1; +} + +.message-list-item:hover { + background: #F2F2F2; +} + +.message-item-icon { + width: 40px; + height: 40px; + margin-right: 16px; + display: block; + margin-top: 4px; +} + +.message-item-right { + display: block; + flex: 1 0; +} + +.message-item-title { + font-size: 14px; + color: rgba(0, 0, 0, .65); +} + +.message-item-text { + color: rgba(0, 0, 0, .45); + font-size: 12px; +} + +/** //消息列表样式结束 */ + +/** 主体部分标题样式 */ +.layui-card-header .header-title { + display: inline; + font-size: 16px; +} + +/** 表格搜索框样式 */ +.search-input { + width: 150px; + display: inline-block; + height: 36px; + vertical-align: middle; + padding: 3px 6px; +} + +/** 重写layui默认按钮的高度,因为按钮跟输入框不一样高特别丑 */ +.layui-btn:not(.layui-btn-lg ):not(.layui-btn-sm):not(.layui-btn-xs) { + height: 34px; + line-height: 34px; +} + +/** 如果按钮加图标减少内边距 */ +.icon-btn { + padding: 0 8px; +} + +.layui-form.toolbar .layui-btn + .layui-btn { + margin-left: 15px; +} + +.model-form-footer .layui-btn + .layui-btn { + margin-left: 15px; +} + +.layui-table-cell .layui-btn + .layui-btn { + margin-left: 5px; +} + +/** 表格上方工具栏样式 */ +.layui-form.toolbar { + color: #333; +} + +.layui-form.toolbar .layui-form-select input { + height: 35px; + line-height: 35px; + width: 150px; + overflow: hidden; +} + +.layui-form.toolbar .layui-form-select { + display: inline-block; +} + +/* 表单弹窗样式 */ +.model-form { + padding-top: 30px; + padding-right: 45px; +} + +.model-form-footer { + text-align: right; +} + +/** dialog超出显示 */ +.layui-layout-body .layui-layer-page .layui-layer-content { + overflow: visible; +} + +/* layui文档官网右侧弹窗目录列表的样式 */ +.site-dir li { + line-height: 26px; + margin-left: 20px; + overflow: visible; + list-style-type: disc; +} + +/** laydate加图标 */ +.date-icon { + background-image: url(../images/icon_date.png); + background-repeat: no-repeat; + background-position: right center; +} + +/** 辅助样式 */ +.layui-link { + color: #029789 !important; +} + +.layui-link:hover { + opacity: .8; +} + +.pull-right { + float: right; +} + +.inline-block { + display: inline-block; +} + +/** 卡片header里面的徽章样式调整 */ +.layui-card .layui-card-header .layui-badge.pull-right { + top: 50%; + margin-top: -9px; +} + +/** 特大字体 */ +.lay-big-font { + font-size: 36px; + color: #666; + line-height: 36px; + padding: 5px 0 10px; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; +} + +/** 超链接样式 */ +.layui-text a:not(.layui-btn) { + color: #01AAED; +} + +.layui-text a:not(.layui-btn):hover { + text-decoration: underline; +} + +/** loading组件样式 */ +.admin-loading { + position: absolute; + left: 50%; + top: 50%; + margin: -16px -15px; + font-size: 30px; + color: #c2c2c2 +} + +/** admin选项卡样式 */ +/** 调整header阴影 */ +.layui-layout-admin.open-tab .layui-header { + box-shadow: 0 1px 1px 0 rgba(0, 21, 41, .05); +} + +.layui-layout-admin.open-tab .layui-body { + padding: 0; + overflow: hidden; +} + +.layui-layout-admin .layui-body .layui-tab { + margin: 0; + overflow: hidden; +} + +/** 开启选项卡后让tab-content样式为以前的layui-body样式 */ +.layui-layout-admin .layui-body .layui-tab .layui-tab-content .layui-tab-item { + position: absolute; + bottom: 0; + overflow-y: scroll; + padding: 15px; + right: 0; + top: 40px; + left: 0; +} + +/** 选项卡标题样式 */ +.layui-layout-admin .layui-body .layui-tab .layui-tab-title { + height: 40px; + line-height: 40px; + padding: 0 80px 0 40px; + background-color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .1); + position: absolute; + right: 0; + z-index: 999; + border: none; + overflow: hidden; +} + +.layui-layout-admin .layui-body .layui-tab .layui-tab-title li { + min-width: 0; + line-height: 40px; + max-width: 160px; + text-overflow: ellipsis; + overflow: hidden; + border-right: 1px solid #f6f6f6; + vertical-align: top; +} + +.layui-layout-admin .layui-body .layui-tab .layui-tab-title .layui-tab-bar { + display: none; +} + +.layui-layout-admin .layui-body .layui-tab .layui-tab-title li.layui-this, +.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:hover { + background-color: #f6f6f6; +} + +.layui-layout-admin .layui-body .layui-tab .layui-tab-title li.layui-this:after { + width: 100%; + border: none; + height: 2px; + background-color: #292B34; + border-radius: 0; +} + +/** tab关闭按钮样式 */ +.layui-layout-admin .layui-body .layui-tab .layui-tab-title li .layui-tab-close { + width: 16px; + height: 16px; + line-height: 16px; + border-radius: 50%; + font-size: 12px; +} + +.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:first-child .layui-tab-close { + display: none; /** 第一个选项卡不可关闭 */ +} + +/** 选项卡其他操作按钮样式 */ +.layui-layout-admin .layui-body .admin-tabs-control { + position: absolute; + top: 0; + width: 40px; + height: 40px; + line-height: 40px; + text-align: center; + cursor: pointer; + transition: all .3s; + box-sizing: border-box; + border-left: 1px solid #f6f6f6; + z-index: 1000; + visibility: hidden; /** 默认隐藏 */ + background-color: white; +} + +.layui-layout-admin.open-tab .layui-body .admin-tabs-control { + visibility: visible; +} + +.layui-layout-admin .layui-body .admin-tabs-control:hover { + background-color: #f6f6f6 +} + +.layui-layout-admin .layui-body .layui-icon-prev { + left: 0; + border-left: none; + border-right: 1px solid #f6f6f6; +} + +.layui-layout-admin .layui-body .layui-icon-next { + right: 40px; +} + +.layui-layout-admin .layui-body .layui-icon-down { + right: 0; +} + +.admin-tabs-select.layui-nav { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + padding: 0; + background: 0 0; +} + +.admin-tabs-select.layui-nav .layui-nav-item { + line-height: 40px +} + +.admin-tabs-select.layui-nav .layui-nav-item > a { + height: 40px +} + +.admin-tabs-select.layui-nav .layui-nav-item a { + color: #666 +} + +.admin-tabs-select.layui-nav .layui-nav-child { + top: 40px; + left: auto; + right: 0 +} + +.admin-tabs-select.layui-nav .layui-nav-child dd.layui-this, +.admin-tabs-select.layui-nav .layui-nav-child dd.layui-this a { + background-color: #f2f2f2 !important; + color: #333 +} + +.admin-tabs-select.layui-nav .layui-nav-bar, .admin-tabs-select.layui-nav .layui-nav-more { + display: none; +} + +.layui-fluid { + padding: 15px; +} + +body.layui-fluid { + overflow-y: scroll; +} + +.admin-iframe { + width: 100%; + height: 100%; +} + +.layui-layout-admin .layui-body.admin-iframe-body { + padding: 0; + overflow: hidden; +} diff --git a/src/main/resources/static/payapi/css/login.css b/src/main/resources/static/custom/css/login.css similarity index 100% rename from src/main/resources/static/payapi/css/login.css rename to src/main/resources/static/custom/css/login.css diff --git a/src/main/resources/static/custom/css/theme-blue.css b/src/main/resources/static/custom/css/theme-blue.css new file mode 100755 index 00000000..476b1bd2 --- /dev/null +++ b/src/main/resources/static/custom/css/theme-blue.css @@ -0,0 +1,102 @@ +/** logo部分样式 */ +.layui-layout-admin .layui-header .layui-logo { + background-color: #0085E8; + color: #fff; +} + +/** header样式 */ +.layui-layout-admin .layui-header { + background-color: #1E9FFF; +} + +.layui-layout-admin .layui-header a { + color: #fff; +} + +.layui-layout-admin .layui-header a:hover { + color: #fff; +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-more { + border-color: #fff transparent transparent; +} + +.layui-layout-admin .layui-header .layui-nav .layui-nav-mored { + border-color: transparent transparent #fff; +} + +/** 导航栏下面的线条 */ +.layui-layout-admin .layui-header .layui-nav .layui-this:after, .layui-layout-admin .layui-header .layui-nav-bar { + background-color: #fff; +} + +/** 侧边栏样式 */ +.layui-layout-admin .layui-side { + background-color: #344058; +} + +.layui-nav-tree .layui-nav-child dd.layui-this, .layui-nav-tree .layui-nav-child dd.layui-this a, .layui-nav-tree .layui-this, .layui-nav-tree .layui-this > a, .layui-nav-tree .layui-this > a:hover { + background-color: #1E9FFF; +} + +.layui-nav-tree .layui-nav-bar { + background-color: #1E9FFF; +} + +/** 主题颜色 */ + +/** 按钮 */ +.layui-btn:not(.layui-btn-primary):not(.layui-btn-normal):not(.layui-btn-warm):not(.layui-btn-danger):not(.layui-btn-disabled) { + background-color: #1E9FFF; +} + +.layui-btn.layui-btn-primary:hover { + border-color: #1E9FFF; +} + +/** 开关 */ +.layui-form-onswitch { + border-color: #1E9FFF; + background-color: #1E9FFF; +} + +/** 分页插件 */ +.layui-laypage .layui-laypage-curr .layui-laypage-em { + background-color: #1E9FFF; +} + +.layui-table-page .layui-laypage input:focus { + border-color: #1E9FFF !important; +} + +.layui-table-view select:focus { + border-color: #1E9FFF !important; +} + +.layui-table-page .layui-laypage a:hover { + color: #1E9FFF; +} + +/** 单选按钮 */ +.layui-form-radio > i:hover, .layui-form-radioed > i { + color: #1E9FFF; +} + +/** 下拉条目选中 */ +.layui-form-select dl dd.layui-this { + background-color: #1E9FFF; +} + +/** 选项卡 */ +.layui-tab-brief > .layui-tab-title .layui-this { + color: #1E9FFF; +} + +.layui-tab-brief > .layui-tab-more li.layui-this:after, .layui-tab-brief > .layui-tab-title .layui-this:after { + border-color: #1E9FFF !important; +} + +/** 面包屑导航 */ +.layui-breadcrumb a:hover { + color: #1E9FFF !important; +} \ No newline at end of file diff --git a/src/main/resources/static/payapi/images/bg_login.png b/src/main/resources/static/custom/images/bg_login.png similarity index 100% rename from src/main/resources/static/payapi/images/bg_login.png rename to src/main/resources/static/custom/images/bg_login.png diff --git a/src/main/resources/static/custom/images/head.png b/src/main/resources/static/custom/images/head.png new file mode 100755 index 0000000000000000000000000000000000000000..e298c8aa1ecc67f30cf542b4a21c2bb6486fb8c0 GIT binary patch literal 53185 zcmV)zK#{+RP)%kVnvyd)0ge3do9B}A{R7W3QvWoK< zV&scM&KHsT$HWMY_(LL~>(p+JW4_?WI`^@xL`M@|BRBgUAYN20+)ba-OM)-ubl_o*ZqMMm^6K}5)< z(r#owh#lI~jlSyaBFOuG3m@;xD@K{IhcI(mFUKc5BJ_CG5izjbfBbj_{QK4Q;0SU+ z^1YMg$!_7u?uif<-xj*wIEqVqZ)Y`Rf4Uat%$tnFDb}eQ4vJ`Mf{*bbVZ<%BR%wtF zQttQd3nZtmq145YI9`ji#IKly5v?t@nM{a@7yA#t<^Ag>W<>JU($ekl2NPn3Jo&|M z56{TLbmu%znJCRpOvq{F8EJCDqw+*?*se@4sql=5iB|G=zx6_;Xv^ZF`*qcYn^Shi zm0C_M(r`99A@iMOYA7K2p2^?{mV8@OVOfF}g(ujca7fkEj>Hb?!En1hsW5Vfm*A&( zlIPEH%2h7d*daZk-39&JaQPb1R14`|8Bvo4F|cs%2pCQbXmlL2r(lVxlzTC+hnG9< z%w&z2J)%*^K}--)!w1Hz19?fI{6qHc0wz%<@Ptu);ivESD8c#&A8#$EY&n|LJ+ne)5H;Se`tIZA7v&J3~6{6)+K)Xjk+Mj;c*tE z)5T};Wn4F2-zSmJ=*5%q&18?Sn3wEaatKYHd76<5O>jwsq>-jWv9%N~h8ff=7AnON zI{iU31L!GFbxyITWYf~Vd*wWjy5g;%AezSX1eEvfW>3kcra2p%e8v}KWG;5-O)G)g zgW5Xp1aR%fsRq$!YCUAs{rMH+Dy^vJf*<{mC64BplSCK@Xc=G;dao_JCmO^pHG`v? zSBh7PV|mn`Tw|$m9?Yvms7A6sS`8g9JzK3j%i_Csi`9(V#RyLAd&<#JT?R7~r5iO^<|H12uuJViKpBn^4_ezlgaJb(jV8}G9v@`AL4xsSoA z$qZsbt8Nf(V#MpK#fXTE429(TCTWri%cJ#agb7v#&j>BDut=rnQ?tiI=G)7l6N;Y- zp8K)3Ua1l;ahz5rJ~|@KCHUD)3jb;I)_5adTSSR|VsI`63Ym*eqtKF!rve@sAs8_;N(jVpmDsv}wP+{Ya=WXYp`kG&ko@F2bc}|-K0K21%hMSw zm#E`U%mig~lL$pFpye(n+(CYCPD~hsWekXkREi^brTh$!+EdO1!6`CA3CUM3Rd`t_ z#j_I=?-^1^Rbu97H9)sW0fzaI;JWF(9pNm@o~n!x!1y#zLoS9w`jj_jwY7~99v&2=j8wBzWmdDgRokF+mwU zGC}}mFhh8}IeI0_N^2Ft=ymeM1ZDEd2mui@D4Ut&_vRv!61;(^rq7$Z+AWP3P|^uG zpyu&N+IViw?h|i%lXUfPSiSNvj2)jMFN+KR#4+0a zJ~P6KU<_Tn(%Gxd3F$1JJ;hA0IPue$+85_%evj=41M=nhL$0$;MJ0UTbif2Gq!xeQ zPD^z>=nF0_c}!ts@lj`FLk(1EDNqh$3yJ9IT*?_x3L9a{CyAKNfSf5`7}CXv)eMLk z!Up*G^i)S@ahxZ=rk0%$_{zk*xobR?ubPJ4)lPcK)Fcr-2*s4GSe6cJ(u6PaUmv~z z2U)_xkr>vKU(2iJk*oRb>?T*JImC5c<<%dQ#-=bqoq6AhAq({r=Z;F;$qc!XC= z^u~9aUs;rAST3&iPM>1+#Mk%yuq`4@~5}ALbYXYXoUT8WE2(?rj%}F z95JIN8O2x28~1Wz#kEW`C&_nDl!I{LoP`^puE;fj>NlVR+;p2T*Q=O8B~pnQH%9a@ zA!fi^pNi2$okj-BI*`6dS}A`OxPt5G>}v%oVG(N2;D|7_BunDAZq|2< zgk!{;Zjdy3+%e7)g4K|I^W`qJBuPA@oqxw9sj@)wUzFPgG1$@1)w~=wBRDdVlV4uxJ{~Q75^!L1XtGucKhTNFO6`}R3cUDm@3_UwZi7ZJR zeZ4|FF(H8#1xj~j!-;i!b*)rIw+Z3lhuyLYip%P}e#XCAxKk4&I6si+RoUgWM^gB1 zMhBiK5r3M!TmCnW%g-dLIim_-c_kEjWQ1NTv7>@%y)dbLggDw~KjHGkj3ZQ&3UlRq zWJFG3q=w}Ic^+?JPs}9$WrDZte7a^vsOI)8^#1kYG3)TWaNij^pp`*2GoqZ`oY?Cp zbX9%DXgOSq)69r3Yw21D@CK9EzKu5!E?pBNjn#aYMiWwBfS$RdzgspvJL)_#(m5%{ z#cina8X&j*LgTJDg1z9bwQj_+h+8hfwKkdav>#Xo>UqVAElxT@Jn}2S*?+40X5?KN zuHo&mLR_k~$PtA(o^Z48{3ZXl!3~W2bjr5S*4Df4ZyeMs#?=7IVBHYPB1Vl)mc=Ls zsf!YXf1W3%PUYQ~>8e#_RK{axep$feCvc8%TdwpkU$XT?CHos_dBqg@;=wC33*d=o#_?e-9Zw@L2E)0_X(HfY;c-$0IIL_CP+ zv57n+6%sXdAhj|h%I?)mI6GZ3l!K#kv`joOq>Oe=5}{01F!SFZk8l-36+{di!Q&T7 zOwe|YPqG>5%1>@!MM(=YoHydp(a)5@gjnhk$B*a@C7WE6ESM)_w`8*-0}NFTezm(QY_MU{AUK{83Wx_;-{%1o;(jsteh`8q$GZ4LOy;{Qz=@N^ zT3ov^10Z%#cfN0>BmpgW2u76=N@UFB)d2jQug(a;GRK%=VfGA;ih#ySM5N-(VuH}C z>PTlCJE=)SOcyah1Tmt-{@Kr7$bquB>!uHpgw-lQj9;r?@@lb6Oe!p__GCEeEX8N$;bKT= z*9Kx^rNigXvEy{3!cJr*CJ1qeB6f_-{Ptppr;Rg8`REfWcBLoP^@G7BrzE&ZWx-K^ z8uu=nM7ddh_EeP!1JJ`v?eS8$cZAALV}?-WNlO*?{Y`ySznUZ%I#p$70Bq9?3wwHo zcZvntkL8P_^%gbfjS0%ZF9 zPjb;(r69)PRoTVBa=#iwtRa2+vE|V7-bs>dYQ0+|WCw1-lr}PwoSp-^BqB#8)*UfZ zBn5h1ny?q@$>GMCD%?1ue@}-3QbQ6^z-MZd{1}Ky$a6wcq32YGLt8J`q(Zf#v4udi zcI~t>V!2G7SYD$)16Bqdqqcp%+A!3qRj>viM`mhFIwLwQ~| zH|nhzwk*KPQOeI?C{5{;s+7mqIIQrGang=vHx->nftV=_CWNS7ouK2zK2IVlGGTUP zT~RsE9?H;IVfpy@4_l$?NFm(+w~^4fi@ud>CHmB~MO7eX34;m3(;KQpupQ%ye%%jc zJF-mEA|;_HHZ*1kqa_J~y&Q>XI+g@tmZN%>3&l+!Muo9_=|Nb#>M$O4n*@6H44TDc zbHgJSie&NAs4z$?NEq~aYRST2+HaQdzsPW2!f^2dA?pS#(w8SAvL&|{?cRku zrA%_pCisz|;v01%+F?`}C7aWMesY(b6a^1VO@%ARD4P|?%Bz9}%Z|c_-(||Pa^WC6 zm)FyRBW-MKV|Evr+7nJ7i_@KFH+V7ftH?1%9?L0%|Gcq5*Z4u)@28#oN}J%-%JU_j zZJ4CIZL!H9yEV$!|k)^I$oqc&|^f)D@9K^X2UXCPL$Tc zIk&nt__4M@Z&~!YHcLxzX?s`@*;mp_1cU$biyh4C_B{DV2KNSS`QLcIYlIsyDiQ5s z!#LXh`;TE9t+fAJj}u!W)|1Z@YzP^<@&w>5t=;+Vr&12TwG6X4Z7T>lPosw>aWjGu}mdA`>i8-^UBzy5D>Mb=NVTg%mpR&xi_3enIH5aoS-9J`q1evp5 zy5H>NAL;P$j6OzC1~e}T#fbw0J&ue-o8<`Aw?>ei_-(&i_Is~Maf@qi5v((!h3=@R zP%U7ZV1kSqNG#u*!xz+0Uc>vfcs~3-i#rikr*LFcOMW$&l5%4wq1mTP4L^&gDS5M< zp>8iNxzc(yb0N{v11l_E>B$;UO6zy(FtXN)P{K!XbmVXLNBbnnMsZ4z$pW-Ka?S`% zr+{TS)r0(8mO6-f3S0j^^2r(r5cTi9IdMhBpvsHG^1LLxD>Ph?aqFehWA8t|K1zsHY0nQx4N4v+!vxo62Q8$@66Y zZ!I*GSDQ8BU4b6Gito=@J^kIT@S z2Awe>z9juMBQw7Ld~Ov~RtOfDi13e}9tIblm1uSSnTmhJ%+*j>Qmd#P#8Yr^5X^p2 zdJ4%50@%u-R3PcjVjR=O`&vM0X$`zIcMWu$d?rNo?!;@2zdtv=($6%5X*t8gwBM{b zD~6Xn`=mnHFo%Qd8cGC007kTg6~M2L+=p9yumr}CT?L~gh|0qSkpHu5f3Q|Tkimv< zYy@WL=y+lENY3)P3B)X+5FXk9M;qbD(OY-q!&UrcJb%Bj58QWc3YX^ZzjfP-;MUo$ zJ07VSrOUU-o!piQ#TyQA{)ZkN4O-1aQ3g87{W%`#X6~xa0106%r2b@|Dh8n_5K8o< zDU~=|vQQWgYBHBVCqUWZNwzoZ#BT?nbi4a%-zB3u!}E6!gqSGbhe^vf6~NzK+W|Fr z+l<(Sw~K}@(?@bq`Ah$V%8cWDvQ|ytGZ^&9g+b_41wx5xLSa@!2!<-5J{;m;DNsSe;h_)!8SY_V`JtFR6gW>N;Td!Gha_Lr8QawCUCkBD*C* zL>FljSeaD_`9HdksAv9VIP^*l%yB}j^bFj+n9BGQKRpVB0C5#7kIc-AGnwuG?+07q z(7{5u`SxMZx1Xz5#@eAFLz7^~c3KE?YA%*6X}+i9sy{dOLydRUoVoHEm((zCKyyu*#C-k*CYU1pn2-U9f%YF)k~^^TB^MK~`o7 z?syM{r{|29qvgU%xD)|Rid6bU$x&+-2xTOp&<$YpRt4cmhMwB*u9Oy?ms<{Rz4jZ- zeql0Nr}0jP*2-gWx8FS+QhI6oB(Xe9m{LlOhp>(wpWe$cPYWjRHKBk-Z0$fH*|aF? zE)N*k5pKM7s2k2dx8}i@3wLnwW>lmWq0s$!%L@cjw6vXCv_in>rBN3HD*3Gz3>&|g zQQ=DT%i~^uWjz$;S9qMGVt4&fUQYtiD+or5Pa489v!|7UA))9U6EM1bc|QN_DyXWg z^C%QgczqQF!^ur9vVgBoGTuTzl&-YX?<+!CKDwLNUvAd3}i=mSON4jDjcnC$;;2Lg_9?-35 zJ;XZPl+lP6*|lVAJPqy*)~a+##aLB{5xjk- zuTE^JuAvLMhY=pJmN4zmiXXcjpWqU}Os(*NfU~_olqzL$rt?g+x_3Fwu}#1!t|ZjA z&L}XPafDp-A9Xn42Yh~yhxJ7h;!2q87iVjM;Kb%4tn{g7RvY%s|B8Zo(@dOZ;0T;-^bmyCBW$6Kp^jZrR3`1^6aqP6V5YN~H zCJ?Kp^F6bxG1UPlQEQ|tT^h3*1@o&woK9!Z7wOhauNbWewft6$#?{KAc)tn6)*9id zhEApVOE8uTq`3=1EGz7xt->CfIipZ9Vv*l6fuN18Ytb_4m!h&-jMqwSu|yy(Nh?&} zA_pA7hQFt3x{nE_tcS3&e|9><{Vj}*8?xb_xTxfJ=Y$?s@M@Zd;Gphn9MoOy&x(=H zWr^px{7FYt9K>AF-cfEwnWhNDiZ?|Ib8>;m^Y~Lh*x)~n4gOp?4SK_dKUrFYLH9Vl zg;VENyL%oypPLPiigInL^(HVg>A|nVoG%VJbBy9Nq#;^_;i*#0c!L@Kwr#`lR?4xG z`e12hlp{gxA%L1vjhf=Kbqt>cqD2@)H>(si9;`G4zJ6^MEd6o6WDP})4m0DiQtNQ< zu1_}Aefnf+6^0U%^tQ4ez17)AN?`rEEG1CGaihlcPc zg)`j((JPF*?>~>{@##4ec|UpBCuZpn`z7&a2exbqz&e!^I$&LWtd|#EpDdKRp(Af< z#L;IhwRa-ib{Drws|KbRPd6lZ+QH5~nf`1?#DspDLymO4dNh5Sk;@t48}$51R6@Pn#!TGkR)R;SD%w3{@*fRUp{K zeH2GHnvP+qA!qS>@sh63PhHX_x01kM?DA}^spo8&ge9~E2b$3!=ftjc=6{xPelvvP zsexA?7@8!ES6*1h3B!RMa=QzIYCISZiH5h2;e|nQWWvu(+C6=F6a|878?M89M2!LW z+^jSxDX!wWtjTvzG=RxIS(pBxd5q_gXxxFL_;peg2u>vr_J~bG;!AVaLS0=0biDLz zh(EWth8)cUWc|8KQwYWFP)$mR+ysJi`uc37Dqy9_!cx3|D*zVYWjpk<__FAVv$L!<30*%(K#IlpeG5x0hKdG6}!rtHcWg z8}rYN6u>@JF@w4pL1XK@%%nJ-b+pRy0>Q@o2BU@0&1@~*If8=Vcy5`gY~r|&pYGN& zx#+cUrX6P7%vQGJ2o(J)wNCAofKveUxwKkClkc6xAGOv>mp3>Z_wl<_IDsrU?3`%y z)JE57F0*;w3Rg;3o7kH+sTDoqavWOvPNF4q42`P&Pmf!9Lo)Vvhs9(Ppfl^A@AGGJn>eT zj-{L5=tu4oG|)c>4fHcDG(#{wZo81j$1`Hk)6@twoviKBb#G;9Ws+42;j=;zN_5_a z2Kwn&jdo53PFulMBu%R)-($Q3vhcGVFl~m^V5brddgAzAmYz%ucKOmn%ALrfIAu8(ZVlSNZTj~GU;f7cE&&S|d0LzvFlzM@>aD#L5mDqNP$d~XE@7YISf z38YQ}ql1Kk)8KLtO<^*2V}%PsdY(3dIHHsKR;}9nGB}PlbHhV}_)0KRmYI2(P%__M z=95sAEDsr_5AP#RF!aeH0yDW;xs$dY{h%$vdWgf-CETl^l(X zS+fYX3J;@`ZqCu`5{ax~H1SW~A7P7jdJ8j{pC#;u&nEMcp^TVgYb`0-!bXPnvYc{5q_ zSs-T&YF@o4t(7()S>G~(R=ir_d=|*?bCuW5+r@@yE!);`1uFt$>Cb0@paFVC7a6X- zp-a7H8BCictc@rl^dYhUFNQSgDh}joLUHwVgEYZu1gg|tdny=d!6~w90-st`s;x5E z-GQ6;7IW9Bve7b+$Oq5Nxm#h))zYlw6!x7!+~WKdtNa6{czH8mkhkkbq|pUk$=zh_@@GX^+CgEPCCb zUhX|KPdG@M>KpWzGi-qR(txM(w4{~q*VZ-Gf=dh&G(E-fl{i9=|BkyyNWkgvrdBr> zFOFo+)2D@f+Cnv49Jb^02@ECoWCJ}(q=|vYo-%&`Y^V)M?&W#|8>{LdxJ?*znsOH8 zE|F|iRb~H%$=!f{THN2J_0|Fg(QQKfvJl2*vtwe-pCVG}D{11N2RiccD$XyzWs?W+ z(evfXV_eP$ukYm}25Yj>YHxNWts=p^|P;{rFP zi5=>i*OCx~fy{SZ`vdNI@H}~vp>SLR-tvHs6G&VyVJo9vtfNNvUfO>Tle=m7|p2ZlvzsAwsFa|M|6%5FX|_!yXdsFoe%r=04Y|Z{lQYB^O=N z#~T`-(_Nn|pR>C%k}(%@IbZzdiopNz_x;NIje7d^jD~%SCi&!T0V87U|3LjKQ6t?u2Wdo$X|t_`rH!Pz5Xx>tc7h_z+g zV`C)oW(Ckj<1~hg7YLer_?|`j@|=E?Ysr?qNz^E2AOD6CN&b>|u=t*AExy=6FxO6%a}=l;Mw zWI+(oIgT$U6ZZ$y7L>x-=X8ZjuXJtR<`YfwpaAX^qjGB@m5%C)GkEjU&djGC{e=Ug zPZ!ge85ehl*>?@_mfi2^^X4Cf_m&*y>16~kx~I)J69x_G#G*Yu>EdEf7ZxjJmfJls zT_99wU0owQH_O#uC!ypl+5mNhT(8bA4YLyCN^z{s2#Ib3-ESGqfz+2&!qLxN9TKMT zN_pjRzu^~ee}yYnhfwNKAdgm@-lUY*-^J1GskgLE9|W!M4slabQh#E z0}}*gOTK3^8k%ucgP1-&!XP~2YrQF~MJRIZpnPrup-7{jEyBSZ6AFb%TPia0p+I!9 zX;}YwSo}}vBqhsh=JV~Z4#TUTALLQSpOXslBT~7rSP)M>J07BRV(zYW*n`bE$ul{u~ zTslhIcbnxCKO1pL;NdrR!FTIigH>@_kK4yXa3oeZwsnW!cC~esK6y%C7(F&w3~H%g zNf=b1qJ~g{CoK^RBo2AIhMR?vqcBcGo#*Gq@cK`seAvAf~E77CW6`4e6jbrQ)kV#N3iCEi&IE zaX4h9L0KD-1)-+udZ@tdMK#BYp{}SL8cM663FnirR?#G22!x=y^6>Vt5ZSFAv`y{g zW+pIq$sd^4HO63N(VnuW=Zt4TzdzNqg9uR-2qmg%iC7?$ah9R0!ST|j4M*YoCBkuL zD%+bQYeVFkaH^xJPTM%AU1AiRD00oQ>20*V(W5mTjnlm}E!FXu8oWn=P$o5@s3G(v zo;CcelD+2n!2=f_(L(5AyOt(2(XuQ~JPpqk3>j4EG)P42R^D1SmdH z4X?hqmP=#h$#Ga2_M{zDu6KbPcFsVf0-st%B&#ra<-Cq{ zLt#M$bV`bWX*Udk*I!W|GcerGy)YRzVD}+LoMw51)=7~Q2WIOENo6qy1X6*Qx zCs#lN9={elHDNHAEt_&+$ydAK=9yX z6Jf-$H`tRf2>(sD4Tau)T$T0IbK@bUSAt@(&;4^EJn+y+KFymj2yoblt`Lmlp7|ed zJvWr=xRlml=E z?r#_vEsj<9>k$TF@iNAi7If&F$?GPpbgsl9faRU|W4QWQduqW;N`))*^7CtyqJ4@Z zL6A_=emMjaF6ym{gLU^e7UMv+4q&vG@noM=kW3t^A{HfR{$#N{Y2zIeaQs%n!d5-I zcro{M<1J@F@F`Q^X3#+0>(whWG^09nYGzk8Lof^(=5S~mAc>IZ76|1SIb*t17txXLNwsFS@2(l+yLaJ@fnoF3StESF2{lK^^Zr&F13d@l`jZICk>D zIy^oJgz&E%j~4zNpnb%qgD5fR4@>rngO>Wcbd80Ia>dyquH4(YyQbAW3L_ZCT%YPt zotX8;fX@OU#3&TBS`Yf>JiJj9!1R0ndLCE0ulC)s!`9>a6vsLvEEp096^ueT1A<|O z5hB#`CX7&TVAb-N5$}tAcj`?|?d8ZeTE1a{5CJR4IzC@XO})u3?wnpGWAu(rOV?M9 zMQ_(uo?jd`MIa2J6+$80bWM`Kot8534XiLz7{sHg0wIJX6x5Y3$ZwWocUGB&PYWJz zWny~~hkMyH4iB}I=z`HTFw}|`yTvyk><#17Xj70uM}18L(===p?v0B3{&qejb#a~S zy7v0P@YN#qUaQ$!A*Rg|fv^HdTPCGBuf!?8B`i+wv)c`$;OJ+rDRxhJ4;?Im|9&97 z88kN5wQ?4p&<5&pYf>FfKGvZzOm0D4hOBdE;h5dfVM&Stu~HC>97_d4g)E=I^~oJL z<+26!P zU{um6xXQOwXLg^!Ef)x*3O{4R$Uh;?xf8!*gIK)Q=R5!Y-EG}u`_^3eYN6}X!gjLA z@hR>Xgb|-M!7-Tp6Vsgc;ogt8SiCP!Z^G~eC*_HX zgP6>3FD}pY6@h_#eisO%b;Sh7+vuksX-z3=jqnj?K&PH`IdK)<#wm8}$_O>h5W{Nn zJ77Mp=-r|T)%55B4N!UhfKga&4t5u=xpPI3Qn%L;VHQlHnU1onsT->WtPvtAc2(LAvwC(FiYN z^EO0d7JGu>wql19-iS?wCyXAxwkLz;Qq`&;qWb*V=?pJThmTPSXeRD-bmjO$%rJWV zw=XpgIF=$a zs>{4;jJC$xqy~cFCOo3?nN6tiN=CC#5LAjy$cb=9-78zI0L`HW&|*OEsi}^1JJV`g z1^FVwIUc8B)9hS%X3(a#MdR_O$3k?B%ZiH`<=7lY5pK?HZ$}z!ryw}kF2=#Ob+>)k zL<%Lv)$qy-Yjsi66D{UUy5m6s{n|`12#{eDW=lho zVDo^Oe_zdT+nhx?dF42u_uDkTUlhd3F-CC_nt7eKR$hsGSgss=!YR+Zxoe=Tw1$tK z`_e^tZwMc>z3108nefX`2RJ%|&@%X(dFGj@vNQ82qdhoAvAoH&{8g~Rc&VD;YHAue z8_V6g#ev#w;!1gs<&?pH-q^q=&7Frzf}4w)ixamZ-aZJ;g(t0a;x}Q&v|f(SwZiL# zvrIv78_3rOc@7Y@Q<#76JKCr5FMX=^w<=bFu6CHYBgQVd>MA~V7F@vcDv3o zlO|JZuDNdsS)G;vY0D0It>4htD2P3)Cq(z}id`{NtI%uNN&tF|>5Lhd0+TN8qlBtO z#C1-E(6J6jgBi@2CS8AyHOyeVFuxMs_}6+s3mvNHI$bpa+H|q^qW;N0GN5>qOR0mx zL!sxL?grn9$D-AHpnPABBCmAY6PXW-Y~%M?R7HBsh{V?93v5jcADuR=Ab6SHb!a|g zu^CKRiG%LXdH%UoXw1+3!_u~27w9m-Wj*cKR~w=BxNA{A=8W!;c%l6+h85S7xb;Xv zg^tjn(8qt+3ROo6#ppPHpMLG(mfLlk`E$c#hX|u%6GIAu$5_+x`|E$R#u{rr7gwp@ z#?@-Miy4G3{ut#Kzvfs8QJ&pa;U-l0+;28<*KkL6Pc%eZ_WX6w zP*&xJBP1jk5)<2SchT11olvECNlR0cvQ?oWICi`8+JSg$Td*6RKt+T^K%1%E94#B z;gf>cQ90Q4hT>uNHmD}~; z2+;#fuy#|9e?GekDl3Jf&vYGem+M{Euju8i72cd0=rDc|R31DI&c;S)#2bn8k5@p) zPJ#bW;c#FkuFnnDGZn141;O2;L0_cf)wecrbDmBEy3LZg#Bpap%z&;e*!m1`4b#sKHY7ss7((l8TM0pTO03xTk1+j~Ay!X~7$UaiSv(Rz!nGn^x6CZB% z*rNs_l7#8;0t;~gLy8eIqz4~v_1M1#;)kd5ME>xt|8Di>3)Sdp zC{@4JTv0)2M=mx$_iMy&I@o8p?R?3XyLh~0>dtz9a+zEK+K5`Wz0{v%CeF8_mJgAj{XVz`}Oa$5&M zO?m@?AM`(o0P{cI1_$=Jlp`cM61v|qCJndFdyXe@oBU5W^?NB}N}?b*YxO4%%>8}`A01bHan5Q+li#{kHMp%k@7q7T zD#FAO9pUCF-C^Y5c07$%dawnD6`Kp-tCcyB_J^xQ^;BMPL>P3sY#4-hjPV2(@HFw( ze7#4S{YkvI6_F@Npjr>{nQC#L)$B?+xiu4te|K2`k>gJ35(OVWH4M6U5~e2QFm?(r z{XHKZ`!{Y1R2le2c5e@zFSpm3j;bR?aQufYTs4M;hrly)C)lYE7{BAW_`HrlKe0Q0 zq827U_$!oGH9&QCq2zM;4ig4L+kQ!6aKHQ8^bpRg(80CRleG{VXFmhos0ZU%3!;%NZ@Eb*+wkyc!y-YI(fmx%=uAc=V<|lDL*0AcYxq*BU(BB>nPrn25^K zH!#ZLMANC6?+P-vZC5J@9=f5I<8@9!(BffV9FH2ar0m1n_Vi=R`IBkgZoB|OuE2Tmd-?)=To=e_b#5zZ-f>;!fv4|EbHN7C%b7LxU43_fF=6{_<%lO&9ykZ7UBXv8j;UEQJ# z=QaEw-QPr#6+-6P_U+8Pnx683cWaBGsoLCt!a{>MMJXt$g>z@F=F({@HXn2Duw+hiET1AFpSOn>QZi0mwR` z7S~W(4cVWrEC&b0qj)mh!J#Q}iziW7q)-Dxa6_$F$^_>6HHmJ!jHNCu`P+E6iq`8dZIyVm&_B6)-+=^Fd#XGM^KgNeq{om*up&2f_(39p1SuCwwc!! zD$kD8mkMTLdUkH(ZxUO}lhwfcPn^Za6s*|6`+fCP9L(dh_U_|apyVTLZwCv}s=1v>ELJ9}W^a%nG^#suPSk3VQk zYA?(#r`dVw_^qN<6SE6a!Z&$JUp~5M+!X`PTa>R>cO6f{*AAFn1ebL`vau_aucmq_|8t)Q5c5@%4q9k$OzjB@= z+#CWYemlUE*|l3NL_`Ry>3o6>JlJS(%`@M&1>(pp)q|%)Qw1x~D8T{OO+~YA>j$@A z-qX~oD=DuB+Uniczyjp6AMAtqKOf=g@q@#l1a51tH6pIzKN z_2t}%_@ETAYTM(sM4SW0-*wA)6n3MJC(I;|5e0EJI{8CcM2@YM1L0kN!(B_9e9Ss3RAqxHsmSJlJZXM`z0@j#F^$+3MvL3old9ZwXtI_qno zs-_Xnn7)E9NGuaRQs$A5HwF#q4AW)|kwMurC~iH7LN^7WNV-`HyIKL+TkgbjGfzDx ztaNw34 zA^gL)`(Wd5NBEL@-Z376B3v^lSs$%}rs_IAjcj7IZi(ls!)H$}ZtEF!=NdkL1b&>7 zPJNvCNRj90r|UqxvGj}~onZQmGer>1!z=GvF{)J+gaB}DM3qbhz9Z3 zOgzIyX-i%@4~Fz^z5`<7ArNkVRyj<0=r>8x;(8V*$nEP=+JzHRVdCUeF_lzrK)MFB!1v4(%OxcAxP3fc)8=YXGT%mf zuQY%;N@EdoVmN@_8PmhJ@ z7-3_nIL(OvBcbB}q4<{G+}#K^^}Hdm5IwbnLzrrlfqGRCf)Dg~L`*ZbXz3-C;@Ig4izWpj1a?vq#?XTKf5M(!$61hj zMs$vcq-#cS{@Q{vIJVgRWuU~AE^T4KoO6Jz3btfNTll|_ohM=Zc9=8-+V+tSq-%0d zLhd*2TmJj>YY(^FF5L#i@R<4hF%KYL7+P|uJE4fq!ahuA;Yf<%B5|eQmT9Su`Q8v| zRuDpDMPD=LR$Uv2by<=VC5y24+sN`_ut1>+Jt zLK}M4|9Jx5`Z9w%C*p~`#PNe5roVK?uWS!aov#+A&c*p}o_RL(?Qh@Heqvhn__5bL z6}Pf~sU?pt1tEmKD#;J{p)bIJmy(OeVZ_xY_I@%mO5nqHrRM$la`DsAe%u)l-A{N? zN;YRe$(D2g*+nya9xom;Nz@y61oy&LsY{0l=-MF?IwnLwLQELM$Am&mR49bv?XF?6 zgF&U_E7d?$<3nSkAfih=&^kd_BHneL7;V`FG>v!{O7+nq zymt`qWzQ+X>y#yny{a^d6N2$-?b$C*5=Wg@eos@mo+`p;1tFw31w0O?fQ8Ldo=R#4 zX)iy&7EYcNw%bp;=}b6TTn&G2%Z1~4<+kJ?sY@)JGomYehl(zC7hi_mrO`csJ^~-V zw^^Koih`E$ZEDF-La0drUzLN3H>4npeqYBWEPtS%TQ=pulCOlm`NYY+ap9|%B3a*j zxf`}_7LEtgvEjem@0vAJ%y2655 z?n~P8@|l`}2j@iMruK4_8YR^<1tCHfr#n;e6zUlUl-PhdiO=T@34NILj!4sK=6gG!1ElsCXhT8XsUv+ zg0Ra)wkZ=?*ly34o?nBP*t=ddvj(s8KiUch_7mGu_t2xGA+f!1Y*?DA9+J0EVn{Qm zV?TW756C<$bp1TFTw)sR=*L#02eum7X3}Pff)IgyXReQ~D=w$$;1=uR;@iL@PmY%G z_rsEXuxm#iJcfIe%o+$kH!BUtD-H1IQx`&PtclCXBFe>G%`*n$j$E9eXhv>74#fLg zL9b;B!iep4<w4i&xm>Ti<$rshO4p)e*xzZ8 z)(lMw%3#F#jXtMiv(0L|>(J-a$g~?FOfFtmsZj2s{<=n}V>yQBkT;Q6gEm zxjx0`Q0B~=jN9t{UX_+r;w1l0002M$Nkl)Im>2~QJ$6CB zXtAnb@wjB}JX|wTo^|$EJShn&3%RcNS)AO#<=6X<>zY?xpX&HlZ$6{&0aFl0I4Vj$ zDvFQQ#;^qDDQ-pV)J-z0Hsl600>Yz)GaF{{tAxjgZ-NpU-{aCII6AJJfXh`5_{4WC zfyo&px}o=nC3^!ygoUM2i}A>;3;7bnEeaoLk*7~8gwX)p+kqyFis#V=TtOHmY2zI; zNl|d|xF3tN`?LE^!W8eu4cT@l*C+bo;v(Su3wrW--*`p3kjW>Q)7O0?fYCoMxm> zDTXC$8Ajv~@G*!M;-6jZ3|Zd@G^n?oLRV(wL;lk3JR1S&r}L#->k)Uc4D*TG$IuSd zQ`S;!9J}-rXdIs<7@i&Lpyj4uLVoE=XP0Ux;4Hg6TofK&5<5Da6%oOaDvq|)UzlIX z%`nlnnIJUdLRXrRKNzQ;xu@(Tqp!ro#ztc6;W`emZ%+aAAE<9`#f;sxzS8b%zGl&a zs4;il24^H5*C@kvm4GUG(b~OGw#zjJY1=j&o_J=g8p)=|i@)k-A@7R@8g5oG&>${P zODlpp`Vt;-eatM{{Ea7|FP2eezdYYTpEG_7E>0PLgx#>2M)B&+pEza!uOJl_DhKa1 zApPn4{jlNJEDey#AX;8n<(wwQI-m(V!by6Mwwg$Rsi>ND3*xCJoKB}>;!4kT@J~vh(k`kc(*ntoluWVVR?nDI|n#jPj@~*{7Lf{Vt zS-Bz|RxMBG=pBA;cevu30p!0P2ic3c$QJh3ViiP5P7_u-=i_Fq|odwW^y z@Zi#OqJv9Re)2t&b)Rbwz+z?ntjAXl%lvwRM}uod>(egzn{^jUZzbYd%gvaFew@2* zwX(e1Sq4uxJ7v z7!o}8nYk0j;-){E_vJ>jlutZW>J5*2x}(wo&b1Cl&}vlH)fwMT-l`7Un&N8>v?_?N zHK#Kl8rtiIYXW_nnxHR!$@?||^l{*|64;H4#&9(EbXlvU9Rn4ZM%Un#V_G>Xz){>d zcmP|j19%?dKx8-^ye!F4rIUnKa35-*RY82HG^H#!tsJy46KL#m1HQ=P5hg|n&Z;<6 zB$`$F4xgV*>*Y9TRXL{{-c|+iLE?*@&fvxjxDOTK5zOAz2NZtGf(o-3Tcde66Sd86 zg|?uAS`|ctFn@MB!%NfQ1*Zf4irpQY`E0%p1-`=>43FSS_loArh5smTRS=cBMoW6hZT&3SXKPs3?<~ALaTfZqW*|FvEExu3XcgyVY4x z12_YgKCKt+3~=DafR^c6q=GCwq*MJNbv{RnGFha#+@({la7k~hN$QU^SSCVgHqg2FC& zo4tbIbgi!IsO?hmrvn{m5N>xQ%GsjK=2NEXvr3K8_Sy zD+sn4AK<>JJM30zX3|3jm3#ZP=W!7^SWJbRC;r2(m>N3zZ}7bW#qZ!q3bo=BzW;;sC!TI_hFC&Tz)sfwzEb zDjG`2!2yS|8FU>rw0OZz*s(pAyK-#I_!JmF(cZfo{`uT0sH~{-$RWEzfvmx=T$T=h zY(DA+|J)0cAOtr(wL}*Z4E?62I1U7ow}2`LPU99EHI_j4^S%Cx@|x3}d6V(ZzJRi* zD%*yJCV1wF<*Mlq{(Tg5?9|pReZ|s4ux3?;B%UdfB(jABP)SChlDJIf2Y{!5y*=2i zs={tnq*0!I>C1QR77MrDc@9KIh8Qj0P=5J6Aq?5=e;E!bsp@0ZtjrSl;6IxfIGi=C zD_nE^8GN{g1X;kR=Ic01Ojxvm5A<)!fVg_~+L(lrU0 zhl?SpOEh%o=-z55<@@%lJ@CgSq07~hTM^Io!h}aWpe_Iyh94{r*}fkyWwz)r;M#kMZLs zeCkXt;+f|sKw|qSH>^X??gF>oakg8$I3g}C0;XIhv_jNfYiMY`U*batip1=-Xg_`n zPWppEOUEGoHr$qzT?(OL!HVk#o+@+JBQ%5PQjECxHt@)k&Bt=h>o2c|!h#Bpz0qS+ zVDgkco>*;hX;yDbv8)B5exkpv8g}g-t6Mqfjd}3zBl#ESWQl*T{xdpsNN6XV9VsrZ z=J_~XJltZlh0LmV;0+c^{X~N({FYt5V!dv4CX61NtgHO&BPSs0SV(XKei@t9 zoav9>?T6pjXPv5J2R#3>@|0_yd(=nAH_xHhw&`15Z8n3y+qqOp`+V^!+~AzU3I7W~ztwigA-q=1vZfvRry) ze@ISI-?CyVA2vW{#qnKJ6$A(6x8b#_U16 zX$rF1=?uwBhrsUHFd*8p(pq@wdAx~D!>GA!zb+7WW={x9G6STdZSV7e2tvXT!1fQmeqJ{gZ0^r8R1(9-b`7tCG&B?CSiSNvr2TTxP3VrGAV|7q1cY~V z)umWL+<u(Q_lEgQ+0FH{kM4Aotl6=mLU8_iJJ^Z^bL#Kq^ zdTj$|giVqS*ByG?HcoXKR&SR@f;#|#6KnTDU2z3;zUmx9rB@z04*57vQF3wdkr3Gi zXUK4eU4YtqC6!?N0x}U^n1u^T`tdc;C#;LU$ov*-i=-t|R zMPGZO0>ayAJNoJsSu+F3`(Z0oA1O3U_1_=EZd#%}x@ksky7Eau7Nt9{Y;?jB!?kDu zg0C0thHYD6lJPEGDq#@Al zhUPs3BXHCFe6$sZxo;NP=aO4o&~~5BWQ3|bbtwpLC)uKcCm_+e$I5`FB*m`#ZDXNr zpU&c_R==NXp#6md`4SK8H$LF!ks0)0gLZ*l6q*$Tn@b1wM?D|%)?2y(`1C_3;O*Bp zNH9?I9ugHUiE9n`zXoWmVpoT)$PPWUY35{MI_%Md*h<*EW99J4`@&!l&?c0)?`vh* zt+<vdt}*AW~9DfcO#{tFh1;Me$Agu_kgp)s@}i zgTjTgcnua9J6E0N+X($EhsMr%03(^YmD4Fg@7gj`0?h(u(qQuK^sa zdu#|)6$C48cpxk9jaSz5#kc9%0fHk!`EaYJwFb=W=aS0BDBn4+OCP(&p;@5_H1-zW9)H-442=s|wRD@q!wjvtc4d5^ILz|Y9xsKmT}Pn&KpvvRhS&s0*A>(rKgs=+ z&;{Yu)@}PFL3H0FPI;7Inp0f#z-~~!=O{<=XaC&>citMwW+XdQR zH~<{YaGXY`LdBPlYN>O7!7MoJoOnZuV+AWu(vJz0LAa+MTMkWlcN@9(;|76vdXN!n z#j`MNHQ35w5?#S^f_VfaoGA5fSBkD} zNE~g86Va;tpZM(nlx}yeZzcCi;BL861rA^WD#VWIy&Y#V5_pL(I^>+($YTBcWXeIs zTCE&3z|L8)9_Wj#=I*{a1s=Y!58%xR0dYM#wSfnw_TqkwfEAky;N{N_Li$nn(|L4d z1O0-+LZQp`=Ye=9Ez2M1XS_7MiM+zsL{I=mYm&lVVb7=A)T7yaUjWTvbgYJoWA#_;zis zq#&9}JNoH5E-vZnbMZ1!`!2GQeSwe=Ne4#4i(LXdg@Ni`iEozecH?L?b7}r`XU@V6 zI2BvwR_EREOa0@&Mnc=j=DXfPU9jm-Z&qwsh~aKGjlmYhZF=9WF8mRZzw}S2%s9>! zHEMJ+UX{?-AI0h}1NC;;)Kte-${3(dgfh)$D@WO`qd@n4$d%)Qp^0#K$wjc{ozcx& zIj9!f#fHK1H%D>&+@sI}9{qGJ9QnxOkq2dASPY5kA639vo`$Ck;6T z`61Vt7zp|{Zph|~HM@J2`OXR`S}V16H>g)E_ago8AH(=^TaxDy>?V@pKY5$*A`*X% z*sY`wMakB~0cE$j9F@k|+^MXhI0Y%Mh8ZlvpUo zXcNKD#c)?a(+8vhzlwoyv1h07#jac~OwjO=HuG?A4K^u$?{n1E3SW3L>LmNWYoRjT zH2@@hL3kJ8!LKI6%~QIYfxg+|2*!HY{lx^BCF^$44N|4Mvi;6iyhuTI?V#;D_H>I6 zJGmKzfPGfit`hpgZF?KrK9Tv(a>=>|jWyEo%Nb&m{aki<1#ZV~*FNlKirtB|d!caU zZgG_5emh%!7c<}3qj}gg_7|wv-r_80`}YneU~6^VAjwD9E#UcU8aR4@FuS(xk7JAkTRwxZ zbK-XesjL(Z7m26+wAN7Z`UB8VTE&CE_RtVGA9vTbI(;=j>p|xYYR6}yY2cc?lYH1J zPupG{dDK~%!Vzme(ng*jv|!?Q1=+Jxm~Cp4?Al+XwN4t!s^R3H!Yb^Hi@U=Wqm2#n zwU*ry;Xa>z4kRTCTTybq-UxI%ZL4$D01eUy_`5Rp?=9eqj7sgq`?Yvz!y$8B+DF3d zyZlZ*E55}%*MBgEn-*sbWxlQH>I??nVxPFfq)k9(u`)%c$|AaI?;0KZdXq#LzrH_4 z5^fFnUIR2OE;uI?EZ->vE%w>9!NM!v`vyco>S~3-wWo{e#d2w^u7}#Z5 zqy?daOw4)P(onccIID2y70E1H>(fs)Al{`=Uuys3u@+QIpwFQSt%(wI)j7hoU60*t zPZKdpbho6q&=8@Oug(_a(UN#n;|1T&a)Em_D4WEK&idPgqSJ$nxpxc3Gz!xExBbKp zwTpcn`zlD2Xgi9-A#}^^P;sXd4cCqD!n500W#T|x)OiT9>DLdZdF`tpVgn50&uN|B z<=@f(d&I|^jgTUqfQg9>H-gHtytZyZ==LV&CY-WK%fhWs|JJ~y5yAndliRaQDZH+@ zg2&UblW#|^c?1@DaGLj|ZO0(B`NDNqY)6&{NbO0rg@SxL zbr!arXvbhZBr3;2+bW27TCs0;dsd+JBC!mtZJByw+jIN@}Iaq8h-@ zGjk!K!UvPZ+2M(sJ~##O`x0qtACZEfv1xz1YBYO#-4mN2<*Hwx?{&-J)1}$|CP8<3 zhmTd_u4diYOv^y`FfvzLP{zD1`Z+z-aWn{*7}ofk%f9^u`&AXEE>!Us4eu?Tb2)YOP0;J=Wt<{Uxc^u5|HAomi~PSmd}v?c1Yk|R zu@it|!`UICm3qw;<43?C{3xyVV|iRr?K?#AMXFti#siq>DXpl7dGik_Vr*=5!nwDv zQA`U|WWT9sR#l=M8sc{a z(Lyad}oJ(G(Q>|I4gK(1rJ`Q%mCFN6cL1G2QG$x~`77hLcsy>(jGz zr_iMxJvPNB9RA7_G_AM8{L?TxsdtL*31L~qw-MzONVmN+7`@M|JnzG;+(LUONj6>u z?a5J#=T9d#lF?9Uw2lPY?YfGNb;}L3g8W&@;& zot!*%!8{*7x z!cD+U4Ze4I^Ox`7sh>Q>#zz=}U;z=zDF|wdIei$Ob?=@YJ%w43MujFjLS#4Tw;e^^ z5o&;V@>b6RdGqgQYQW+SGUadU`N&$Fc{0Pj^59^PXyo?~dIUBhQF;>8_ubWEqvIn- z3m-`nNHi72v}E{(5V~3rCwyTlb`y|=cNP?ApNU;8x-@O#U(>N30;;7YSG{6Q8khLUUcVOX#jp5pib;U9SIpb=bsG z%|TToy2@H?0mK~a_QJApcQH>;xQ;6;D3cR+{WVkwU9=l-wYPn<;9l@HV^*vnud+yg zK5w2WnA|VIYl+1!y1#H9dgE^UwIE_zW1_g;syM1e`FCds2b>~1$Lr$l=qGD<_@plS zTOU5NpFC3?4t^e+SCF^_2#A76Pm?*huZ>zgC~Qko1ND3S+>iJBz0BrNU;|oYY^bi~ zNxkoH=kb19dK@53*CBztf=p@WFlRN+2d>3^(&OK6kzf#C(e~(DyCi9W4qSAeFwp$? zhb(UA?d*^C!|JVtusfp+Xp4GFa78D5KSe0M*F`L6yVi@t32%sLldSlBk?yR-ue507 zEC#jKKkJcS_ySVyzlitKEk~K}t>DA7j$tQ9XG%P|E_l(;ukVfV1Y-NNhhEzW->u8# z=!_ZE9TLY3&_r|bhJ$c&n=p2K{$+c~PKk-QREU`3aPUnY--2+!PIy!)lRx4j+X#E0 z#A6XhsIbL>==k%X&=>XxUEazdg{8F=HFwOUjh1To{SnWUgUU)c-}7z+Mh}?>5-Z1y zThC%iwtkA0g9w!<$n@S0e)R5dF8==bXuim@UD>>!Jc(lm^5N^A+{pXw;`!}^3xO2n z$y@tDs_5h$(YNyL3+zIsPjnQP@E=nye~|2hrG_-~o#lK|R8$!BAJ~Bp+t%ZNLvq?| zGxZXQ+dsm?L!kDQMaBG|wnN8DhH~`A4D1F)tM_nz+UA{}QwgbEg*6g6Q-KQKaYav{ zUrTZm9}w0rsC%Ww9s5f95qt94aayw30p>wD5t0^!5^<4aksQch;YXhu%NJFdnJ+m_ z7e73ePn-0>ue`t2V_gkY)igp`rLeVK%h-d~vTBc?sJD+mF+zA&AKYxP)D1LxejibotSy0)2*lzHm#velxs zu9lvX&KT4Qx^}n!y2mLt6b~J_DahDlM~#eczXl)pzma@-&iV!@-;=|Kldc}Y``=uY z4rJ7z)mc*m%Qof%S$|=!%XQ~6ui}#qQRRFgbjKniLt*;Oz8xP>EWqMOoX(x0RD_#? za6k^2uLSI`xa+15=8Gy^y_@f9MI^;TaFj4(L`Dr-oi#OZ&%EtC;@C5L@_r=`9huJh zaHS~80Z+{yFACe=ixX7eD^aPaAbonl9ZJCdiaYbHB#4L*wxDOey^Jrq$88t#e)61u z#~MkvHDJ63Qm+x}n+B!rM)gxg+EiT+neR$JRL{RWSry)n3D|lRtI?&XAj2FEVPvM3 z)8hE2=SaUmM?YQ1m)QL#Vd3rgi5j^2G3l%c57_F_T?3=;TnpmUgUNSKQpG{`t+GB6 zw;TX-=Ut=72mdB62zUE%#*S+y%a{wT+N4DJ^E^Z z>P~#LIpMs%Kw~~7SFn61_Vh^}zP;7)vzrMr$m;Y!!-w+W;ALhPU(d>XC#(%z`n*)6_Gyn32&B9Q7#ykbsu z8h5tv@ew1*`d}qg9CYo=qWBP8SvPx+RcQl2CH}s`Vv2m~1dj?5 z91Ej7W%gIv^qbCvUa9T);>!2s09&nXH>N+dA2*0kBM;4PefWKrB(62!UIX8)%Y)Qw zq-$e|7xV|JQ@Nuxj>B*L0!_8TXT4kZIC$=#6Xl?W!^`sp6yN0mrl%y%tiVS{+%b)7 z50Gr~KJ$f>jJRpWvU$A{`$LZ&Q@5vtx!^&11l!^9-OU`y$!X;OR=SPpZxg8+=;kv zE?9!YtUzWJz$z(uJnB){iRjyw4;uE|&>Ke}UYu6|%8#vx(+eKICLh>W2=hPQDk(E6 zr6Y8l;@aF;zV8^0Q``?%bxeqWpI;wo$jpzV&}J04W%d^Mb-U2|GScIQra;2TJ}k&R zowy}C)pndbcjzkS%isk+;RA*U*gmV}^Sm^>}TAzi>x z$f!v{7N$FIMxy_xkUwBiH8l+|=jk-J^2ObRyd{4?^|2FfFck6F&3)l7S0yW^wUkJ* z7d+!1o1vmw`l1tmv?D>j=t}X&zTO12dD89_#XmCZLWmO?*q}HooVJLDcKbp=lS2Ze<|ckFg?XBY5mbZqhOAih;q z3``dO9=)kgi&2&X*%k2Uo4a6_$jE}2-=I*en_Dl0AUs+icDYM7LyhR_ZI(v&cU*a` za2|)nTlM_(C{D6qH)<#t=_wI()}|lopg8muD89r_w=21_tkl` z`*!wCU6v|*Y0MmqULb3-l#7ugxXzeP?Oms=v=QEVW3Oab&j4TOdpqtuaKTWj*l`Z( z&f^`>lPC_xBa2hv)>#RpWg+`SD(Mt8>wn+m0!7Qxm3$(CAz|rc6#VrvE=h;#%Gv|a zR^1!3T-820CI}w?y)2lRDv+#pG?seMfF?ZxmQaz^MF35`%Aq}zC8y!HCH7oebn@ed z3vh6Mfus)sC0KDcjs^dIU993(WLc7P2$s`qNn^|y&@UK%F*Ocmj){g5X-MxKl=7}N z!p{dvVbj49(Iu%dU__uERoJLxjjGLsl~DX+2J>T|tpA?;<4o|e(I#925C>e~>)~b; zf`4c1&?YSq+>0#0y~xkTcCKDe``c2z%vu{SRi7*0Jqmfb?7fG7zbJ^kZZuLAT$z|! z%j-nxd`pS+yIa+tp(9ZpT15R~{ehe`Bt-i|WT+2Bgm@!Ezz6*BVe|G9H2n4|a3kD^ zdxJ)do>h-WvR%Ji+60BAc*Nj27y%TG?g`EzPg zCsjfB(Z6pLM5DdCSBQU438}Nx9M6Lm#zwWLlFUv5)8ip*Tq^iRYVtrk&?i;d*3+Ob z)b^kuF>uE{&f!qOQncekJJ!^QYNjucTxBfEMM_Ks))5Ot1>?c}h4ABs^Ques5jPy9 z+Z8${1w7H%M?E#;=Cvui6q*VvpuM(Hy~wWTw80KYiGjcY@er7dk~2mklh>+4nG#u$ zW>o=hSuza9j!)3ccI~Trq#h=JADg^D2#2e)l-bA}(xl-Akn6|=q5@5Uo6@h=AcyA^ z>Mt0Pyu*SZXmB409?%E8g8g*1Xs>RBwyFkbNA+)#=qnmpptGqBI$H6E_7X~p$b_F% zN@edRnuK!#G7pH;Moa_>Dd3Hi%quhiyz%D~76|IjyIF(NI269F_GEt77_3Tad85ZB zz%Q3+s^zE^yY#778u+41QIj>h%vvCXNmDoMa#$ehPe6x437a=wg8h5))w7K{Cr*$b z`lt0vhyWi973Uij4C+Bgjq1dNN+i*4zFYxKmn*wfKJ-Y^bo9G;*+>{QHeN@mYiHxf z!46bPoMX-`&0Zk5VSf!b?0+zJ(2okx%eRio*50J+7)Eb)IkJks$Ir0bZ1(0}Z(}11 ziJK-MbHKyPv&)Pa6%7#Xa}+`;A2j!aCSeX7?E zo5B;n^eQUvX(e_4!BjM9Y7&%}qD-Z@9vT}>{=C)dUH4^lY!IZSN8v9L(gs9=mzs$A z{r?<>g8W_Z$;M^tc|dc;qw68yBX=)2OQ1wsI$ z!|M(BnXu4Q;N?_b`@z>|0Hj^l7|qr;bf5F$Gh6je*&8X=3ntoDy!w}2P+!+;ED;+Q z43GV8Dsvp|g*0kxA6UF>1hcNIWLolRrNV*9@(fi&)e%?d&8l-}Jih+&ZVj;i@>R9qbF)P&yqMVFo}Sy$i#;tq+6x(zo_l(W z#^M+@GG6E6p#FaK@I>gJ+G})n^4L}Q>HCYu4CS14JmC&&0B$h_At2V}C`0iR-Jo@r zH2}6|ADe&9ggrZRd%Aq$sTrUVH?gNg^Mtsy&pf4RiTA=^=S!r}mkVp*e{XBrQ@r@M z`5K={Co-iZ=Dn{6TZ<1vjGc(u`zgeeKNuy>kdI7xdn$ z<#&!o4~Vha)tviUfCAiiBwJ$=7E=%cVo9n{i!%9FtO1a{`XF_A^~Eu3PO4FhgWx0Q z1lsOxUii}%jg35Q?6nsMeY&adAE>X<Mu_A^e3QEgT8$Y=|539Y0#=t8|qHcCztBsExB3` zFF&WbX#VibHTc;Sp=x6E@$o08fls%FGd23x>w83Yv(X*MxFV{&nRX)$%*867Sn6Xq z1MBzmkB`H}^JP6?>w9>6D(N_(a175q-OB;fu0|mpo_l$&cDByzj3Zaz+x42(kb_ZQ z>Vg`))cD1}U5nJnvfHQ0aOhjX~j1p=(Z7xe?y1k-91L z4U*?%UaaW3cBT_#>9VyqEu4g9G+NK#DT_8;z*R6vPZg&x`s4Gn(T>8WXC5SNfAyuE zFb>UBulvP-o_tGAjvTxU-+glq5-`5_Z)_AodHw3saPs)o9xyHW9Gp2_0t;^)3L{3v>8onD zvOoWx_EBAAoh6Mo7m%GukP47V7K2a0eB>ruxNVYv;pqu8m-ZL-ND8c!Vf9Zeb+~fB zUEr&J?P}*GC8oc$-g;v{96fSb)Q?*G|ClTR9w&!`gVZjoyxOA>xv18H#QqTCa| zs-d_Q;L}2Y!e&c))ohEZB+uG%anNX9nnPOuDq_KPK4Ga~J4GeygKV%za=~eCDl64o zR9k+&1Oo>}ncJP!+R>)}8r1gPwJlrhll+cZ@~QP@5gW9v$UL-$_BJk#?Wo1^GJ6#3 z<=T{j5SYgv6xs!J!DKy<<<(P7O^ZnY1)x&|^)!A`U-e6ep3l=#h5zWiqc(x39I1&V z3HJq8aB&#VJGWpkn=cT8ZQC@V&>MY!SpcW3nv&_ODjnR5-w`IHKff>=!Xvtz%#upU zq$&MOXl?tdBz#n*92?ojpz^f&Nq}k$mu4kDIEKNn%K{-VHq8}IqsU;UVUXlsBXndh zK|FL2KdenmPyTU+`1zts-^#@9tXe%Z)DJ>2K#?l_z_gbz3j%9RokBno-ta zy6S-5UiBB+ZGjLNTjmIR(Amx+{UFJ|G+1qcC{PR6)snjWrmCVzlw+AX#~XAo=SGB@ z+EZ73{H#*oXH^&JHLnY^TG@4h5QJOi3L8*9b&FZh%A}E(zvezdCSX|&4AL`8#MmFI z^yc69sZNbP#v=cc90K}vKVf*!;f8pC@x9#|-4`}(!_O-GO1FQq`vRdUZk;21>nfjH zG#_V`J`?P^(yt$#)KgSbZJxHT=rt305X7~*2e(?W=DkfvZKK}vdT^T9KJvZ`uE2P?c3*yx58;9?s9YsWYLq+-FVq;z2Yl% zBQR_9&FX_z{ErPx6(dY1GTE?KQpD|IBh1w!*eHt=iCuz6RPsMpq7QBBoKH`iL-ELq;` zKWodzOlx&3_JfNf1NR%fx;s|w-SW<4xj<-Iw0Wm}33^MBts@9lOmWL^iTrwq>(fg? ztO*_NH}1v7G2WVeTDvdVE)dm3x6cuRahbfLx|Z{?q*%6V*AqT0+ z!e8uFhPSlJ!>fGA@P1Iazl$@iw6m+0s>){g$E&+_p~|d$^8Bc7err}IT8)qy{t@a^ z-KUl96qimzLDaGN({!O)+`xOl>+1QAI2Y7H5!iBka+Rc=^aUu@u50YIK7psdTI|M> z62to~To?+Z8UfC_I0$D>M?utY^!C}pQ+WNltr=ReYsRg#wH;)dz06WpK~6Elz0hs20faqwEFZ%%4*%oVmmT zp^1GzS0GI~&-vSx3-G1+Gi$Q8%A<|CYJn6L)|foZ|K7%s1ZK2TAL#7qVw*3J=$OEs zAzRV8wnh@*7;>k^Y2>-Uh081u)xAJFlZ|*T%-x|}g5T|HRr$6&1|&t9-MzZQw%$$z zh@3hQLPsa}W~rYcnXEg9@z4+U#zVIjw@Q5&W6qIcTv(O{Ls8Wfp>nNz44B|npr;V>7NSZaBa$Fy?r_zm(MNT$i><$KaQQt#8n>6$ z&%4uT09~M>%YI_%x;NiX6TN_sqVjp$mG`5d`2$^bP06Q?dhN-4v59(Ia#kO2sd)(@ zCv;IW%;Y|4t`OExmgXJt3WYgKVg$oN4@*aqX?wR@AnNx4)#_K`^~zsmD7|xQU?uJ{ z&3-$21sm@TOI(z_?~@w_YHsTS_LsczzfC z?%t{NE5c1ZzMPk+%FQ|E60ZIc^()a-Rz`BK~M?M?1XKb@OKAl*M4Jm zCobBMFA%L8`^hY!1+$iR|6txW<-UdNw7uYNv}!O&LO<-MIWdsz$Q6iV7v$v-ht zb!yg8W0P*;3c>0>2|n=KW&MP1Hker;xO^kNKn&dCt#gI{U={kofMFTvEi{=0D z*DE#a?t@$bRqQw`UY$Qna!Y9{Rf{R&*GEcWq%CyksN0AeA|SXRc6cb^^`+^;X5BsV z5^W3^!mDMRa9-UV0M9s6E{`fn${<p++EP&G zE*W1!Dfj|PMt(&Kf{=ti$)~TKKr?ojMyyzXaOa^sE+65}L(S)W)b_~p@Pqs%eFgra zGZvG)p2IP~35dgQfqMh+!&PNeeG`npm+1(h6Nb|fF)|citQy-n_r?+`-(u__#KAcv zmZy~-aE6Y-0dV@pJ_6rjy8FZ7!1;3m;y~oP`p`dDDnsgOVNz!YOvM-AR3r+MaL#hy zAvpVOX+&HfLR|0n@Pz##p>XK>NTJuR&e>?QlL|))XpJm920c?i>~% z^t15AWl-I~`DW=l5F>FR9rB&HgW2fg0~>Em5^`NAPz#jJ%=S? z(NQbf5{aelnhzs81Rk_L$&rCkFKU zMCl2CLK#Y_qru_hYhr*C5KVkI>}qYc@@9X8>)+W5FCbfrf+ujd;o1n|*Bk=|Fn}*F1+u&T>ER16 zpciA?21zggi@O$c0%FHI|6_qNyuJ z!2|2?p<|D9OZ4wPWT9A8$LR!@N6fwu*#_Sa6pBiDuarsczzyQ7=+XN4|cUh|Nr8W9WMYmA=XOwLW z?M02_&)Ql$paUIb`S^H(CrbHvvK#~Xc{T9Ce-ByQQFKfo#Kr}KLeUBJwXINF+X4*@ zttR!`Hz^G6zJEOU`Eik&Nr-cBWt5ei!{vBA7rFzAjNCYNNABB-g7FwfqoEF8Lf@=A z3t5@vdO`6*#_XK=X)t|e3gFh7Co?dxZ+AXy{PCh0ExVee^Z+xA?f?Kl07*naRF8!F ze?4Ardxb&?r;cBRT|081s5#ak7Z+HJG}kR{ZL=mVlpWGlEWc3HV7&z8c_|k9opMFfOah;*bNNw5r6ch zOkcYF`h`Pin6JrWxN3vys%G4Y9KoG~@jm!Sc)sG!(J*AF>E9cf7b{@R7bl^$Rl!85 ze}E4>@%!m`&v*o4CW7RhS?}oyH!STh?2$K^)`!lm2uQcf^tEykj9229=|5lHi+2?v zvSae`@q%eHlf_*Ow`%}6k#Q9c9VmdJ%TiAl!6AMyeqtg_oso>JCd-{BpE+FuYd$~8 zyxT;e9!DY)6&1iN=KwZA$-bHL#sI!d+wc}HbthNzZb3l03CDVTOvZe_1`MrcKbz zYvW5*frMnSI}j3=CLqMB>g-~f<1Fv48rfkFJT#HBQ7pbAhC66QR^#h0?}C<=c1dMoIX?8rBuPHca4rns zQf&6{fa_eDwdIloq+2+?3pqpKa(?7~{^26*-;-}Kh>!km8pOpJcE#1wqJZsNvfbRY709jQD&hm(@eD^5ieaQ>_`)OS4YDj#`bN>4q0;`|uEm+ci?R#RL_{nsT32pIro z<-kT{Rn2k6$1FRu5a4H$q6_UHBOz0tgY?osj$Em3=*B5fS^0|XOVEcVbIi^fcg5(tIa^?_!@ZNt8!R3M)CK_*8I2a~R zOJbJsOv^Fw!k@N^D%jdREx2(IOq-Fcoz1UZ1OrG&o<(=^FFW&eoR)yB%TvzmP{0;^ z_iFrdr1;{gS@?E(yxUmLk&(FQ%+F)sX`~j*KXG&Fz1^it4{hzLJxG`dLQ#&-`uNe&| zo0{72heteb#&gQ2>vlBOYisL7wj3H(wsk-|9^3J{9nU+_H4Ocfxb0FM)zL_{7@qj^ zKxVZE&e_vT057x>^FenbzUWfM2R-kS9Syl3q4U5%9|%ID&42)J2*6_yUXu}LP_Qp4 z#2J;=uRaYY(P~{grJ)nXdmb34oz1UZ69X3m!(hU~Xn|M{PLqs$#N{y`ipPN-a$l7P zG_DB+y;NWQ%T8!)kOo-l+Yi-CAGMBpDOuo`mefO8NduG=*W-Bul$F+_S}WU9+tsj5 zva6`*K!`$50p(?laD`#Sn1bGW?|*25t4*EHM-K+jJ<-$76pzFy2ncCcp?KgJ;yp?a z?s<`wFp!s14J-f0RxiC7eKw6p-%a{bMR^kx;Pq(0#~(;7xE@f_rU;VdLh)@9v!A^{yVI7U># z9xyPPdv3Pgt+Q)SxD*=Db^PchX+pML2R3prSuWL8*~*uZyz3_rkiTdErxPC!PkZ(Jz&#f5`kd>EdGfhT&K zP-wYY4K2mh&|Fvv?X{MPPd_`61V8hmn)zlrv#dEkm#GiHuLxQhAGpMVakjo&i-QF1sP=uP=HE- zBT+U|D;KC_LqO1f)$Py$pUVX?t_BAgChppv1Lw|^cJcTvoM7DbV<4cv>2WbE9MH`-+*$2K2_eb#oRRJ5pp4!SIO=fso<- zAUHi91Qa?Kezpe`by9y>;p0*vd{Vkmu<%N343Ka>@BM8gwU<_zMV9bf`=qR*q9XX3i4z2S@Od%Xey9~*$qSj6MOAQ zW*eSq90uynUWSTY=cJYK?U4K{WM3fxw`FQAt%I7Q+0d9@X4EiV2+yp!sW5#;ifCYI zR3l!=W*ET7q$JoIhTM=ORNHJ2106ezfS{m!Htww1(nAA4^WrWHkkQ}XUHPzMYqn^0 zZ3r(OXh9u1Dj7mYChO&`tM^m6=K|E8E>O=B&p82+pv2@1QW3uT&0%OQQS(8DvZc7| zMmvN(*mAW7D)(Q6)>1Wi^vo(PJqkvR?E@+O!yzmjwdV{Z@(R%0q=05rcWy!DfmSpc zCGP-=4pf;&oefV^H}XT73|aD%ktJuL89=D2Sb#YwVBev-wCB+w1Y}LN@- z<&ObkdDWcA!yQTvC_9Yz5^bxQ5mC8jb}CGm+z-4^lFXAP2JpM%^<`zK3=Cq!6UTs6FwmG)0+stNf}*j- zD*ai~3Hcd&@HdknBFgZt$C7cJtu3;&cA#8jjy>VF8v$9TRQhyeqr3xvf4UlZhf9hZ zVD;xGp`yG&Zws=>jzXbp&|uR8OX=;H7jg_RFrY-1Q&WC9G~=(etQOj88gZ9m*ltKb zrT}|hesI$w?yXq;79l2cJkwyv z5elZ4oV?vyL zx*UFv0kbjCTv!3c-)BhLlWY8EUYcuk{1r(DE}Vhf!Rt}DzR^}wv>5?eo2|SV6*<1O z72wX^Zy|<{{dDCqjDMlqYim$y97N9>!FLQ#6uMdlU!L&QPWyx^Sain%W zzee?F0TwMy6E@fa7d9avtFn|!5ZJZ00NC04%+IR^iu$L||5W6(!Dz3MqbvK{?-?V>=NUa1Sh^xzSl4r9r4!wr+RPk)`?O*suA;mV-v94m zW~4uAK^|=7+!Plh7UdfO=+%}djscDV{TQHNVqQW17__TdqaxWy zQ4E`C3=zze4h*2PT6{-)piJa59W_kOwi*Fho29%KWgeV(sNI6E*Peyr8AWP2nx|2- zhC;|tu7<0L6@JArpdSO|@Kc+BP>a%%22McqqYhB1>C-j2%93UMg)IiE8dYo+0)ktk z5$Nq;lTjnOL8Yuq74YeY$8>tZ4IAAbBBl;-15EHKatv4>1K#1d%gB@VTUo*0cB(k$kTZ##b3COz3$^=CVNOkKhh0F=tle4)0ym?Tk)ZWbA-6-?) ziDFp0iXB;w91zAYnt&l*!`uiXe5xD+w!wgRZ~(L8$|`Bx8fHbFNf_|%XoYk54)41# zS};C9j27-JA|OpQuovCeglhHaR+r>b{k{JjhN42Y3v99+kD4>gt#HC8%Q0X}40wm? zARy(OfS7`JbZQ$)?{I80%9M8MbdP36Qx z{b}Rp90OLsfETi`Xnkp?+S+DlZFRisd2P7ld`<6gdY79Eqx3Eq(G&W&x*w_614dMJ z*(y7>b=<+FvNi=NU#|0N?TAyWWVZRK+L)vNKQVhnvDLjO^2;s%2+Y z!UyOCk(I(Hq(clkK;(&IfMdY^81V4%g!qNynFIf@;XGU^s$-V%O#K+3cRjuH_1Eeu zHHv_gpo2v0G{~3^U8&Bc3+3=J276+qh-rf$d;$;e&cY4P;~20P2K?f~fYu@_(b`og zxIBb~8-027uBUgtzB;NhgNzq!#a6b5Q(n?X&2SdonB&}S2sg8k8bgkW5RS)e|4bWEE&~?P~ zjwY!Bf_ghyoFkDTcj091tonJO^FH6mVDJhyYF96dX}B8@^x;wP;ST)hkVg2tY0*%a zIE8z?Hu;$lAPWhIUazlu3CQX!<-_<2eaGa1owz|mLmRyQ$}XnBJbY{_gim%WS}M7d zv`|~hYM`~K3YziPQc?p-bj9qhiFP}_Xw>G5e$MFU7Z-|zhVAUnU2$Zuc{dkVLotTD zl_mk6dgdAk3H6m0@f^JvKmzf|@^s-px+>`;AU`XWzO^|}g&YF5;~8B&I(hyZf7=7q z45w`F=F_UJydD~IN{}s3hPw!}eXW`NGYa82tN20(mI#O9&U? zb_5*mFlOccOHg|vPcqehN#XF|BNHY0JVQSQaEUdArb5K^g1}@S=yax7n+<=%<>pqz zLuN75oxcoi<<`?$Ns14EVX2`opl=YQ(JwI&lH&ux+e_y+ zi~c9sPNhv~ELvF71O@n`W6qUExKvONnS~9|Y^I;3He~0~ul7{F#w;e!|2+YiTW9S$|McMg;oL&(8+`0Jo1mA;FE_3;{aB!XfNQ^m*zw(dqyB>Rza< zY}CdL+Igfqm#qi#9P2I=LCwJ|P&6}HmXbMAhCj*{7EFnQrSlSD{9w2ARKvuJEi*|@ zv*mCpY}kDj_MWT+MF;98n~=zvVC3Y1D7bg)a6CFOCTeA^+>Yws3Q3)N9vBa410p5) zJVP%A8okmWbcrBnXv|0m2<|=}!`;VQdb@I=!fl(fVCVK6$&ARqmFS{GQX;PmMPn;e z?miEVxl$c?U64)~5&`$#lnnDG#E=OEPcp*5!829x+0O;A?P!_NtT3{D2}Zl5i1DeS zy^D;d<4{oQ&KE(&j?V(C%*0;^8oEf?K@iw5M*# zbjQOf@*f51xMZ8c9CS(2W6< zgETKog&;KI6}3Kk3<=ld!7c7WJhCwCC5w1?2KYLZc(h!p0&)t+^5>(vrQsny@YWL} zVcID7Sp2Ga^P^!5^g-6;=P!1-H@}32kB|TJlxPI0-LkW}4T`_(+I_o&dmjJ92=I*! z1+ouOPxW;zaOPAA3?IpkZm3?DpLbz^Xavy;y!wiAdI$)5I9<_I#r6O1+nvvxWcb81 zX1=X68}rMdY~u;^DWzMLbI~;k@VAGDfsf2BxowRr-oJ4eAXetaH@h^AK1Ct?D<5BC zstQ*h%K`e4o0Zt>Mx!U=9;SqG135{p&`~K+w)vz4+I@TSIRTMi#Xv?Etq=)F&(pFh zOG)I}<*k$`G%ZCJ)K279BKg6&cJ))#Tv!1mKOP5VC!271p`*T6emxWx&*9o4+V_iJ zn~s6Pl4iK;rK3<#+@!N{K>t`IBpB(BoQ%0xD*SLK(?05vC#FJtpI{f8txcy>huT=8 zN~idgtjku8#keaOHXTwXo&WUxMf8c2FM%d>WHLlfX9uQ{RJJgqy`~ASetif!kd?qn zz8Gok{XdR|>7$}p#XOH=z#N+UoNMO3vl$vL6{IFSj)iHss>_YFx**mx$#fUPkQh&z&>{y7CUy)_NU)3SEzXl#K(jP_S~ zAXB@@>8=CPVwo_XKV!TrAZ7>dmf1}+Jka+Q@osGU`7IOV=IZ#$2uO~$352Z}&Nc7d zEleXO5|DrM+GJSs@&xd5QOy^dAeDD&GYkws&8?GP%z-DCv!ia-9?ylsPj-v3>TL#u zjXMrZj$w|F$?!WEuA)t@bb zE35Z`QYqE2B4>ugf9Afatc`WvpEWS>=#o@8{@EOeiSUzjr)X$~{P(w^OC8+;cu6A} zW%xt}fhT&K&`wpTompFBya#LT_U?F1w8H~6NZo>fBeAiiK zw|~5AAgp<10)}K|7V}Jw0a;)m3_}VZ`tTaK>lbX+YRL~7P_<7QfK3*_8vw!&4GUQ* zKaa~nSa{KuN3_EOP1D_ifRvOpF!A6U#S$Jes~VMAw&gU`o+)6~C6?6#H>WVmcqYey z95L|x{ewl#Ko)E@C-cyA!f{rStn++h*c^xAt5ObytS91N;D~m3AcJLqgW<5t@D=53 z0^%KEJ@HT3*3%eYT&gBa>bX1LoxxdFcDd7h5Nl(AGy@NRGz$X!dL37&#%RhbgQB$u zRF_V1)b-I=eATc+N~f5hoq#0T;ei@h*5~2aX#%DULt$%K$tTP@1f+8RCDfUh5)V?9 z-1FW{NQ#qZY!Mbtcpk@qHU^@@eIeu1*$@{gm5a2M*Fn)5=OH5Aq3pF-RjJ!TUmG9% z8Zm&h1LYv#7B>8ijch%3&mdompN0AhSD^Mpo}?f2SP4J=b1K9}SU!fNbDqI5U}p^Y z`E-2@CB{f!z-<+Ea0S)XogsMzlf!X*^J%4;>K3gWeyI-wL_0i`ZbCpv3yYOJe0^Bi zM(2@R5(@OhO5~0tEzvqV99I84k7K~z7$BAN9sivUeWIjMA6hZyM%m_5_6EuH@lb)q z(_d=u(uq=GUGE9g2XXxtL_0i?5C^&XR68*kQ){b2I!)Yvd7$4ZOHwI%(PgCv7xjlZ z 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 O0000'); + }, + // 移除加载动画 + removeLoading: function (element) { + $(element + '>.admin-loading').remove(); + }, + // 缓存临时数据 + putTempData: function (key, value) { + if (value) { + layui.sessionData('tempData', {key: key, value: value}); + } else { + layui.sessionData('tempData', {key: key, remove: true}); + } + }, + // 获取缓存临时数据 + getTempData: function (key) { + return layui.sessionData('tempData')[key]; + }, + // 滑动选项卡 + rollPage: function (d) { + var $tabTitle = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title'); + var left = $tabTitle.scrollLeft(); + if ('left' === d) { + $tabTitle.scrollLeft(left - 120); + } else if ('auto' === d) { + var autoLeft = 0; + $tabTitle.children("li").each(function () { + if ($(this).hasClass('layui-this')) { + return false; + } else { + autoLeft += $(this).outerWidth(); + } + }); + $tabTitle.scrollLeft(autoLeft - 47); + } else { + $tabTitle.scrollLeft(left + 120); + } + }, + // 刷新主题部分 + refresh: function () { + admin.isRefresh = true; + Q.refresh(); + }, + // 判断是否为json + parseJSON: function (str) { + if (typeof str == 'string') { + try { + var obj = JSON.parse(str); + if (typeof obj == 'object' && obj) { + return obj; + } + } catch (e) { + } + } + } + }; + + // ewAdmin提供的事件 + admin.events = { + // 折叠侧导航 + flexible: function (e) { + var expand = $('.layui-layout-admin').hasClass('admin-nav-mini'); + admin.flexible(expand); + }, + // 刷新主体部分 + refresh: function () { + admin.refresh(); + }, + //后退 + back: function () { + history.back(); + }, + // 设置主题 + theme: function () { + admin.popupRight('home/theme'); + }, + // 全屏 + fullScreen: function (e) { + var ac = 'layui-icon-screen-full', ic = 'layui-icon-screen-restore'; + var ti = $(this).find('i'); + + var isFullscreen = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || false; + if (isFullscreen) { + var efs = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen; + if (efs) { + efs.call(document); + } else if (window.ActiveXObject) { + var ws = new ActiveXObject('WScript.Shell'); + ws && ws.SendKeys('{F11}'); + } + ti.addClass(ac).removeClass(ic); + } else { + var el = document.documentElement; + var rfs = el.requestFullscreen || el.webkitRequestFullscreen || el.mozRequestFullScreen || el.msRequestFullscreen; + if (rfs) { + rfs.call(el); + } else if (window.ActiveXObject) { + var ws = new ActiveXObject('WScript.Shell'); + ws && ws.SendKeys('{F11}'); + } + ti.addClass(ic).removeClass(ac); + } + }, + // 左滑动tab + leftPage: function () { + admin.rollPage("left"); + }, + // 右滑动tab + rightPage: function () { + admin.rollPage(); + }, + // 关闭当前选项卡 + closeThisTabs: function () { + var $title = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title'); + if ($title.find('li').first().hasClass('layui-this')) { + return; + } + $title.find('li.layui-this').find(".layui-tab-close").trigger("click"); + }, + // 关闭其他选项卡 + closeOtherTabs: function () { + $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0):not(.layui-this)').find('.layui-tab-close').trigger('click'); + }, + // 关闭所有选项卡 + closeAllTabs: function () { + $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0)').find('.layui-tab-close').trigger('click'); + }, + // 关闭所有弹窗 + closeDialog: function () { + layer.closeAll('page'); + } + }; + + // 所有ew-event + $('body').on('click', '*[ew-event]', function () { + var event = $(this).attr('ew-event'); + var te = admin.events[event]; + te && te.call(this, $(this)); + }); + + // 移动设备遮罩层点击事件 + $('.site-mobile-shade').click(function () { + admin.flexible(true); + }); + + // 侧导航折叠状态下鼠标经过显示提示 + $('body').on('mouseenter', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { + var tipText = $(this).find('cite').text(); + if (document.body.clientWidth > 750) { + layer.tips(tipText, this); + } + }).on('mouseleave', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { + layer.closeAll('tips'); + }); + + // 侧导航折叠状态下点击展开 + $('body').on('click', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { + if (document.body.clientWidth > 750) { + layer.closeAll('tips'); + admin.flexible(true); + } + }); + + // 所有lay-tips处理 + $('body').on('mouseenter', '*[lay-tips]', function () { + var tipText = $(this).attr('lay-tips'); + var dt = $(this).attr('lay-direction'); + layer.tips(tipText, this, {tips: dt || 1, time: -1}); + }).on('mouseleave', '*[lay-tips]', function () { + layer.closeAll('tips'); + }); + + exports('admin', admin); +}); diff --git a/src/main/resources/static/custom/module/formSelects/formSelects-v4.all.js b/src/main/resources/static/custom/module/formSelects/formSelects-v4.all.js new file mode 100755 index 00000000..6599c172 --- /dev/null +++ b/src/main/resources/static/custom/module/formSelects/formSelects-v4.all.js @@ -0,0 +1,1415 @@ +'use strict'; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/** + * name: formSelects + * 基于Layui Select多选 + * version: 4.0.0.formSelects + * http://sun.faysunshine.com/layui/formSelects-v4/dist/formSelects-v4.js + */ +(function (layui, window, factory) { + if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') { + // 支持 CommonJS + module.exports = factory(); + } else if (typeof define === 'function' && define.amd) { + // 支持 AMD + define(factory); + } else if (window.layui && layui.define) { + //layui加载 + layui.define(['jquery'], function (exports) { + exports('formSelects', factory()); + }); + } else { + window.formSelects = factory(); + } +})(typeof layui == 'undefined' ? null : layui, window, function () { + var v = '4.0.0.formSelects', + NAME = 'xm-select', + PNAME = 'xm-select-parent', + INPUT = 'xm-select-input', + TDIV = 'xm-select--suffix', + THIS = 'xm-select-this', + LABEL = 'xm-select-label', + SEARCH = 'xm-select-search', + CREATE = 'xm-select-create', + CREATE_LONG = 'xm-select-create-long', + MAX = 'xm-select-max', + SKIN = 'xm-select-skin', + DIRECTION = "xm-select-direction", + HEIGHT = 'xm-select-height', + DISABLED = 'xm-dis-disabled', + DIS = 'xm-select-dis', + TEMP = 'xm-select-temp', + RADIO = 'xm-select-radio', + LINKAGE = 'xm-select-linkage', + DL = 'xm-select-dl', + HIDE_INPUT = 'xm-hide-input', + SANJIAO = 'xm-select-sj', + ICON_CLOSE = 'xm-icon-close', + FORM_TITLE = 'xm-select-title', + FORM_SELECT = 'xm-form-select', + FORM_SELECTED = 'xm-form-selected', + FORM_NONE = 'xm-select-none', + FORM_EMPTY = 'xm-select-empty', + FORM_INPUT = 'xm-input', + FORM_SELECT_TIPS = 'xm-select-tips', + CHECKBOX_YES = 'xm-icon-yes', + CZ = 'xm-cz', + CZ_GROUP = 'xm-cz-group', + TIPS = '请选择', + data = {}, + events = { + on: {}, + filter: {}, + maxTips: {} + }, + ajax = { + type: 'get', + header: {}, + first: true, + data: {}, + searchUrl: '', + searchName: 'keyword', + searchVal: null, + keyName: 'name', + keyVal: 'value', + keySel: 'selected', + keyDis: 'disabled', + keyChildren: 'children', + dataType: '', + delay: 500, + beforeSuccess: null, + success: null, + error: null, + beforeSearch: null, + clearInput: false + }, + quickBtns = [{ icon: 'iconfont icon-quanxuan', name: '全选', click: function click(id, cm) { + cm.selectAll(id, true, true); + } }, { icon: 'iconfont icon-qingkong', name: '清空', click: function click(id, cm) { + cm.removeAll(id, true, true); + } }, { icon: 'iconfont icon-fanxuan', name: '反选', click: function click(id, cm) { + cm.reverse(id, true, true); + } }, { icon: 'iconfont icon-pifu', name: '换肤', click: function click(id, cm) { + cm.skin(id); + } }], + $ = window.$ || window.layui && window.layui.jquery, + $win = $(window), + ajaxs = {}, + FormSelects = function FormSelects(options) { + var _this = this; + + this.config = { + name: null, //xm-select="xxx" + max: null, + maxTips: function maxTips(vals, val, max) { + var ipt = $('[xid="' + _this.config.name + '"]').prev().find('.' + NAME); + if (ipt.parents('.layui-form-item[pane]').length) { + ipt = ipt.parents('.layui-form-item[pane]'); + } + ipt.attr('style', 'border-color: red !important'); + setTimeout(function () { + ipt.removeAttr('style'); + }, 300); + }, + init: null, //初始化的选择值, + on: null, //select值发生变化 + filter: function filter(id, inputVal, val, isDisabled) { + return val.name.indexOf(inputVal) == -1; + }, + clearid: -1, + direction: 'auto', + height: null, + isEmpty: false, + btns: [quickBtns[0], quickBtns[1], quickBtns[2]] + }; + this.select = null; + this.values = []; + $.extend(true, this.config, options); + }; + + //一些简单的处理方法 + var Common = function Common() { + this.loadingCss(); + this.appender(); + this.init(); + this.on(); + this.initVal(); + this.onreset(); + this.listening(); + }; + + Common.prototype.appender = function () { + //针对IE做的一些拓展 + if (!Array.prototype.map) { + Array.prototype.map = function (callback, thisArg) { + var T, + A, + k, + O = Object(this), + len = O.length >>> 0; + if (thisArg) { + T = thisArg; + } + A = new Array(len); + k = 0; + while (k < len) { + var kValue, mappedValue; + if (k in O) { + kValue = O[k]; + mappedValue = callback.call(T, kValue, k, O); + A[k] = mappedValue; + } + k++; + } + return A; + }; + } + if (!Array.prototype.forEach) { + Array.prototype.forEach = function forEach(callback, thisArg) { + var T, k; + if (this == null) { + throw new TypeError("this is null or not defined"); + } + var O = Object(this); + var len = O.length >>> 0; + if (typeof callback !== "function") { + throw new TypeError(callback + " is not a function"); + } + if (arguments.length > 1) { + T = thisArg; + } + k = 0; + while (k < len) { + var kValue; + if (k in O) { + + kValue = O[k]; + callback.call(T, kValue, k, O); + } + k++; + } + }; + } + }; + + Common.prototype.init = function (target) { + var _this2 = this; + + //初始化页面上已有的select + $(target ? target : 'select[' + NAME + ']').each(function (index, select) { + var othis = $(select), + id = othis.attr(NAME), + hasRender = othis.next('.layui-form-select'), + disabled = select.disabled, + max = othis.attr(MAX) - 0, + isSearch = othis.attr(SEARCH) != undefined, + searchUrl = isSearch ? othis.attr(SEARCH) : null, + isCreate = othis.attr(CREATE) != undefined, + isRadio = othis.attr(RADIO) != undefined, + skin = othis.attr(SKIN), + direction = othis.attr(DIRECTION), + optionsFirst = select.options[0], + height = othis.attr(HEIGHT), + formname = othis.attr('name'), + layverify = othis.attr('lay-verify'), + placeholder = optionsFirst ? optionsFirst.value ? TIPS : optionsFirst.innerHTML || TIPS : TIPS, + value = othis.find('option[selected]').toArray().map(function (option) { + //获取已选中的数据 + return { + name: option.innerHTML, + val: option.value + }; + }), + fs = new FormSelects(); + data[id] = fs; + //先取消layui对select的渲染 + hasRender[0] && hasRender.remove(); + + //包裹一个div + othis.wrap('
'); + + //构造渲染div + var dinfo = _this2.renderSelect(id, placeholder, select); + var heightStyle = height ? 'style="height: ' + height + ';"' : ''; + var inputHtml = height ? ['
', ''] : ['
', '', '
']; + var reElem = $('
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t' + inputHtml.join('') + '\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
' + dinfo + '
\n\t\t\t\t
'); + othis.after(reElem); + fs.select = othis.remove(); //去掉layui.form.render + fs.values = value; + fs.config.name = id; + fs.config.init = value.concat([]); + fs.config.direction = direction; + fs.config.height = height; + fs.config.radio = isRadio; + + if (max) { + //有最大值 + fs.config.max = max; + } + + //如果可搜索, 加上事件 + if (isSearch) { + reElem.find('.' + INPUT).on('input propertychange', function (e) { + var input = e.target, + inputValue = $.trim(input.value), + keyCode = e.keyCode; + if (keyCode === 9 || keyCode === 13 || keyCode === 37 || keyCode === 38 || keyCode === 39 || keyCode === 40) { + return false; + } + + //过滤一下tips + _this2.changePlaceHolder($(input)); + + var ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + searchUrl = ajaxConfig.searchUrl || searchUrl; + //如果开启了远程搜索 + if (searchUrl) { + if (ajaxConfig.searchVal) { + inputValue = ajaxConfig.searchVal; + ajaxConfig.searchVal = ''; + } + if (!ajaxConfig.beforeSearch || ajaxConfig.beforeSearch && ajaxConfig.beforeSearch instanceof Function && ajaxConfig.beforeSearch(id, searchUrl, inputValue)) { + var delay = ajaxConfig.delay; + if (ajaxConfig.first) { + ajaxConfig.first = false; + delay = 10; + } + clearTimeout(fs.clearid); + fs.clearid = setTimeout(function () { + reElem.find('dl > *:not(.' + FORM_SELECT_TIPS + ')').remove(); + reElem.find('dd.' + FORM_NONE).addClass(FORM_EMPTY).text('请求中'); + _this2.ajax(id, searchUrl, inputValue, false, null, true); + }, delay); + } + } else { + reElem.find('dl .layui-hide').removeClass('layui-hide'); + //遍历选项, 选择可以显示的值 + reElem.find('dl dd:not(.' + FORM_SELECT_TIPS + ')').each(function (idx, item) { + var _item = $(item); + var searchFun = data[id].config.filter || events.filter[id]; + if (searchFun && searchFun(id, inputValue, { + name: _item.find('span').text(), + val: _item.attr('lay-value') + }, _item.hasClass(DISABLED)) == true) { + _item.addClass('layui-hide'); + } + }); + //控制分组名称 + reElem.find('dl dt').each(function (index, item) { + if (!$(item).nextUntil('dt', ':not(.layui-hide)').length) { + $(item).addClass('layui-hide'); + } + }); + //动态创建 + _this2.create(id, isCreate, inputValue); + var shows = reElem.find('dl dd:not(.' + FORM_SELECT_TIPS + '):not(.layui-hide)'); + if (!shows.length) { + reElem.find('dd.' + FORM_NONE).addClass(FORM_EMPTY).text('无匹配项'); + } else { + reElem.find('dd.' + FORM_NONE).removeClass(FORM_EMPTY); + } + } + }); + if (searchUrl) { + //触发第一次请求事件 + _this2.triggerSearch(reElem, true); + } + } + }); + }; + + Common.prototype.isArray = function (obj) { + return Object.prototype.toString.call(obj) == "[object Array]"; + }; + + Common.prototype.triggerSearch = function (div, isCall) { + (div ? [div] : $('.' + FORM_SELECT).toArray()).forEach(function (reElem, index) { + reElem = $(reElem); + var id = reElem.find('dl').attr('xid'); + if (id && data[id] && data[id].config.isEmpty || isCall) { + var obj_caller = reElem.find('.' + INPUT)[0]; + if (document.createEventObject) { + obj_caller.fireEvent("onchange"); + } else { + var evt = document.createEvent("HTMLEvents"); + evt.initEvent("input", false, true); + obj_caller.dispatchEvent(evt); + } + } + }); + }; + + Common.prototype.ajax = function (id, searchUrl, inputValue, isLinkage, linkageWidth, isSearch) { + var _this3 = this; + + var reElem = $('.' + PNAME + ' dl[xid="' + id + '"]').parents('.' + FORM_SELECT); + if (!reElem[0] || !searchUrl) { + return; + } + + var ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + var ajaxData = $.extend(true, {}, ajaxConfig.data); + ajaxData[ajaxConfig.searchName] = inputValue; + ajaxData['_'] = Date.now(); + $.ajax({ + type: ajaxConfig.type, + headers: ajaxConfig.header, + url: searchUrl, + data: ajaxConfig.dataType == 'json' ? JSON.stringify(ajaxData) : ajaxData, + success: function success(res) { + if (typeof res == 'string') { + res = JSON.parse(res); + } + ajaxConfig.beforeSuccess && ajaxConfig.beforeSuccess instanceof Function && (res = ajaxConfig.beforeSuccess(id, searchUrl, inputValue, res)); + if (_this3.isArray(res)) { + res = { + code: 0, + msg: "", + data: res + }; + } + if (res.code != 0) { + reElem.find('dd.' + FORM_NONE).addClass(FORM_EMPTY).text(res.msg); + } else { + reElem.find('dd.' + FORM_NONE).removeClass(FORM_EMPTY); + //获得已选择的values + _this3.renderData(id, res.data, isLinkage, linkageWidth, isSearch); + data[id].config.isEmpty = res.data.length == 0; + } + ajaxConfig.success && ajaxConfig.success instanceof Function && ajaxConfig.success(id, searchUrl, inputValue, res); + }, + error: function error(err) { + reElem.find('dd[lay-value]:not(.' + FORM_SELECT_TIPS + ')').remove(); + reElem.find('dd.' + FORM_NONE).addClass(FORM_EMPTY).text('服务异常'); + ajaxConfig.error && ajaxConfig.error instanceof Function && ajaxConfig.error(id, searchUrl, inputValue, err); + } + }); + }; + + Common.prototype.renderData = function (id, dataArr, linkage, linkageWidth, isSearch) { + var _this4 = this; + + if (linkage) { + var _ret = function () { + //渲染多级联动 + var result = [], + index = 0, + temp = { "0": dataArr }, + ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + + var _loop = function _loop() { + var group = result[index++] = [], + _temp = temp; + temp = {}; + $.each(_temp, function (pid, arr) { + $.each(arr, function (idx, item) { + var val = { + pid: pid, + name: item[ajaxConfig.keyName], + val: item[ajaxConfig.keyVal] + }; + group.push(val); + var children = item[ajaxConfig.keyChildren]; + if (children && children.length) { + temp[val.val] = children; + } + }); + }); + }; + + do { + _loop(); + } while (Object.getOwnPropertyNames(temp).length); + + var reElem = $('.' + PNAME + ' dl[xid="' + id + '"]').parents('.' + FORM_SELECT); + var html = ['
']; + + $.each(result, function (idx, arr) { + var groupDiv = ['
']; + $.each(arr, function (idx2, item) { + var span = '
  • ' + item.name + '
  • '; + groupDiv.push(span); + }); + groupDiv.push('
    '); + html = html.concat(groupDiv); + }); + //
  • 123
  • + html.push('
    '); + html.push('
    '); + reElem.find('dl').html(html.join('')); + reElem.find('.' + INPUT).css('display', 'none'); //联动暂时不支持搜索 + return { + v: void 0 + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; + } + + var reElem = $('.' + PNAME + ' dl[xid="' + id + '"]').parents('.' + FORM_SELECT); + var ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + var pcInput = reElem.find('.' + TDIV + ' input'); + + var values = []; + reElem.find('dl').html(this.renderSelect(id, pcInput.attr('placeholder') || pcInput.attr('back'), dataArr.map(function (item) { + if (item[ajaxConfig.keySel]) { + values.push({ + name: item[ajaxConfig.keyName], + val: item[ajaxConfig.keyVal] + }); + } + return { + innerHTML: item[ajaxConfig.keyName], + value: item[ajaxConfig.keyVal], + sel: item[ajaxConfig.keySel], + disabled: item[ajaxConfig.keyDis], + type: item.type, + name: item.name + }; + }))); + + var label = reElem.find('.' + LABEL); + var dl = reElem.find('dl[xid]'); + if (isSearch) { + //如果是远程搜索, 这里需要判重 + var oldVal = data[id].values; + oldVal.forEach(function (item, index) { + dl.find('dd[lay-value="' + item.val + '"]').addClass(THIS); + }); + values.forEach(function (item, index) { + if (_this4.indexOf(oldVal, item) == -1) { + _this4.addLabel(id, label, item); + dl.find('dd[lay-value="' + item.val + '"]').addClass(THIS); + oldVal.push(item); + } + }); + } else { + values.forEach(function (item, index) { + _this4.addLabel(id, label, item); + dl.find('dd[lay-value="' + item.val + '"]').addClass(THIS); + }); + data[id].values = values; + } + this.commonHanler(id, label); + }; + + Common.prototype.create = function (id, isCreate, inputValue) { + if (isCreate && inputValue) { + var fs = data[id], + dl = $('[xid="' + id + '"]'), + tips = dl.find('dd.' + FORM_SELECT_TIPS + ':first'), + tdd = null, + temp = dl.find('dd.' + TEMP); + dl.find('dd:not(.' + FORM_SELECT_TIPS + '):not(.' + TEMP + ')').each(function (index, item) { + if (inputValue == $(item).find('span').text()) { + tdd = item; + } + }); + if (!tdd) { + //如果不存在, 则创建 + if (temp[0]) { + temp.attr('lay-value', inputValue); + temp.find('span').text(inputValue); + temp.removeClass('layui-hide'); + } else { + tips.after($(this.createDD({ + innerHTML: inputValue, + value: Date.now() + }, TEMP + ' ' + CREATE_LONG))); + } + } + } else { + $('[xid=' + id + '] dd.' + TEMP).remove(); + } + }; + + Common.prototype.createDD = function (item, clz) { + return '
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t' + $.trim(item.innerHTML) + '\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    '; + }; + + Common.prototype.createQuickBtn = function (obj, right) { + return '
    ' + obj.name + '
    '; + }; + + Common.prototype.renderBtns = function (id, show, right) { + var _this5 = this; + + var quickBtn = []; + var dl = $('dl[xid="' + id + '"]'); + quickBtn.push('
    '); + $.each(data[id].config.btns, function (index, item) { + quickBtn.push(_this5.createQuickBtn(item, right)); + }); + quickBtn.push('
    '); + quickBtn.push(this.createQuickBtn({ icon: 'iconfont icon-caidan', name: '' })); + return quickBtn.join(''); + }; + + Common.prototype.renderSelect = function (id, tips, select) { + var _this6 = this; + + var arr = []; + if (data[id].config.btns.length) { + setTimeout(function () { + var dl = $('dl[xid="' + id + '"]'); + dl.find('.' + CZ_GROUP).css('max-width', dl.prev().width() - 54 + 'px'); + }, 10); + arr.push(['
    ', this.renderBtns(id, null, '30px'), '
    '].join('')); + } else { + arr.push('
    ' + tips + '
    '); + } + if (this.isArray(select)) { + $(select).each(function (index, item) { + if (item.type === 'optgroup') { + arr.push('
    ' + item.name + '
    '); + } else { + arr.push(_this6.createDD(item)); + } + }); + } else { + $(select).find('*').each(function (index, item) { + if (item.tagName.toLowerCase() == 'option' && index == 0 && !item.value) { + return; + } + if (item.tagName.toLowerCase() === 'optgroup') { + arr.push('
    ' + item.label + '
    '); + } else { + arr.push(_this6.createDD(item)); + } + }); + } + arr.push('
    '); + arr.push('
    \u6CA1\u6709\u9009\u9879
    '); + return arr.join(''); + }; + + Common.prototype.on = function () { + var _this7 = this; + + //事件绑定 + this.one(); + + $(document).on('click', function (e) { + if (!$(e.target).parents('.' + FORM_TITLE)[0]) { + //清空input中的值 + $('.' + INPUT).val(''); + $('.' + PNAME + ' dl .layui-hide').removeClass('layui-hide'); + $('.' + PNAME + ' dl dd.' + TEMP).remove(); + _this7.triggerSearch(); + } + $('.' + PNAME + ' .' + FORM_SELECTED).removeClass(FORM_SELECTED); + }); + }; + + Common.prototype.one = function (target) { + var _this8 = this; + + //一次性事件绑定 + $(target ? target : document).find('.' + FORM_TITLE).off('click').on('click', function (e) { + var othis = $(e.target), + title = othis.is(FORM_TITLE) ? othis : othis.parents('.' + FORM_TITLE), + dl = title.next(), + id = dl.attr('xid'); + + //清空非本select的input val + $('dl[xid]').not(dl).prev().find('.' + INPUT).val(''); + $('dl[xid]').not(dl).find('dd.layui-hide').removeClass('layui-hide'); + + //如果是disabled select + if (title.hasClass(DIS)) { + return false; + } + //如果点击的是右边的三角或者只读的input + if (othis.is('.' + SANJIAO) || othis.is('.' + INPUT + '[readonly]')) { + _this8.changeShow(title, !title.parents('.' + FORM_SELECT).hasClass(FORM_SELECTED)); + return false; + } + //如果点击的是input的右边, focus一下 + if (title.find('.' + INPUT + ':not(readonly)')[0]) { + var input = title.find('.' + INPUT), + epos = { x: e.pageX, y: e.pageY }, + pos = _this8.getPosition(title[0]), + width = title.width(); + while (epos.x > pos.x) { + if ($(document.elementFromPoint(epos.x, epos.y)).is(input)) { + input.focus(); + _this8.changeShow(title, true); + return false; + } + epos.x -= 50; + } + } + + //如果点击的是可搜索的input + if (othis.is('.' + INPUT)) { + _this8.changeShow(title, true); + return false; + } + //如果点击的是x按钮 + if (othis.is('i[fsw="' + NAME + '"]')) { + var val = { + name: othis.prev().text(), + val: othis.parent().attr("value") + }, + dd = dl.find('dd[lay-value=\'' + val.val + '\']'); + if (dd.hasClass(DISABLED)) { + //如果是disabled状态, 不可选, 不可删 + return false; + } + _this8.handlerLabel(id, dd, false, val); + return false; + } + + _this8.changeShow(title, !title.parents('.' + FORM_SELECT).hasClass(FORM_SELECTED)); + return false; + }); + $(target ? target : document).find('dl.' + DL).off('click').on('click', function (e) { + var othis = $(e.target); + if (othis.is('.' + LINKAGE) || othis.parents('.' + LINKAGE)[0]) { + //linkage的处理 + othis = othis.is('li') ? othis : othis.parents('li'); + var _group = othis.parents('.xm-select-linkage-group'), + _id = othis.parents('dl').attr('xid'); + //激活li + _group.find('.xm-select-active').removeClass('xm-select-active'); + othis.addClass('xm-select-active'); + //激活下一个group, 激活前显示对应数据 + _group.nextAll('.xm-select-linkage-group').addClass('xm-select-linkage-hide'); + var nextGroup = _group.next('.xm-select-linkage-group'); + nextGroup.find('li').addClass('xm-select-linkage-hide'); + nextGroup.find('li[pid="' + othis.attr('value') + '"]').removeClass('xm-select-linkage-hide'); + //如果没有下一个group, 或没有对应的值 + if (!nextGroup[0] || nextGroup.find('li:not(.xm-select-linkage-hide)').length == 0) { + var vals = [], + index = 0, + _isAdd = !othis.hasClass('xm-select-this'); + if (data[_id].config.radio) { + othis.parents('.xm-select-linkage').find('.xm-select-this').removeClass('xm-select-this'); + } + do { + vals[index++] = { + name: othis.find('span').text(), + val: othis.attr('value') + /*isAdd ? ( + othis.addClass('xm-select-this') + ) : ( + !othis.parent('.xm-select-linkage-group').next().find(`li[pid="${othis.attr('value')}"].xm-select-this`).length && othis.removeClass('xm-select-this') + );*/ + };othis = othis.parents('.xm-select-linkage-group').prev().find('li[value="' + othis.attr('pid') + '"]'); + } while (othis.length); + vals.reverse(); + var val = { + name: vals.map(function (item) { + return item.name; + }).join('/'), + val: vals.map(function (item) { + return item.val; + }).join('/') + }; + _this8.handlerLabel(_id, null, _isAdd, val); + } else { + nextGroup.removeClass('xm-select-linkage-hide'); + } + return false; + } //xm-select-this xm-select-active + + if (othis.is('dt') || othis.is('dl')) { + return false; + } + var dd = othis.is('dd') ? othis : othis.parents('dd'); + var id = dd.parent('dl').attr('xid'); + if (dd.hasClass(DISABLED)) { + //被禁用选项的处理 + return false; + } + if (dd.hasClass(FORM_SELECT_TIPS)) { + //tips的处理 + var btn = othis.is('.' + CZ) ? othis : othis.parents('.' + CZ); + if (!btn[0]) { + return false; + } + //TODO 快捷操作 + var method = btn.attr('method'); + var obj = data[id].config.btns.filter(function (bean) { + return bean.name == method; + })[0]; + obj && obj.click && obj.click instanceof Function && obj.click(id, _this8); + return false; + } + var isAdd = !dd.hasClass(THIS); + _this8.handlerLabel(id, dd, isAdd); + return false; + }); + }; + + Common.prototype.linkageAdd = function (id, val) { + var dl = $('dl[xid="' + id + '"]'); + dl.find('.xm-select-active').removeClass('xm-select-active'); + var vs = val.val.split('/'); + var pid = void 0, + li = void 0, + index = 0; + var lis = []; + do { + pid = vs[index]; + li = dl.find('.xm-select-linkage-group' + (index + 1) + ' li[value="' + pid + '"]'); + li[0] && lis.push(li); + index++; + } while (li.length && pid != undefined); + if (lis.length == vs.length) { + $.each(lis, function (idx, item) { + item.addClass('xm-select-this'); + }); + } + }; + + Common.prototype.linkageDel = function (id, val) { + var dl = $('dl[xid="' + id + '"]'); + var vs = val.val.split('/'); + var pid = void 0, + li = void 0, + index = vs.length - 1; + do { + pid = vs[index]; + li = dl.find('.xm-select-linkage-group' + (index + 1) + ' li[value="' + pid + '"]'); + if (!li.parent().next().find('li[pid=' + pid + '].xm-select-this').length) { + li.removeClass('xm-select-this'); + } + index--; + } while (li.length && pid != undefined); + }; + + Common.prototype.valToName = function (id, val) { + var dl = $('dl[xid="' + id + '"]'); + var vs = (val + "").split('/'); + var names = []; + $.each(vs, function (idx, item) { + var name = dl.find('.xm-select-linkage-group' + (idx + 1) + ' li[value="' + item + '"] span').text(); + names.push(name); + }); + return names.length == vs.length ? names.join('/') : null; + }; + + Common.prototype.commonHanler = function (key, label) { + //计算input的提示语 + this.changePlaceHolder(label); + //计算高度 + this.retop(label.parents('.' + FORM_SELECT)); + this.checkHideSpan(label); + this.calcLeft(key, label); + //表单默认值 + label.parents('.' + PNAME).find('.' + HIDE_INPUT).val(data[key].values.map(function (val) { + return val.val; + }).join(',')); + //title值 + label.parents('.' + FORM_TITLE + ' .' + NAME).attr('title', data[key].values.map(function (val) { + return val.name; + }).join(',')); + }; + + Common.prototype.initVal = function (id) { + var _this9 = this; + + var target = {}; + if (id) { + target[id] = data[id]; + } else { + target = data; + } + $.each(target, function (key, val) { + var values = val.values, + div = $('dl[xid="' + key + '"]').parent(), + label = div.find('.' + LABEL), + dl = div.find('dl'); + dl.find('dd.' + THIS).removeClass(THIS); + + var _vals = values.concat([]); + _vals.concat([]).forEach(function (item, index) { + _this9.addLabel(key, label, item); + dl.find('dd[lay-value="' + item.val + '"]').addClass(THIS); + }); + if (val.config.radio) { + _vals.length && values.push(_vals[_vals.length - 1]); + } + _this9.commonHanler(key, label); + }); + }; + + Common.prototype.handlerLabel = function (id, dd, isAdd, oval, notOn) { + var div = $('[xid="' + id + '"]').prev().find('.' + LABEL), + val = dd && { + name: dd.find('span').text(), + val: dd.attr('lay-value') + }, + vals = data[id].values, + on = data[id].config.on || events.on[id]; + if (oval) { + val = oval; + } + var fs = data[id]; + if (isAdd && fs.config.max && fs.values.length >= fs.config.max) { + var maxTipsFun = data[id].config.maxTips || events.maxTips[id]; + maxTipsFun && maxTipsFun(id, vals.concat([]), val, fs.max); + return; + } + if (!notOn) { + if (on && on instanceof Function && on(id, vals.concat([]), val, isAdd, dd && dd.hasClass(DISABLED) == false)) { + return; + } + } + var dl = $('dl[xid="' + id + '"]'); + isAdd ? (dd && dd[0] ? (dd.addClass(THIS), dd.removeClass(TEMP)) : dl.find('.xm-select-linkage')[0] && this.linkageAdd(id, val), this.addLabel(id, div, val), vals.push(val)) : (dd && dd[0] ? dd.removeClass(THIS) : dl.find('.xm-select-linkage')[0] && this.linkageDel(id, val), this.delLabel(id, div, val), this.remove(vals, val)); + if (!div[0]) return; + //单选选完后直接关闭选择域 + if (fs.config.radio) { + this.changeShow(div, false); + } + //移除表单验证的红色边框 + div.parents('.' + FORM_TITLE).prev().removeClass('layui-form-danger'); + + //清空搜索值 + fs.config.clearInput && div.parents('.' + PNAME).find('.' + INPUT).val(''); + + this.commonHanler(id, div); + }; + + Common.prototype.addLabel = function (id, div, val) { + if (!val) return; + var tips = 'fsw="' + NAME + '"'; + var _ref = [$('' + val.name + ''), $('\xD7')], + $label = _ref[0], + $close = _ref[1]; + + $label.append($close); + //如果是radio模式 + var fs = data[id]; + if (fs.config.radio) { + fs.values.length = 0; + $('dl[xid="' + id + '"]').find('dd.' + THIS + ':not([lay-value="' + val.val + '"])').removeClass(THIS); + div.find('span').remove(); + } + //如果是固定高度 + if (fs.config.height) { + div.append($label); + } else { + div.find('input').css('width', '50px'); + div.find('input').before($label); + } + }; + + Common.prototype.delLabel = function (id, div, val) { + if (!val) return; + div.find('span[value="' + val.val + '"]:first').remove(); + }; + + Common.prototype.calcLeft = function (id, div) { + if (data[id].config.height) { + var showLastSpan = div.find('span:not(.xm-span-hide):last')[0]; + div.next().css('left', (showLastSpan ? this.getPosition(showLastSpan).x - this.getPosition(div[0]).x + showLastSpan.offsetWidth + 20 : 10) + 'px'); + } + }; + + Common.prototype.checkHideSpan = function (div) { + var _this10 = this; + + var parentHeight = div.parents('.' + NAME)[0].offsetHeight + 5; + div.find('span.xm-span-hide').removeClass('xm-span-hide'); + div.find('span').each(function (index, item) { + if (item.offsetHeight + item.offsetTop > parentHeight || _this10.getPosition(item).y + item.offsetHeight > _this10.getPosition(div[0]).y + div[0].offsetHeight + 5) { + $(item).addClass('xm-span-hide'); + } + }); + }; + + Common.prototype.retop = function (div) { + //计算dl显示的位置 + var dl = div.find('dl'), + top = div.offset().top + div.outerHeight() + 5 - $win.scrollTop(), + dlHeight = dl.outerHeight(); + var up = div.hasClass('layui-form-selectup') || dl.css('top').indexOf('-') != -1 || top + dlHeight > $win.height() && top >= dlHeight; + div = div.find('.' + NAME); + + var fs = data[dl.attr('xid')]; + var base = dl.parents('.layui-form-pane')[0] && dl.prev()[0].clientHeight > 38 ? 14 : 10; + if (fs) { + if (fs.config.direction == 'up') { + dl.css({ + top: 'auto', + bottom: '42px' + }); + return; + } + if (fs.direction == 'down') { + dl.css({ + top: div[0].offsetTop + div.height() + base + 'px', + bottom: 'auto' + }); + return; + } + } + + if (up) { + dl.css({ + top: 'auto', + bottom: '42px' + }); + } else { + dl.css({ + top: div[0].offsetTop + div.height() + base + 'px', + bottom: 'auto' + }); + } + }; + + Common.prototype.changeShow = function (children, isShow) { + //显示于隐藏 + var top = children.parents('.' + FORM_SELECT); + $('.' + PNAME + ' .' + FORM_SELECT).not(top).removeClass(FORM_SELECTED); + if (isShow) { + this.retop(top); + top.addClass(FORM_SELECTED); + top.find('.' + INPUT).focus(); + } else { + top.removeClass(FORM_SELECTED); + top.find('.' + INPUT).val(''); + top.find('dl .layui-hide').removeClass('layui-hide'); + top.find('dl dd.' + TEMP).remove(); + //计算ajax数据是否为空, 然后重新请求数据 + var id = top.find('dl').attr('xid'); + if (id && data[id] && data[id].config.isEmpty) { + this.triggerSearch(top); + } + } + }; + + Common.prototype.changePlaceHolder = function (div) { + //显示于隐藏提示语 + //调整pane模式下的高度 + var title = div.parents('.' + FORM_TITLE); + + var id = div.parents('.' + PNAME).find('dl[xid]').attr('xid'); + if (data[id] && data[id].config.height) {//既然固定高度了, 那就看着办吧 + + } else { + var height = title.find('.' + NAME)[0].clientHeight; + title.css('height', (height > 34 ? height + 4 : height) + 'px'); + //如果是layui pane模式, 处理label的高度 + var label = title.parents('.' + PNAME).parent().prev(); + if (label.is('.layui-form-label') && title.parents('.layui-form-pane')[0]) { + height = height > 36 ? height + 4 : height; + title.css('height', height + 'px'); + label.css({ + height: height + 2 + 'px', + lineHeight: height - 18 + 'px' + }); + } + } + + var input = title.find('.' + TDIV + ' input'), + isShow = !div.find('span:last')[0] && !title.find('.' + INPUT).val(); + if (isShow) { + var ph = input.attr('back'); + input.removeAttr('back'); + input.attr('placeholder', ph); + } else { + var _ph = input.attr('placeholder'); + input.removeAttr('placeholder'); + input.attr('back', _ph); + } + }; + + Common.prototype.indexOf = function (arr, val) { + for (var i = 0; i < arr.length; i++) { + if (arr[i].val == val || arr[i].val == (val ? val.val : val) || arr[i] == val || JSON.stringify(arr[i]) == JSON.stringify(val)) { + return i; + } + } + return -1; + }; + + Common.prototype.remove = function (arr, val) { + var idx = this.indexOf(arr, val ? val.val : val); + if (idx > -1) { + arr.splice(idx, 1); + return true; + } + return false; + }; + + Common.prototype.selectAll = function (id, isOn, skipDis) { + var _this11 = this; + + var dl = $('[xid="' + id + '"]'); + if (dl.find('.xm-select-linkage')[0]) { + return; + } + dl.find('dd[lay-value]:not(.' + FORM_SELECT_TIPS + '):not(.' + THIS + ')' + (skipDis ? ':not(.' + DISABLED + ')' : '')).each(function (index, item) { + item = $(item); + var val = { + name: item.find('span').text(), + val: item.attr('lay-value') + }; + _this11.handlerLabel(id, dl.find('dd[lay-value="' + val.val + '"]'), true, val, !isOn); + }); + }; + + Common.prototype.removeAll = function (id, isOn, skipDis) { + var _this12 = this; + + var dl = $('[xid="' + id + '"]'); + if (dl.find('.xm-select-linkage')[0]) { + //针对多级联动的处理 + data[id].values.concat([]).forEach(function (item, idx) { + var vs = item.val.split('/'); + var pid = void 0, + li = void 0, + index = 0; + do { + pid = vs[index++]; + li = dl.find('.xm-select-linkage-group' + index + ':not(.xm-select-linkage-hide) li[value="' + pid + '"]'); + li.click(); + } while (li.length && pid != undefined); + }); + return; + } + data[id].values.concat([]).forEach(function (item, index) { + if (skipDis && dl.find('dd[lay-value="' + item.val + '"]').hasClass(DISABLED)) {} else { + _this12.handlerLabel(id, dl.find('dd[lay-value="' + item.val + '"]'), false, item, !isOn); + } + }); + }; + + Common.prototype.reverse = function (id, isOn, skipDis) { + var _this13 = this; + + var dl = $('[xid="' + id + '"]'); + if (dl.find('.xm-select-linkage')[0]) { + return; + } + dl.find('dd[lay-value]:not(.' + FORM_SELECT_TIPS + ')' + (skipDis ? ':not(.' + DISABLED + ')' : '')).each(function (index, item) { + item = $(item); + var val = { + name: item.find('span').text(), + val: item.attr('lay-value') + }; + _this13.handlerLabel(id, dl.find('dd[lay-value="' + val.val + '"]'), !item.hasClass(THIS), val, !isOn); + }); + }; + + Common.prototype.skin = function (id) { + var skins = ['default', 'primary', 'normal', 'warm', 'danger']; + var skin = skins[Math.floor(Math.random() * skins.length)]; + $('dl[xid="' + id + '"]').parents('.' + PNAME).find('.' + FORM_SELECT).attr('xm-select-skin', skin); + this.commonHanler(id, $('dl[xid="' + id + '"]').parents('.' + PNAME).find('.' + LABEL)); + }; + + Common.prototype.getPosition = function (e) { + var x = 0, + y = 0; + while (e != null) { + x += e.offsetLeft; + y += e.offsetTop; + e = e.offsetParent; + } + return { x: x, y: y }; + }; + + Common.prototype.onreset = function () { + //监听reset按钮, 然后重置多选 + $(document).on('click', '[type=reset]', function (e) { + $(e.target).parents('form').find('.' + PNAME + ' dl[xid]').each(function (index, item) { + var id = item.getAttribute('xid'), + dl = $(item), + dd = void 0, + temp = {}; + common.removeAll(id); + data[id].config.init.forEach(function (val, idx) { + if (val && (!temp[val] || data[id].config.repeat) && (dd = dl.find('dd[lay-value="' + val.val + '"]'))[0]) { + common.handlerLabel(id, dd, true); + temp[val] = 1; + } + }); + }); + }); + }; + + Common.prototype.loadingCss = function () { + var cssStyle = $('' + ''); + $('head link:last')[0] && $('head link:last').after(cssStyle) || $('head').append(cssStyle); + }; + + Common.prototype.listening = function () { + //TODO 用于监听dom结构变化, 如果出现新的为渲染select, 则自动进行渲染 + var flag = false; + var index = 0; + $(document).on('DOMNodeInserted', function (e) { + if (flag) { + //避免递归渲染 + return; + } + flag = true; + //渲染select + $('select[' + NAME + ']').each(function (index, select) { + var sid = select.getAttribute(NAME); + common.init(select); + common.one($('dl[xid="' + sid + '"]').parents('.' + PNAME)); + common.initVal(sid); + }); + + flag = false; + }); + }; + + var Select4 = function Select4() { + this.v = v; + }; + var common = new Common(); + + Select4.prototype.value = function (id, type, isAppend) { + if (typeof id != 'string') { + return []; + } + var fs = data[id]; + if (!fs) { + return []; + } + if (typeof type == 'string' || type == undefined) { + var arr = fs.values.concat([]) || []; + if (type == 'val') { + return arr.map(function (val) { + return val.val; + }); + } + if (type == 'valStr') { + return arr.map(function (val) { + return val.val; + }).join(','); + } + if (type == 'name') { + return arr.map(function (val) { + return val.name; + }); + } + if (type == 'nameStr') { + return arr.map(function (val) { + return val.name; + }).join(','); + } + return arr; + } + if (common.isArray(type)) { + var dl = $('[xid="' + id + '"]'), + temp = {}, + dd = void 0, + isAdd = true; + if (isAppend == false) { + //删除传入的数组 + isAdd = false; + } else if (isAppend == true) { + //追加模式 + isAdd = true; + } else { + //删除原有的数据 + common.removeAll(id); + } + if (isAdd) { + fs.values.forEach(function (val, index) { + temp[val.val] = 1; + }); + } + type.forEach(function (val, index) { + if (val && (!temp[val] || fs.config.repeat)) { + if ((dd = dl.find('dd[lay-value="' + val + '"]'))[0]) { + common.handlerLabel(id, dd, isAdd, null, true); + temp[val] = 1; + } else { + var name = common.valToName(id, val); + if (name) { + common.handlerLabel(id, dd, isAdd, { + name: name, + val: val + }, true); + temp[val] = 1; + } + } + } + }); + } + }; + + Common.prototype.bindEvent = function (name, id, fun) { + if (id && id instanceof Function) { + fun = id; + id = null; + } + if (fun && fun instanceof Function) { + if (!id) { + $.each(data, function (id, val) { + data[id] ? data[id].config[name] = fun : events[name][id] = fun; + }); + } else { + data[id] ? data[id].config[name] = fun : events[name][id] = fun; + } + } + }; + + Select4.prototype.on = function (id, fun) { + common.bindEvent('on', id, fun); + return this; + }; + + Select4.prototype.filter = function (id, fun) { + common.bindEvent('filter', id, fun); + return this; + }; + + Select4.prototype.maxTips = function (id, fun) { + common.bindEvent('maxTips', id, fun); + return this; + }; + + Select4.prototype.config = function (id, config, isJson) { + if (id && (typeof id === 'undefined' ? 'undefined' : _typeof(id)) == 'object') { + isJson = config == true; + config = id; + id = null; + } + if (config && (typeof config === 'undefined' ? 'undefined' : _typeof(config)) == 'object') { + if (isJson) { + config.header || (config.header = {}); + config.header['Content-Type'] = 'application/json; charset=UTF-8'; + config.dataType = 'json'; + } + id ? (ajaxs[id] = $.extend(true, {}, ajax, config), data[id] && (data[id].config.direction = config.direction), config.searchUrl && data[id] && common.triggerSearch($('.' + PNAME + ' dl[xid="' + id + '"]').parents('.' + FORM_SELECT), true)) : $.extend(true, ajax, config); + } + return this; + }; + + Select4.prototype.render = function (id) { + var _this14 = this; + + var target = {}; + id ? data[id] && (target[id] = data[id]) : data; + + if (Object.getOwnPropertyNames(target).length) { + $.each(target, function (key, val) { + //恢复初始值 + var dl = $('dl[xid="' + key + '"]'), + vals = []; + val.select.find('option[selected]').each(function (index, item) { + vals.push(item.value); + }); + //移除创建元素 + dl.find('.' + CREATE_LONG).remove(); + //清空INPUT + dl.prev().find('.' + INPUT).val(''); + //触发search + common.triggerSearch(dl.parents('.' + FORM_SELECT), true); + //移除hidn + dl.find('.layui-hide').removeClass('layui-hide'); + //重新赋值 + _this14.value(key, vals); + }); + } + ($('select[' + NAME + '="' + id + '"]')[0] ? $('select[' + NAME + '="' + id + '"]') : $('select[' + NAME + ']')).each(function (index, select) { + var sid = select.getAttribute(NAME); + common.init(select); + common.one($('dl[xid="' + sid + '"]').parents('.' + PNAME)); + common.initVal(sid); + }); + return this; + }; + + Select4.prototype.disabled = function (id) { + var target = {}; + id ? data[id] && (target[id] = data[id]) : target = data; + + $.each(target, function (key, val) { + $('dl[xid="' + key + '"]').prev().addClass(DIS); + }); + return this; + }; + + Select4.prototype.undisabled = function (id) { + var target = {}; + id ? data[id] && (target[id] = data[id]) : target = data; + + $.each(target, function (key, val) { + $('dl[xid="' + key + '"]').prev().removeClass(DIS); + }); + return this; + }; + + Select4.prototype.data = function (id, type, config) { + if (!id || !type || !config) { + return this; + } + //检测该id是否尚未渲染 + !data[id] && this.render(id).value(id, []); + this.config(id, config); + if (type == 'local') { + common.renderData(id, config.arr, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100'); + } else if (type == 'server') { + common.ajax(id, config.url, config.keyword, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100'); + } + return this; + }; + + Select4.prototype.btns = function (id, btns, config) { + if (!btns || !common.isArray(btns)) { + return this; + }; + var target = {}; + id ? data[id] && (target[id] = data[id]) : target = data; + + btns = btns.map(function (obj) { + if (typeof obj == 'string') { + if (obj == 'select') { + return quickBtns[0]; + } + if (obj == 'remove') { + return quickBtns[1]; + } + if (obj == 'reverse') { + return quickBtns[2]; + } + if (obj == 'skin') { + return quickBtns[3]; + } + } + return obj; + }); + + $.each(target, function (key, val) { + val.config.btns = btns; + var dd = $('dl[xid="' + key + '"]').find('.' + FORM_SELECT_TIPS + ':first'); + if (btns.length) { + var show = config && config.show && (config.show == 'name' || config.show == 'icon') ? config.show : ''; + var html = common.renderBtns(key, show, config && config.space ? config.space : '30px'); + dd.html(html); + } else { + var pcInput = dd.parents('.' + FORM_SELECT).find('.' + TDIV + ' input'); + var _html = pcInput.attr('placeholder') || pcInput.attr('back'); + dd.html(_html); + dd.removeAttr('style'); + } + }); + + return this; + }; + + Select4.prototype.search = function (id, val) { + if (id && data[id]) { + ajaxs[id] = $.extend(true, {}, ajax, { + first: true, + searchVal: val + }); + common.triggerSearch($('dl[xid="' + id + '"]').parents('.' + FORM_SELECT), true); + } + return this; + }; + + return new Select4(); +}); \ No newline at end of file diff --git a/src/main/resources/static/custom/module/formSelects/formSelects-v4.css b/src/main/resources/static/custom/module/formSelects/formSelects-v4.css new file mode 100755 index 00000000..626a4d59 --- /dev/null +++ b/src/main/resources/static/custom/module/formSelects/formSelects-v4.css @@ -0,0 +1,156 @@ +/* formSelects多选css */ +.xm-select-parent * {margin: 0;padding: 0;font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif;} +.xm-select-parent {text-align: left;} +.xm-select-parent select {display: none;} +.xm-select-parent .xm-select-title {position: relative;min-height: 36px;} +.xm-select-parent .xm-input {cursor: pointer;border-radius: 2px;border-width: 1px;border-style: solid;border-color: #E6E6E6;display: block;width: 100%;box-sizing: border-box;background-color: #FFF;height: 36px;line-height: 1.3;padding-left: 10px;outline: 0} +.xm-select-parent .xm-select-sj {display: inline-block;width: 0;height: 0;border-style: dashed;border-color: transparent;overflow: hidden;position: absolute;right: 10px;top: 50%;margin-top: -3px;cursor: pointer;border-width: 6px;border-top-color: #C2C2C2;border-top-style: solid;transition: all .3s;-webkit-transition: all .3s} +.xm-select-parent .xm-form-selected .xm-select-sj {margin-top: -9px;transform: rotate(180deg)} +.xm-select-parent .xm-form-select dl {display: none;position: absolute;left: 0;top: 42px;padding: 5px 0;z-index: 999;min-width: 100%;border: 1px solid #d2d2d2;max-height: 300px;overflow-y: auto;background-color: #fff;border-radius: 2px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12);box-sizing: border-box;animation-fill-mode: both;-webkit-animation-name: layui-upbit;animation-name: layui-upbit;-webkit-animation-duration: .3s;animation-duration: .3s;-webkit-animation-fill-mode: both;animation-fill-mode: both} +@-webkit-keyframes layui-upbit { + from {-webkit-transform: translate3d(0, 30px, 0);opacity: .3} + to {-webkit-transform: translate3d(0, 0, 0);opacity: 1} +} +@keyframes layui-upbit { + from {transform: translate3d(0, 30px, 0);opacity: .3} + to {transform: translate3d(0, 0, 0);opacity: 1} +} +.xm-select-parent .xm-form-selected dl {display: block} +.xm-select-parent .xm-form-select dl dd,.xm-select-parent .xm-form-select dl dt {padding: 0 10px;line-height: 36px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis} +.xm-select-parent .xm-form-select dl dd {cursor: pointer;height: 36px;} +.xm-select-parent .xm-form-select dl dd:hover {background-color: #f2f2f2} +.xm-select-parent .xm-form-select dl dt {font-size: 12px;color: #999} +.layui-select-disabled .xm-dis-disabled {border-color: #eee!important} +.xm-select-parent .xm-form-select dl .xm-select-tips {padding-left: 10px!important;color: #999;font-size: 14px} +.xm-unselect {-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none} +.xm-form-checkbox {position: relative;display: inline-block;vertical-align: middle;height: 30px;line-height: 30px;margin-right: 10px;padding-right: 30px;background-color: #fff;cursor: pointer;font-size: 0;-webkit-transition: .1s linear;transition: .1s linear;box-sizing: border-box} +.xm-form-checkbox * {display: inline-block;vertical-align: middle} +.xm-form-checkbox span {padding: 0 10px;height: 100%;font-size: 14px;border-radius: 2px 0 0 2px;background-color: #d2d2d2;color: #fff;overflow: hidden;white-space: nowrap;text-overflow: ellipsis} +.xm-form-checkbox:hover span {background-color: #c2c2c2} +.xm-form-checkbox i {position: absolute;right: 0;top: 0;width: 30px;height: 28px;border: 1px solid #d2d2d2;border-left: none;border-radius: 0 2px 2px 0;color: #fff;font-size: 20px;text-align: center} +.xm-form-checkbox:hover i {border-color: #c2c2c2;color: #c2c2c2} +.xm-form-checkbox[lay-skin=primary] {height: auto!important;line-height: normal!important;border: none!important;margin-right: 0;padding-right: 0;background: 0 0} +.xm-form-checkbox[lay-skin=primary] span {float: right;padding-right: 15px;line-height: 18px;background: 0 0;color: #666} +.xm-form-checkbox[lay-skin=primary] i {position: relative;top: 0;width: 16px;height: 16px;line-height: 16px;border: 1px solid #d2d2d2;font-size: 12px;border-radius: 2px;background-color: #fff;-webkit-transition: .1s linear;transition: .1s linear} +.xm-form-checkbox[lay-skin=primary]:hover i {border-color: #5FB878;color: #fff} +.xm-icon-yes {width: 30px;height: 30px;border-radius: 4px;background-color: #009688;position: relative} +.xm-icon-yes:after {content: '';display: inline-block;border: 2px solid #fff;border-top-width: 0;border-right-width: 0;width: 9px;height: 5px;-webkit-transform: rotate(-50deg);transform: rotate(-50deg);position: absolute;top: 2px;left: 3px} +.xm-dis-disabled,.xm-dis-disabled:hover {color: #d2d2d2!important;cursor: not-allowed!important} +.xm-form-select dl dd.xm-dis-disabled {background-color: #fff!important} +.xm-form-select dl dd.xm-dis-disabled span {color: #C2C2C2} +.xm-form-select dl dd.xm-dis-disabled .xm-icon-yes {border-color: #C2C2C2} +.xm-select-parent {position: relative;-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none} +.xm-select-parent .xm-select {line-height: normal;height: auto;padding: 4px 10px 1px 10px;overflow: hidden;min-height: 36px;left: 0;z-index: 99;position: absolute;background: 0 0;padding-right: 20px} +.xm-select-parent .xm-select:hover {border-color: #C0C4CC} +.xm-select-parent .xm-select .xm-select-label {display: inline-block;margin: 0;vertical-align: middle} +.xm-select-parent .xm-select-title div.xm-select-label>span {position: relative;padding: 2px 5px;background-color: #009688;border-radius: 2px;color: #FFF;display: inline-block;line-height: 18px;height: 18px;margin: 2px 5px 2px 0;cursor: initial;user-select: none;font-size: 14px;padding-right: 25px;} +.xm-select-parent .xm-select-title div.xm-select-label>span i {position: absolute;right: 5px;top: 2px;margin-left: 8px;border-radius: 20px;font-size: 18px;cursor: pointer;display: inline-block;height: 14px;line-height: 15px;width: 12px;vertical-align: top;margin-top: 2px;} +.xm-select-parent .xm-select .xm-select-input {border: none;height: 28px;background-color: transparent;padding: 0;vertical-align: middle;display: inline-block;width: 50px} +.xm-select-parent .xm-select--suffix input {border: none} +.xm-select-parent dl dd.xm-dis-disabled.xm-select-this i {border-color: #C2C2C2;background-color: #C2C2C2;color: #FFF} +.xm-select-parent dl dd.xm-select-this i {background-color: #009688;border-color: #009688} +.xm-form-selected .xm-select,.xm-form-selected .xm-select:hover {border-color: #009688!important} +.xm-select--suffix+div {position: absolute;top: 0;left: 0;bottom: 0;right: 0} +.xm-select-dis .xm-select--suffix+div {z-index: 100;cursor: no-drop!important;opacity: .2;background-color: #FFF;} +.xm-select-disabled,.xm-select-disabled:hover {color: #d2d2d2!important;cursor: not-allowed!important;background-color: #fff} +.xm-select-none {display: none;margin: 5px 0;text-align: center;} +.xm-select-none:hover {background-color: #FFF!important} +.xm-select-empty {display: block} +.xm-span-hide {display: none!important;} +.xm-select-radio .xm-icon-yes {border-radius: 20px!important;} +.xm-select-radio .xm-icon-yes:after {border-radius: 20px;background-color: #fff;width: 6px;height: 6px;border: none;top: 5px;left: 5px;} +.layui-form-pane .xm-select,.layui-form-pane .xm-select:hover {border: none!important;top: 0px} +.layui-form-pane .xm-select-title {border: 1px solid #e6e6e6!important} + + +/* 颜色相关 */ +div[xm-select-skin] .xm-select-title div.xm-select-label>span {border: 1px solid #009688} +div[xm-select-skin] .xm-select-title div.xm-select-label>span i:hover {opacity: .8;filter: alpha(opacity=80);cursor: pointer} +div[xm-select-skin=default] .xm-select-title div.xm-select-label>span {background-color: #F0F2F5;color: #909399;border: 1px solid #F0F2F5} +div[xm-select-skin=default] .xm-select-title div.xm-select-label>span i {background-color: #C0C4CC;color: #FFF} +div[xm-select-skin=default] dl dd.xm-select-this:not(.xm-dis-disabled) i {background-color: #5FB878;border-color: #5FB878;color: #FFF} +div[xm-select-skin=default].xm-form-selected .xm-select,div[xm-select-skin=default].xm-form-selected .xm-select:hover {border-color: #C0C4CC!important} +div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span {background-color: #009688;color: #FFF;border: 1px solid #009688} +div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span i {background-color: #009688;color: #FFF} +div[xm-select-skin=primary] dl dd.xm-select-this:not(.xm-dis-disabled) i {background-color: #009688;border-color: #009688;color: #FFF} +div[xm-select-skin=primary].xm-form-selected .xm-select,div[xm-select-skin=primary].xm-form-selected .xm-select:hover {border-color: #009688!important} +div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span {background-color: #1E9FFF;color: #FFF;border: 1px solid #1E9FFF} +div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span i {background-color: #1E9FFF;color: #FFF} +div[xm-select-skin=normal] dl dd.xm-select-this:not(.xm-dis-disabled) i {background-color: #1E9FFF;border-color: #1E9FFF;color: #FFF} +div[xm-select-skin=normal].xm-form-selected .xm-select,div[xm-select-skin=normal].xm-form-selected .xm-select:hover {border-color: #1E9FFF!important} +div[xm-select-skin=warm] .xm-select-title div.xm-select-label>span {background-color: #FFB800;color: #FFF;border: 1px solid #FFB800} +div[xm-select-skin=warm] .xm-select-title div.xm-select-label>span i {background-color: #FFB800;color: #FFF} +div[xm-select-skin=warm] dl dd.xm-select-this:not(.xm-dis-disabled) i {background-color: #FFB800;border-color: #FFB800;color: #FFF} +div[xm-select-skin=warm].xm-form-selected .xm-select,div[xm-select-skin=warm].xm-form-selected .xm-select:hover {border-color: #FFB800!important} +div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span {background-color: #FF5722;color: #FFF;border: 1px solid #FF5722} +div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span i {background-color: #FF5722;color: #FFF} +div[xm-select-skin=danger] dl dd.xm-select-this:not(.xm-dis-disabled) i {background-color: #FF5722;border-color: #FF5722;color: #FFF} +div[xm-select-skin=danger].xm-form-selected .xm-select,div[xm-select-skin=danger].xm-form-selected .xm-select:hover {border-color: #FF5722!important} + + +/* 多选联动 */ +.xm-select-parent .layui-form-danger+.xm-select-title .xm-select {border-color: #FF5722 !important;} +.xm-select-linkage li {padding: 10px 0px;cursor: pointer;} +.xm-select-linkage li span {padding-left: 20px;padding-right: 30px;display: inline-block;height: 20px;overflow: hidden;text-overflow: ellipsis;} +.xm-select-linkage li.xm-select-this span {border-left: 5px solid #009688;color: #009688;padding-left: 15px;} +.xm-select-linkage-group {position: absolute;left: 0;top: 0;right: 0;bottom: 0;overflow-x: hidden;overflow-y: auto;} +.xm-select-linkage-group li:hover {border-left: 1px solid #009688;} +.xm-select-linkage-group li:hover span {padding-left: 19px;} +.xm-select-linkage-group li.xm-select-this:hover span {padding-left: 15px;border-left-width: 4px;} +.xm-select-linkage-group:nth-child(4n+1){background-color: #EFEFEF; left: 0;} +.xm-select-linkage-group:nth-child(4n+1) li.xm-select-active{background-color: #F5F5F5;} +.xm-select-linkage-group:nth-child(4n+2){background-color: #F5F5F5; left: 100px;} +.xm-select-linkage-group:nth-child(4n+3) li.xm-select-active{background-color: #FAFAFA;} +.xm-select-linkage-group:nth-child(4n+3){background-color: #FAFAFA; left: 200px;} +.xm-select-linkage-group:nth-child(4n+3) li.xm-select-active{background-color: #FFFFFF;} +.xm-select-linkage-group:nth-child(4n+4){background-color: #FFFFFF; left: 300px;} +.xm-select-linkage-group:nth-child(4n+4) li.xm-select-active{background-color: #EFEFEF;} +.xm-select-linkage li{list-style: none;} +.xm-select-linkage-hide {display: none;} +.xm-select-linkage-show {display: block;} + +div[xm-select-skin='default'] .xm-select-linkage li.xm-select-this span {border-left-color: #5FB878;color: #5FB878;} +div[xm-select-skin='default'] .xm-select-linkage-group li:hover {border-left-color: #5FB878;} +div[xm-select-skin='primary'] .xm-select-linkage li.xm-select-this span {border-left-color: #1E9FFF;color: #1E9FFF;} +div[xm-select-skin='primary'] .xm-select-linkage-group li:hover {border-left-color: #1E9FFF;} +div[xm-select-skin='normal'] .xm-select-linkage li.xm-select-this span {border-left-color: #1E9FFF;color: #1E9FFF;} +div[xm-select-skin='normal'] .xm-select-linkage-group li:hover {border-left-color: #1E9FFF;} +div[xm-select-skin='warm'] .xm-select-linkage li.xm-select-this span {border-left-color: #FFB800;color: #FFB800;} +div[xm-select-skin='warm'] .xm-select-linkage-group li:hover {border-left-color: #FFB800;} +div[xm-select-skin='danger'] .xm-select-linkage li.xm-select-this span {border-left-color: #FF5722;color: #FF5722;} +div[xm-select-skin='danger'] .xm-select-linkage-group li:hover {border-left-color: #FF5722;} +.xm-form-checkbox[lay-skin=primary] i {top: 9px} +.xm-form-checkbox[lay-skin=primary] span {line-height: 36px;} + + +/* 快捷操作 */ +.xm-select-tips[style]:hover{background-color: #FFF!important;} +.xm-select-parent dd > .xm-cz{position: absolute; top: 5px; right: 10px;} +.xm-select-parent dd > .xm-cz-group{margin-right: 30px; border-right: 2px solid #ddd; height: 16px; margin-top: 10px; line-height: 16px; overflow: hidden;} +.xm-select-parent dd > .xm-cz-group .xm-cz{display: inline-block; margin-right: 30px;} +.xm-select-parent dd > .xm-cz-group .xm-cz i{margin-right: 10px;} +.xm-select-parent dd > .xm-cz-group[show='name'] .xm-cz i{display: none;} +.xm-select-parent dd > .xm-cz-group[show='icon'] .xm-cz span{display: none;} +.xm-select-parent dd .xm-cz:hover{color: #009688;} +div[xm-select-skin='default'] dd .xm-cz:hover{color: #C0C4CC;} +div[xm-select-skin='primary'] dd .xm-cz:hover{color: #009688;} +div[xm-select-skin='normal'] dd .xm-cz:hover{color: #1E9FFF;} +div[xm-select-skin='warm'] dd .xm-cz:hover{color: #FFB800;} +div[xm-select-skin='danger'] dd .xm-cz:hover{color: #FF5722;} + + + +/* 阿里巴巴矢量图标库 */ +@font-face { + font-family: "iconfont"; + src: url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff'); +} +.iconfont {font-family:"iconfont" !important; font-size:16px; font-style:normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;} +.icon-quanxuan:before { content: "\e62c"; } +.icon-caidan:before { content: "\e610"; } +.icon-fanxuan:before { content: "\e837"; } +.icon-pifu:before { content: "\e668"; } +.icon-qingkong:before { content: "\e63e"; } + + + diff --git a/src/main/resources/static/custom/module/formSelects/formSelects-v4.js b/src/main/resources/static/custom/module/formSelects/formSelects-v4.js new file mode 100755 index 00000000..f613eeca --- /dev/null +++ b/src/main/resources/static/custom/module/formSelects/formSelects-v4.js @@ -0,0 +1,1412 @@ +'use strict'; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +/** + * name: formSelects + * 基于Layui Select多选 + * version: 4.0.0.formSelects + * http://sun.faysunshine.com/layui/formSelects-v4/dist/formSelects-v4.js + */ +(function (layui, window, factory) { + if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') { + // 支持 CommonJS + module.exports = factory(); + } else if (typeof define === 'function' && define.amd) { + // 支持 AMD + define(factory); + } else if (window.layui && layui.define) { + //layui加载 + layui.define(['jquery'], function (exports) { + exports('formSelects', factory()); + }); + } else { + window.formSelects = factory(); + } +})(typeof layui == 'undefined' ? null : layui, window, function () { + var v = '4.0.0.formSelects', + NAME = 'xm-select', + PNAME = 'xm-select-parent', + INPUT = 'xm-select-input', + TDIV = 'xm-select--suffix', + THIS = 'xm-select-this', + LABEL = 'xm-select-label', + SEARCH = 'xm-select-search', + CREATE = 'xm-select-create', + CREATE_LONG = 'xm-select-create-long', + MAX = 'xm-select-max', + SKIN = 'xm-select-skin', + DIRECTION = "xm-select-direction", + HEIGHT = 'xm-select-height', + DISABLED = 'xm-dis-disabled', + DIS = 'xm-select-dis', + TEMP = 'xm-select-temp', + RADIO = 'xm-select-radio', + LINKAGE = 'xm-select-linkage', + DL = 'xm-select-dl', + HIDE_INPUT = 'xm-hide-input', + SANJIAO = 'xm-select-sj', + ICON_CLOSE = 'xm-icon-close', + FORM_TITLE = 'xm-select-title', + FORM_SELECT = 'xm-form-select', + FORM_SELECTED = 'xm-form-selected', + FORM_NONE = 'xm-select-none', + FORM_EMPTY = 'xm-select-empty', + FORM_INPUT = 'xm-input', + FORM_SELECT_TIPS = 'xm-select-tips', + CHECKBOX_YES = 'xm-icon-yes', + CZ = 'xm-cz', + CZ_GROUP = 'xm-cz-group', + TIPS = '请选择', + data = {}, + events = { + on: {}, + filter: {}, + maxTips: {} + }, + ajax = { + type: 'get', + header: {}, + first: true, + data: {}, + searchUrl: '', + searchName: 'keyword', + searchVal: null, + keyName: 'name', + keyVal: 'value', + keySel: 'selected', + keyDis: 'disabled', + keyChildren: 'children', + dataType: '', + delay: 500, + beforeSuccess: null, + success: null, + error: null, + beforeSearch: null, + clearInput: false + }, + quickBtns = [{ icon: 'iconfont icon-quanxuan', name: '全选', click: function click(id, cm) { + cm.selectAll(id, true, true); + } }, { icon: 'iconfont icon-qingkong', name: '清空', click: function click(id, cm) { + cm.removeAll(id, true, true); + } }, { icon: 'iconfont icon-fanxuan', name: '反选', click: function click(id, cm) { + cm.reverse(id, true, true); + } }, { icon: 'iconfont icon-pifu', name: '换肤', click: function click(id, cm) { + cm.skin(id); + } }], + $ = window.$ || window.layui && window.layui.jquery, + $win = $(window), + ajaxs = {}, + FormSelects = function FormSelects(options) { + var _this = this; + + this.config = { + name: null, //xm-select="xxx" + max: null, + maxTips: function maxTips(vals, val, max) { + var ipt = $('[xid="' + _this.config.name + '"]').prev().find('.' + NAME); + if (ipt.parents('.layui-form-item[pane]').length) { + ipt = ipt.parents('.layui-form-item[pane]'); + } + ipt.attr('style', 'border-color: red !important'); + setTimeout(function () { + ipt.removeAttr('style'); + }, 300); + }, + init: null, //初始化的选择值, + on: null, //select值发生变化 + filter: function filter(id, inputVal, val, isDisabled) { + return val.name.indexOf(inputVal) == -1; + }, + clearid: -1, + direction: 'auto', + height: null, + isEmpty: false, + btns: [quickBtns[0], quickBtns[1], quickBtns[2]] + }; + this.select = null; + this.values = []; + $.extend(true, this.config, options); + }; + + //一些简单的处理方法 + var Common = function Common() { + this.loadingCss(); + this.appender(); + this.init(); + this.on(); + this.initVal(); + this.onreset(); + this.listening(); + }; + + Common.prototype.appender = function () { + //针对IE做的一些拓展 + if (!Array.prototype.map) { + Array.prototype.map = function (callback, thisArg) { + var T, + A, + k, + O = Object(this), + len = O.length >>> 0; + if (thisArg) { + T = thisArg; + } + A = new Array(len); + k = 0; + while (k < len) { + var kValue, mappedValue; + if (k in O) { + kValue = O[k]; + mappedValue = callback.call(T, kValue, k, O); + A[k] = mappedValue; + } + k++; + } + return A; + }; + } + if (!Array.prototype.forEach) { + Array.prototype.forEach = function forEach(callback, thisArg) { + var T, k; + if (this == null) { + throw new TypeError("this is null or not defined"); + } + var O = Object(this); + var len = O.length >>> 0; + if (typeof callback !== "function") { + throw new TypeError(callback + " is not a function"); + } + if (arguments.length > 1) { + T = thisArg; + } + k = 0; + while (k < len) { + var kValue; + if (k in O) { + + kValue = O[k]; + callback.call(T, kValue, k, O); + } + k++; + } + }; + } + }; + + Common.prototype.init = function (target) { + var _this2 = this; + + //初始化页面上已有的select + $(target ? target : 'select[' + NAME + ']').each(function (index, select) { + var othis = $(select), + id = othis.attr(NAME), + hasRender = othis.next('.layui-form-select'), + disabled = select.disabled, + max = othis.attr(MAX) - 0, + isSearch = othis.attr(SEARCH) != undefined, + searchUrl = isSearch ? othis.attr(SEARCH) : null, + isCreate = othis.attr(CREATE) != undefined, + isRadio = othis.attr(RADIO) != undefined, + skin = othis.attr(SKIN), + direction = othis.attr(DIRECTION), + optionsFirst = select.options[0], + height = othis.attr(HEIGHT), + formname = othis.attr('name'), + layverify = othis.attr('lay-verify'), + placeholder = optionsFirst ? optionsFirst.value ? TIPS : optionsFirst.innerHTML || TIPS : TIPS, + value = othis.find('option[selected]').toArray().map(function (option) { + //获取已选中的数据 + return { + name: option.innerHTML, + val: option.value + }; + }), + fs = new FormSelects(); + data[id] = fs; + //先取消layui对select的渲染 + hasRender[0] && hasRender.remove(); + + //包裹一个div + othis.wrap('
    '); + + //构造渲染div + var dinfo = _this2.renderSelect(id, placeholder, select); + var heightStyle = height ? 'style="height: ' + height + ';"' : ''; + var inputHtml = height ? ['
    ', ''] : ['
    ', '', '
    ']; + var reElem = $('
    \n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t' + inputHtml.join('') + '\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    ' + dinfo + '
    \n\t\t\t\t
    '); + othis.after(reElem); + fs.select = othis.remove(); //去掉layui.form.render + fs.values = value; + fs.config.name = id; + fs.config.init = value.concat([]); + fs.config.direction = direction; + fs.config.height = height; + fs.config.radio = isRadio; + + if (max) { + //有最大值 + fs.config.max = max; + } + + //如果可搜索, 加上事件 + if (isSearch) { + reElem.find('.' + INPUT).on('input propertychange', function (e) { + var input = e.target, + inputValue = $.trim(input.value), + keyCode = e.keyCode; + if (keyCode === 9 || keyCode === 13 || keyCode === 37 || keyCode === 38 || keyCode === 39 || keyCode === 40) { + return false; + } + + //过滤一下tips + _this2.changePlaceHolder($(input)); + + var ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + searchUrl = ajaxConfig.searchUrl || searchUrl; + //如果开启了远程搜索 + if (searchUrl) { + if (ajaxConfig.searchVal) { + inputValue = ajaxConfig.searchVal; + ajaxConfig.searchVal = ''; + } + if (!ajaxConfig.beforeSearch || ajaxConfig.beforeSearch && ajaxConfig.beforeSearch instanceof Function && ajaxConfig.beforeSearch(id, searchUrl, inputValue)) { + var delay = ajaxConfig.delay; + if (ajaxConfig.first) { + ajaxConfig.first = false; + delay = 10; + } + clearTimeout(fs.clearid); + fs.clearid = setTimeout(function () { + reElem.find('dl > *:not(.' + FORM_SELECT_TIPS + ')').remove(); + reElem.find('dd.' + FORM_NONE).addClass(FORM_EMPTY).text('请求中'); + _this2.ajax(id, searchUrl, inputValue, false, null, true); + }, delay); + } + } else { + reElem.find('dl .layui-hide').removeClass('layui-hide'); + //遍历选项, 选择可以显示的值 + reElem.find('dl dd:not(.' + FORM_SELECT_TIPS + ')').each(function (idx, item) { + var _item = $(item); + var searchFun = data[id].config.filter || events.filter[id]; + if (searchFun && searchFun(id, inputValue, { + name: _item.find('span').text(), + val: _item.attr('lay-value') + }, _item.hasClass(DISABLED)) == true) { + _item.addClass('layui-hide'); + } + }); + //控制分组名称 + reElem.find('dl dt').each(function (index, item) { + if (!$(item).nextUntil('dt', ':not(.layui-hide)').length) { + $(item).addClass('layui-hide'); + } + }); + //动态创建 + _this2.create(id, isCreate, inputValue); + var shows = reElem.find('dl dd:not(.' + FORM_SELECT_TIPS + '):not(.layui-hide)'); + if (!shows.length) { + reElem.find('dd.' + FORM_NONE).addClass(FORM_EMPTY).text('无匹配项'); + } else { + reElem.find('dd.' + FORM_NONE).removeClass(FORM_EMPTY); + } + } + }); + if (searchUrl) { + //触发第一次请求事件 + _this2.triggerSearch(reElem, true); + } + } + }); + }; + + Common.prototype.isArray = function (obj) { + return Object.prototype.toString.call(obj) == "[object Array]"; + }; + + Common.prototype.triggerSearch = function (div, isCall) { + (div ? [div] : $('.' + FORM_SELECT).toArray()).forEach(function (reElem, index) { + reElem = $(reElem); + var id = reElem.find('dl').attr('xid'); + if (id && data[id] && data[id].config.isEmpty || isCall) { + var obj_caller = reElem.find('.' + INPUT)[0]; + if (document.createEventObject) { + obj_caller.fireEvent("onchange"); + } else { + var evt = document.createEvent("HTMLEvents"); + evt.initEvent("input", false, true); + obj_caller.dispatchEvent(evt); + } + } + }); + }; + + Common.prototype.ajax = function (id, searchUrl, inputValue, isLinkage, linkageWidth, isSearch) { + var _this3 = this; + + var reElem = $('.' + PNAME + ' dl[xid="' + id + '"]').parents('.' + FORM_SELECT); + if (!reElem[0] || !searchUrl) { + return; + } + + var ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + var ajaxData = $.extend(true, {}, ajaxConfig.data); + ajaxData[ajaxConfig.searchName] = inputValue; + ajaxData['_'] = Date.now(); + $.ajax({ + type: ajaxConfig.type, + headers: ajaxConfig.header, + url: searchUrl, + data: ajaxConfig.dataType == 'json' ? JSON.stringify(ajaxData) : ajaxData, + success: function success(res) { + if (typeof res == 'string') { + res = JSON.parse(res); + } + ajaxConfig.beforeSuccess && ajaxConfig.beforeSuccess instanceof Function && (res = ajaxConfig.beforeSuccess(id, searchUrl, inputValue, res)); + if (_this3.isArray(res)) { + res = { + code: 0, + msg: "", + data: res + }; + } + if (res.code != 0) { + reElem.find('dd.' + FORM_NONE).addClass(FORM_EMPTY).text(res.msg); + } else { + reElem.find('dd.' + FORM_NONE).removeClass(FORM_EMPTY); + //获得已选择的values + _this3.renderData(id, res.data, isLinkage, linkageWidth, isSearch); + data[id].config.isEmpty = res.data.length == 0; + } + ajaxConfig.success && ajaxConfig.success instanceof Function && ajaxConfig.success(id, searchUrl, inputValue, res); + }, + error: function error(err) { + reElem.find('dd[lay-value]:not(.' + FORM_SELECT_TIPS + ')').remove(); + reElem.find('dd.' + FORM_NONE).addClass(FORM_EMPTY).text('服务异常'); + ajaxConfig.error && ajaxConfig.error instanceof Function && ajaxConfig.error(id, searchUrl, inputValue, err); + } + }); + }; + + Common.prototype.renderData = function (id, dataArr, linkage, linkageWidth, isSearch) { + var _this4 = this; + + if (linkage) { + var _ret = function () { + //渲染多级联动 + var result = [], + index = 0, + temp = { "0": dataArr }, + ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + + var _loop = function _loop() { + var group = result[index++] = [], + _temp = temp; + temp = {}; + $.each(_temp, function (pid, arr) { + $.each(arr, function (idx, item) { + var val = { + pid: pid, + name: item[ajaxConfig.keyName], + val: item[ajaxConfig.keyVal] + }; + group.push(val); + var children = item[ajaxConfig.keyChildren]; + if (children && children.length) { + temp[val.val] = children; + } + }); + }); + }; + + do { + _loop(); + } while (Object.getOwnPropertyNames(temp).length); + + var reElem = $('.' + PNAME + ' dl[xid="' + id + '"]').parents('.' + FORM_SELECT); + var html = ['
    ']; + + $.each(result, function (idx, arr) { + var groupDiv = ['
    ']; + $.each(arr, function (idx2, item) { + var span = '
  • ' + item.name + '
  • '; + groupDiv.push(span); + }); + groupDiv.push('
    '); + html = html.concat(groupDiv); + }); + //
  • 123
  • + html.push('
    '); + html.push('
    '); + reElem.find('dl').html(html.join('')); + reElem.find('.' + INPUT).css('display', 'none'); //联动暂时不支持搜索 + return { + v: void 0 + }; + }(); + + if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v; + } + + var reElem = $('.' + PNAME + ' dl[xid="' + id + '"]').parents('.' + FORM_SELECT); + var ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + var pcInput = reElem.find('.' + TDIV + ' input'); + + var values = []; + reElem.find('dl').html(this.renderSelect(id, pcInput.attr('placeholder') || pcInput.attr('back'), dataArr.map(function (item) { + if (item[ajaxConfig.keySel]) { + values.push({ + name: item[ajaxConfig.keyName], + val: item[ajaxConfig.keyVal] + }); + } + return { + innerHTML: item[ajaxConfig.keyName], + value: item[ajaxConfig.keyVal], + sel: item[ajaxConfig.keySel], + disabled: item[ajaxConfig.keyDis], + type: item.type, + name: item.name + }; + }))); + + var label = reElem.find('.' + LABEL); + var dl = reElem.find('dl[xid]'); + if (isSearch) { + //如果是远程搜索, 这里需要判重 + var oldVal = data[id].values; + oldVal.forEach(function (item, index) { + dl.find('dd[lay-value="' + item.val + '"]').addClass(THIS); + }); + values.forEach(function (item, index) { + if (_this4.indexOf(oldVal, item) == -1) { + _this4.addLabel(id, label, item); + dl.find('dd[lay-value="' + item.val + '"]').addClass(THIS); + oldVal.push(item); + } + }); + } else { + values.forEach(function (item, index) { + _this4.addLabel(id, label, item); + dl.find('dd[lay-value="' + item.val + '"]').addClass(THIS); + }); + data[id].values = values; + } + this.commonHanler(id, label); + }; + + Common.prototype.create = function (id, isCreate, inputValue) { + if (isCreate && inputValue) { + var fs = data[id], + dl = $('[xid="' + id + '"]'), + tips = dl.find('dd.' + FORM_SELECT_TIPS + ':first'), + tdd = null, + temp = dl.find('dd.' + TEMP); + dl.find('dd:not(.' + FORM_SELECT_TIPS + '):not(.' + TEMP + ')').each(function (index, item) { + if (inputValue == $(item).find('span').text()) { + tdd = item; + } + }); + if (!tdd) { + //如果不存在, 则创建 + if (temp[0]) { + temp.attr('lay-value', inputValue); + temp.find('span').text(inputValue); + temp.removeClass('layui-hide'); + } else { + tips.after($(this.createDD({ + innerHTML: inputValue, + value: Date.now() + }, TEMP + ' ' + CREATE_LONG))); + } + } + } else { + $('[xid=' + id + '] dd.' + TEMP).remove(); + } + }; + + Common.prototype.createDD = function (item, clz) { + return '
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t' + $.trim(item.innerHTML) + '\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    '; + }; + + Common.prototype.createQuickBtn = function (obj, right) { + return '
    ' + obj.name + '
    '; + }; + + Common.prototype.renderBtns = function (id, show, right) { + var _this5 = this; + + var quickBtn = []; + var dl = $('dl[xid="' + id + '"]'); + quickBtn.push('
    '); + $.each(data[id].config.btns, function (index, item) { + quickBtn.push(_this5.createQuickBtn(item, right)); + }); + quickBtn.push('
    '); + quickBtn.push(this.createQuickBtn({ icon: 'iconfont icon-caidan', name: '' })); + return quickBtn.join(''); + }; + + Common.prototype.renderSelect = function (id, tips, select) { + var _this6 = this; + + var arr = []; + if (data[id].config.btns.length) { + setTimeout(function () { + var dl = $('dl[xid="' + id + '"]'); + dl.find('.' + CZ_GROUP).css('max-width', dl.prev().width() - 54 + 'px'); + }, 10); + arr.push(['
    ', this.renderBtns(id, null, '30px'), '
    '].join('')); + } else { + arr.push('
    ' + tips + '
    '); + } + if (this.isArray(select)) { + $(select).each(function (index, item) { + if (item.type === 'optgroup') { + arr.push('
    ' + item.name + '
    '); + } else { + arr.push(_this6.createDD(item)); + } + }); + } else { + $(select).find('*').each(function (index, item) { + if (item.tagName.toLowerCase() == 'option' && index == 0 && !item.value) { + return; + } + if (item.tagName.toLowerCase() === 'optgroup') { + arr.push('
    ' + item.label + '
    '); + } else { + arr.push(_this6.createDD(item)); + } + }); + } + arr.push('
    '); + arr.push('
    \u6CA1\u6709\u9009\u9879
    '); + return arr.join(''); + }; + + Common.prototype.on = function () { + var _this7 = this; + + //事件绑定 + this.one(); + + $(document).on('click', function (e) { + if (!$(e.target).parents('.' + FORM_TITLE)[0]) { + //清空input中的值 + $('.' + INPUT).val(''); + $('.' + PNAME + ' dl .layui-hide').removeClass('layui-hide'); + $('.' + PNAME + ' dl dd.' + TEMP).remove(); + _this7.triggerSearch(); + } + $('.' + PNAME + ' .' + FORM_SELECTED).removeClass(FORM_SELECTED); + }); + }; + + Common.prototype.one = function (target) { + var _this8 = this; + + //一次性事件绑定 + $(target ? target : document).find('.' + FORM_TITLE).off('click').on('click', function (e) { + var othis = $(e.target), + title = othis.is(FORM_TITLE) ? othis : othis.parents('.' + FORM_TITLE), + dl = title.next(), + id = dl.attr('xid'); + + //清空非本select的input val + $('dl[xid]').not(dl).prev().find('.' + INPUT).val(''); + $('dl[xid]').not(dl).find('dd.layui-hide').removeClass('layui-hide'); + + //如果是disabled select + if (title.hasClass(DIS)) { + return false; + } + //如果点击的是右边的三角或者只读的input + if (othis.is('.' + SANJIAO) || othis.is('.' + INPUT + '[readonly]')) { + _this8.changeShow(title, !title.parents('.' + FORM_SELECT).hasClass(FORM_SELECTED)); + return false; + } + //如果点击的是input的右边, focus一下 + if (title.find('.' + INPUT + ':not(readonly)')[0]) { + var input = title.find('.' + INPUT), + epos = { x: e.pageX, y: e.pageY }, + pos = _this8.getPosition(title[0]), + width = title.width(); + while (epos.x > pos.x) { + if ($(document.elementFromPoint(epos.x, epos.y)).is(input)) { + input.focus(); + _this8.changeShow(title, true); + return false; + } + epos.x -= 50; + } + } + + //如果点击的是可搜索的input + if (othis.is('.' + INPUT)) { + _this8.changeShow(title, true); + return false; + } + //如果点击的是x按钮 + if (othis.is('i[fsw="' + NAME + '"]')) { + var val = { + name: othis.prev().text(), + val: othis.parent().attr("value") + }, + dd = dl.find('dd[lay-value=\'' + val.val + '\']'); + if (dd.hasClass(DISABLED)) { + //如果是disabled状态, 不可选, 不可删 + return false; + } + _this8.handlerLabel(id, dd, false, val); + return false; + } + + _this8.changeShow(title, !title.parents('.' + FORM_SELECT).hasClass(FORM_SELECTED)); + return false; + }); + $(target ? target : document).find('dl.' + DL).off('click').on('click', function (e) { + var othis = $(e.target); + if (othis.is('.' + LINKAGE) || othis.parents('.' + LINKAGE)[0]) { + //linkage的处理 + othis = othis.is('li') ? othis : othis.parents('li'); + var _group = othis.parents('.xm-select-linkage-group'), + _id = othis.parents('dl').attr('xid'); + //激活li + _group.find('.xm-select-active').removeClass('xm-select-active'); + othis.addClass('xm-select-active'); + //激活下一个group, 激活前显示对应数据 + _group.nextAll('.xm-select-linkage-group').addClass('xm-select-linkage-hide'); + var nextGroup = _group.next('.xm-select-linkage-group'); + nextGroup.find('li').addClass('xm-select-linkage-hide'); + nextGroup.find('li[pid="' + othis.attr('value') + '"]').removeClass('xm-select-linkage-hide'); + //如果没有下一个group, 或没有对应的值 + if (!nextGroup[0] || nextGroup.find('li:not(.xm-select-linkage-hide)').length == 0) { + var vals = [], + index = 0, + _isAdd = !othis.hasClass('xm-select-this'); + if (data[_id].config.radio) { + othis.parents('.xm-select-linkage').find('.xm-select-this').removeClass('xm-select-this'); + } + do { + vals[index++] = { + name: othis.find('span').text(), + val: othis.attr('value') + /*isAdd ? ( + othis.addClass('xm-select-this') + ) : ( + !othis.parent('.xm-select-linkage-group').next().find(`li[pid="${othis.attr('value')}"].xm-select-this`).length && othis.removeClass('xm-select-this') + );*/ + };othis = othis.parents('.xm-select-linkage-group').prev().find('li[value="' + othis.attr('pid') + '"]'); + } while (othis.length); + vals.reverse(); + var val = { + name: vals.map(function (item) { + return item.name; + }).join('/'), + val: vals.map(function (item) { + return item.val; + }).join('/') + }; + _this8.handlerLabel(_id, null, _isAdd, val); + } else { + nextGroup.removeClass('xm-select-linkage-hide'); + } + return false; + } //xm-select-this xm-select-active + + if (othis.is('dt') || othis.is('dl')) { + return false; + } + var dd = othis.is('dd') ? othis : othis.parents('dd'); + var id = dd.parent('dl').attr('xid'); + if (dd.hasClass(DISABLED)) { + //被禁用选项的处理 + return false; + } + if (dd.hasClass(FORM_SELECT_TIPS)) { + //tips的处理 + var btn = othis.is('.' + CZ) ? othis : othis.parents('.' + CZ); + if (!btn[0]) { + return false; + } + //TODO 快捷操作 + var method = btn.attr('method'); + var obj = data[id].config.btns.filter(function (bean) { + return bean.name == method; + })[0]; + obj && obj.click && obj.click instanceof Function && obj.click(id, _this8); + return false; + } + var isAdd = !dd.hasClass(THIS); + _this8.handlerLabel(id, dd, isAdd); + return false; + }); + }; + + Common.prototype.linkageAdd = function (id, val) { + var dl = $('dl[xid="' + id + '"]'); + dl.find('.xm-select-active').removeClass('xm-select-active'); + var vs = val.val.split('/'); + var pid = void 0, + li = void 0, + index = 0; + var lis = []; + do { + pid = vs[index]; + li = dl.find('.xm-select-linkage-group' + (index + 1) + ' li[value="' + pid + '"]'); + li[0] && lis.push(li); + index++; + } while (li.length && pid != undefined); + if (lis.length == vs.length) { + $.each(lis, function (idx, item) { + item.addClass('xm-select-this'); + }); + } + }; + + Common.prototype.linkageDel = function (id, val) { + var dl = $('dl[xid="' + id + '"]'); + var vs = val.val.split('/'); + var pid = void 0, + li = void 0, + index = vs.length - 1; + do { + pid = vs[index]; + li = dl.find('.xm-select-linkage-group' + (index + 1) + ' li[value="' + pid + '"]'); + if (!li.parent().next().find('li[pid=' + pid + '].xm-select-this').length) { + li.removeClass('xm-select-this'); + } + index--; + } while (li.length && pid != undefined); + }; + + Common.prototype.valToName = function (id, val) { + var dl = $('dl[xid="' + id + '"]'); + var vs = (val + "").split('/'); + var names = []; + $.each(vs, function (idx, item) { + var name = dl.find('.xm-select-linkage-group' + (idx + 1) + ' li[value="' + item + '"] span').text(); + names.push(name); + }); + return names.length == vs.length ? names.join('/') : null; + }; + + Common.prototype.commonHanler = function (key, label) { + //计算input的提示语 + this.changePlaceHolder(label); + //计算高度 + this.retop(label.parents('.' + FORM_SELECT)); + this.checkHideSpan(label); + this.calcLeft(key, label); + //表单默认值 + label.parents('.' + PNAME).find('.' + HIDE_INPUT).val(data[key].values.map(function (val) { + return val.val; + }).join(',')); + //title值 + label.parents('.' + FORM_TITLE + ' .' + NAME).attr('title', data[key].values.map(function (val) { + return val.name; + }).join(',')); + }; + + Common.prototype.initVal = function (id) { + var _this9 = this; + + var target = {}; + if (id) { + target[id] = data[id]; + } else { + target = data; + } + $.each(target, function (key, val) { + var values = val.values, + div = $('dl[xid="' + key + '"]').parent(), + label = div.find('.' + LABEL), + dl = div.find('dl'); + dl.find('dd.' + THIS).removeClass(THIS); + + var _vals = values.concat([]); + _vals.concat([]).forEach(function (item, index) { + _this9.addLabel(key, label, item); + dl.find('dd[lay-value="' + item.val + '"]').addClass(THIS); + }); + if (val.config.radio) { + _vals.length && values.push(_vals[_vals.length - 1]); + } + _this9.commonHanler(key, label); + }); + }; + + Common.prototype.handlerLabel = function (id, dd, isAdd, oval, notOn) { + var div = $('[xid="' + id + '"]').prev().find('.' + LABEL), + val = dd && { + name: dd.find('span').text(), + val: dd.attr('lay-value') + }, + vals = data[id].values, + on = data[id].config.on || events.on[id]; + if (oval) { + val = oval; + } + var fs = data[id]; + if (isAdd && fs.config.max && fs.values.length >= fs.config.max) { + var maxTipsFun = data[id].config.maxTips || events.maxTips[id]; + maxTipsFun && maxTipsFun(id, vals.concat([]), val, fs.max); + return; + } + if (!notOn) { + if (on && on instanceof Function && on(id, vals.concat([]), val, isAdd, dd && dd.hasClass(DISABLED) == false)) { + return; + } + } + var dl = $('dl[xid="' + id + '"]'); + isAdd ? (dd && dd[0] ? (dd.addClass(THIS), dd.removeClass(TEMP)) : dl.find('.xm-select-linkage')[0] && this.linkageAdd(id, val), this.addLabel(id, div, val), vals.push(val)) : (dd && dd[0] ? dd.removeClass(THIS) : dl.find('.xm-select-linkage')[0] && this.linkageDel(id, val), this.delLabel(id, div, val), this.remove(vals, val)); + if (!div[0]) return; + //单选选完后直接关闭选择域 + if (fs.config.radio) { + this.changeShow(div, false); + } + //移除表单验证的红色边框 + div.parents('.' + FORM_TITLE).prev().removeClass('layui-form-danger'); + + //清空搜索值 + fs.config.clearInput && div.parents('.' + PNAME).find('.' + INPUT).val(''); + + this.commonHanler(id, div); + }; + + Common.prototype.addLabel = function (id, div, val) { + if (!val) return; + var tips = 'fsw="' + NAME + '"'; + var _ref = [$('' + val.name + ''), $('\xD7')], + $label = _ref[0], + $close = _ref[1]; + + $label.append($close); + //如果是radio模式 + var fs = data[id]; + if (fs.config.radio) { + fs.values.length = 0; + $('dl[xid="' + id + '"]').find('dd.' + THIS + ':not([lay-value="' + val.val + '"])').removeClass(THIS); + div.find('span').remove(); + } + //如果是固定高度 + if (fs.config.height) { + div.append($label); + } else { + div.find('input').css('width', '50px'); + div.find('input').before($label); + } + }; + + Common.prototype.delLabel = function (id, div, val) { + if (!val) return; + div.find('span[value="' + val.val + '"]:first').remove(); + }; + + Common.prototype.calcLeft = function (id, div) { + if (data[id].config.height) { + var showLastSpan = div.find('span:not(.xm-span-hide):last')[0]; + div.next().css('left', (showLastSpan ? this.getPosition(showLastSpan).x - this.getPosition(div[0]).x + showLastSpan.offsetWidth + 20 : 10) + 'px'); + } + }; + + Common.prototype.checkHideSpan = function (div) { + var _this10 = this; + + var parentHeight = div.parents('.' + NAME)[0].offsetHeight + 5; + div.find('span.xm-span-hide').removeClass('xm-span-hide'); + div.find('span').each(function (index, item) { + if (item.offsetHeight + item.offsetTop > parentHeight || _this10.getPosition(item).y + item.offsetHeight > _this10.getPosition(div[0]).y + div[0].offsetHeight + 5) { + $(item).addClass('xm-span-hide'); + } + }); + }; + + Common.prototype.retop = function (div) { + //计算dl显示的位置 + var dl = div.find('dl'), + top = div.offset().top + div.outerHeight() + 5 - $win.scrollTop(), + dlHeight = dl.outerHeight(); + var up = div.hasClass('layui-form-selectup') || dl.css('top').indexOf('-') != -1 || top + dlHeight > $win.height() && top >= dlHeight; + div = div.find('.' + NAME); + + var fs = data[dl.attr('xid')]; + var base = dl.parents('.layui-form-pane')[0] && dl.prev()[0].clientHeight > 38 ? 14 : 10; + if (fs) { + if (fs.config.direction == 'up') { + dl.css({ + top: 'auto', + bottom: '42px' + }); + return; + } + if (fs.direction == 'down') { + dl.css({ + top: div[0].offsetTop + div.height() + base + 'px', + bottom: 'auto' + }); + return; + } + } + + if (up) { + dl.css({ + top: 'auto', + bottom: '42px' + }); + } else { + dl.css({ + top: div[0].offsetTop + div.height() + base + 'px', + bottom: 'auto' + }); + } + }; + + Common.prototype.changeShow = function (children, isShow) { + //显示于隐藏 + var top = children.parents('.' + FORM_SELECT); + $('.' + PNAME + ' .' + FORM_SELECT).not(top).removeClass(FORM_SELECTED); + if (isShow) { + this.retop(top); + top.addClass(FORM_SELECTED); + top.find('.' + INPUT).focus(); + } else { + top.removeClass(FORM_SELECTED); + top.find('.' + INPUT).val(''); + top.find('dl .layui-hide').removeClass('layui-hide'); + top.find('dl dd.' + TEMP).remove(); + //计算ajax数据是否为空, 然后重新请求数据 + var id = top.find('dl').attr('xid'); + if (id && data[id] && data[id].config.isEmpty) { + this.triggerSearch(top); + } + } + }; + + Common.prototype.changePlaceHolder = function (div) { + //显示于隐藏提示语 + //调整pane模式下的高度 + var title = div.parents('.' + FORM_TITLE); + + var id = div.parents('.' + PNAME).find('dl[xid]').attr('xid'); + if (data[id] && data[id].config.height) {//既然固定高度了, 那就看着办吧 + + } else { + var height = title.find('.' + NAME)[0].clientHeight; + title.css('height', (height > 34 ? height + 4 : height) + 'px'); + //如果是layui pane模式, 处理label的高度 + var label = title.parents('.' + PNAME).parent().prev(); + if (label.is('.layui-form-label') && title.parents('.layui-form-pane')[0]) { + height = height > 36 ? height + 4 : height; + title.css('height', height + 'px'); + label.css({ + height: height + 2 + 'px', + lineHeight: height - 18 + 'px' + }); + } + } + + var input = title.find('.' + TDIV + ' input'), + isShow = !div.find('span:last')[0] && !title.find('.' + INPUT).val(); + if (isShow) { + var ph = input.attr('back'); + input.removeAttr('back'); + input.attr('placeholder', ph); + } else { + var _ph = input.attr('placeholder'); + input.removeAttr('placeholder'); + input.attr('back', _ph); + } + }; + + Common.prototype.indexOf = function (arr, val) { + for (var i = 0; i < arr.length; i++) { + if (arr[i].val == val || arr[i].val == (val ? val.val : val) || arr[i] == val || JSON.stringify(arr[i]) == JSON.stringify(val)) { + return i; + } + } + return -1; + }; + + Common.prototype.remove = function (arr, val) { + var idx = this.indexOf(arr, val ? val.val : val); + if (idx > -1) { + arr.splice(idx, 1); + return true; + } + return false; + }; + + Common.prototype.selectAll = function (id, isOn, skipDis) { + var _this11 = this; + + var dl = $('[xid="' + id + '"]'); + if (dl.find('.xm-select-linkage')[0]) { + return; + } + dl.find('dd[lay-value]:not(.' + FORM_SELECT_TIPS + '):not(.' + THIS + ')' + (skipDis ? ':not(.' + DISABLED + ')' : '')).each(function (index, item) { + item = $(item); + var val = { + name: item.find('span').text(), + val: item.attr('lay-value') + }; + _this11.handlerLabel(id, dl.find('dd[lay-value="' + val.val + '"]'), true, val, !isOn); + }); + }; + + Common.prototype.removeAll = function (id, isOn, skipDis) { + var _this12 = this; + + var dl = $('[xid="' + id + '"]'); + if (dl.find('.xm-select-linkage')[0]) { + //针对多级联动的处理 + data[id].values.concat([]).forEach(function (item, idx) { + var vs = item.val.split('/'); + var pid = void 0, + li = void 0, + index = 0; + do { + pid = vs[index++]; + li = dl.find('.xm-select-linkage-group' + index + ':not(.xm-select-linkage-hide) li[value="' + pid + '"]'); + li.click(); + } while (li.length && pid != undefined); + }); + return; + } + data[id].values.concat([]).forEach(function (item, index) { + if (skipDis && dl.find('dd[lay-value="' + item.val + '"]').hasClass(DISABLED)) {} else { + _this12.handlerLabel(id, dl.find('dd[lay-value="' + item.val + '"]'), false, item, !isOn); + } + }); + }; + + Common.prototype.reverse = function (id, isOn, skipDis) { + var _this13 = this; + + var dl = $('[xid="' + id + '"]'); + if (dl.find('.xm-select-linkage')[0]) { + return; + } + dl.find('dd[lay-value]:not(.' + FORM_SELECT_TIPS + ')' + (skipDis ? ':not(.' + DISABLED + ')' : '')).each(function (index, item) { + item = $(item); + var val = { + name: item.find('span').text(), + val: item.attr('lay-value') + }; + _this13.handlerLabel(id, dl.find('dd[lay-value="' + val.val + '"]'), !item.hasClass(THIS), val, !isOn); + }); + }; + + Common.prototype.skin = function (id) { + var skins = ['default', 'primary', 'normal', 'warm', 'danger']; + var skin = skins[Math.floor(Math.random() * skins.length)]; + $('dl[xid="' + id + '"]').parents('.' + PNAME).find('.' + FORM_SELECT).attr('xm-select-skin', skin); + this.commonHanler(id, $('dl[xid="' + id + '"]').parents('.' + PNAME).find('.' + LABEL)); + }; + + Common.prototype.getPosition = function (e) { + var x = 0, + y = 0; + while (e != null) { + x += e.offsetLeft; + y += e.offsetTop; + e = e.offsetParent; + } + return { x: x, y: y }; + }; + + Common.prototype.onreset = function () { + //监听reset按钮, 然后重置多选 + $(document).on('click', '[type=reset]', function (e) { + $(e.target).parents('form').find('.' + PNAME + ' dl[xid]').each(function (index, item) { + var id = item.getAttribute('xid'), + dl = $(item), + dd = void 0, + temp = {}; + common.removeAll(id); + data[id].config.init.forEach(function (val, idx) { + if (val && (!temp[val] || data[id].config.repeat) && (dd = dl.find('dd[lay-value="' + val.val + '"]'))[0]) { + common.handlerLabel(id, dd, true); + temp[val] = 1; + } + }); + }); + }); + }; + + Common.prototype.loadingCss = function () {}; + + Common.prototype.listening = function () { + //TODO 用于监听dom结构变化, 如果出现新的为渲染select, 则自动进行渲染 + var flag = false; + var index = 0; + $(document).on('DOMNodeInserted', function (e) { + if (flag) { + //避免递归渲染 + return; + } + flag = true; + //渲染select + $('select[' + NAME + ']').each(function (index, select) { + var sid = select.getAttribute(NAME); + common.init(select); + common.one($('dl[xid="' + sid + '"]').parents('.' + PNAME)); + common.initVal(sid); + }); + + flag = false; + }); + }; + + var Select4 = function Select4() { + this.v = v; + }; + var common = new Common(); + + Select4.prototype.value = function (id, type, isAppend) { + if (typeof id != 'string') { + return []; + } + var fs = data[id]; + if (!fs) { + return []; + } + if (typeof type == 'string' || type == undefined) { + var arr = fs.values.concat([]) || []; + if (type == 'val') { + return arr.map(function (val) { + return val.val; + }); + } + if (type == 'valStr') { + return arr.map(function (val) { + return val.val; + }).join(','); + } + if (type == 'name') { + return arr.map(function (val) { + return val.name; + }); + } + if (type == 'nameStr') { + return arr.map(function (val) { + return val.name; + }).join(','); + } + return arr; + } + if (common.isArray(type)) { + var dl = $('[xid="' + id + '"]'), + temp = {}, + dd = void 0, + isAdd = true; + if (isAppend == false) { + //删除传入的数组 + isAdd = false; + } else if (isAppend == true) { + //追加模式 + isAdd = true; + } else { + //删除原有的数据 + common.removeAll(id); + } + if (isAdd) { + fs.values.forEach(function (val, index) { + temp[val.val] = 1; + }); + } + type.forEach(function (val, index) { + if (val && (!temp[val] || fs.config.repeat)) { + if ((dd = dl.find('dd[lay-value="' + val + '"]'))[0]) { + common.handlerLabel(id, dd, isAdd, null, true); + temp[val] = 1; + } else { + var name = common.valToName(id, val); + if (name) { + common.handlerLabel(id, dd, isAdd, { + name: name, + val: val + }, true); + temp[val] = 1; + } + } + } + }); + } + }; + + Common.prototype.bindEvent = function (name, id, fun) { + if (id && id instanceof Function) { + fun = id; + id = null; + } + if (fun && fun instanceof Function) { + if (!id) { + $.each(data, function (id, val) { + data[id] ? data[id].config[name] = fun : events[name][id] = fun; + }); + } else { + data[id] ? data[id].config[name] = fun : events[name][id] = fun; + } + } + }; + + Select4.prototype.on = function (id, fun) { + common.bindEvent('on', id, fun); + return this; + }; + + Select4.prototype.filter = function (id, fun) { + common.bindEvent('filter', id, fun); + return this; + }; + + Select4.prototype.maxTips = function (id, fun) { + common.bindEvent('maxTips', id, fun); + return this; + }; + + Select4.prototype.config = function (id, config, isJson) { + if (id && (typeof id === 'undefined' ? 'undefined' : _typeof(id)) == 'object') { + isJson = config == true; + config = id; + id = null; + } + if (config && (typeof config === 'undefined' ? 'undefined' : _typeof(config)) == 'object') { + if (isJson) { + config.header || (config.header = {}); + config.header['Content-Type'] = 'application/json; charset=UTF-8'; + config.dataType = 'json'; + } + id ? (ajaxs[id] = $.extend(true, {}, ajax, config), data[id] && (data[id].config.direction = config.direction), config.searchUrl && data[id] && common.triggerSearch($('.' + PNAME + ' dl[xid="' + id + '"]').parents('.' + FORM_SELECT), true)) : $.extend(true, ajax, config); + } + return this; + }; + + Select4.prototype.render = function (id) { + var _this14 = this; + + var target = {}; + id ? data[id] && (target[id] = data[id]) : data; + + if (Object.getOwnPropertyNames(target).length) { + $.each(target, function (key, val) { + //恢复初始值 + var dl = $('dl[xid="' + key + '"]'), + vals = []; + val.select.find('option[selected]').each(function (index, item) { + vals.push(item.value); + }); + //移除创建元素 + dl.find('.' + CREATE_LONG).remove(); + //清空INPUT + dl.prev().find('.' + INPUT).val(''); + //触发search + common.triggerSearch(dl.parents('.' + FORM_SELECT), true); + //移除hidn + dl.find('.layui-hide').removeClass('layui-hide'); + //重新赋值 + _this14.value(key, vals); + }); + } + ($('select[' + NAME + '="' + id + '"]')[0] ? $('select[' + NAME + '="' + id + '"]') : $('select[' + NAME + ']')).each(function (index, select) { + var sid = select.getAttribute(NAME); + common.init(select); + common.one($('dl[xid="' + sid + '"]').parents('.' + PNAME)); + common.initVal(sid); + }); + return this; + }; + + Select4.prototype.disabled = function (id) { + var target = {}; + id ? data[id] && (target[id] = data[id]) : target = data; + + $.each(target, function (key, val) { + $('dl[xid="' + key + '"]').prev().addClass(DIS); + }); + return this; + }; + + Select4.prototype.undisabled = function (id) { + var target = {}; + id ? data[id] && (target[id] = data[id]) : target = data; + + $.each(target, function (key, val) { + $('dl[xid="' + key + '"]').prev().removeClass(DIS); + }); + return this; + }; + + Select4.prototype.data = function (id, type, config) { + if (!id || !type || !config) { + return this; + } + //检测该id是否尚未渲染 + !data[id] && this.render(id).value(id, []); + this.config(id, config); + if (type == 'local') { + common.renderData(id, config.arr, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100'); + } else if (type == 'server') { + common.ajax(id, config.url, config.keyword, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100'); + } + return this; + }; + + Select4.prototype.btns = function (id, btns, config) { + if (!btns || !common.isArray(btns)) { + return this; + }; + var target = {}; + id ? data[id] && (target[id] = data[id]) : target = data; + + btns = btns.map(function (obj) { + if (typeof obj == 'string') { + if (obj == 'select') { + return quickBtns[0]; + } + if (obj == 'remove') { + return quickBtns[1]; + } + if (obj == 'reverse') { + return quickBtns[2]; + } + if (obj == 'skin') { + return quickBtns[3]; + } + } + return obj; + }); + + $.each(target, function (key, val) { + val.config.btns = btns; + var dd = $('dl[xid="' + key + '"]').find('.' + FORM_SELECT_TIPS + ':first'); + if (btns.length) { + var show = config && config.show && (config.show == 'name' || config.show == 'icon') ? config.show : ''; + var html = common.renderBtns(key, show, config && config.space ? config.space : '30px'); + dd.html(html); + } else { + var pcInput = dd.parents('.' + FORM_SELECT).find('.' + TDIV + ' input'); + var _html = pcInput.attr('placeholder') || pcInput.attr('back'); + dd.html(_html); + dd.removeAttr('style'); + } + }); + + return this; + }; + + Select4.prototype.search = function (id, val) { + if (id && data[id]) { + ajaxs[id] = $.extend(true, {}, ajax, { + first: true, + searchVal: val + }); + common.triggerSearch($('dl[xid="' + id + '"]').parents('.' + FORM_SELECT), true); + } + return this; + }; + + return new Select4(); +}); \ No newline at end of file diff --git a/src/main/resources/static/custom/module/index.js b/src/main/resources/static/custom/module/index.js new file mode 100755 index 00000000..1217d02c --- /dev/null +++ b/src/main/resources/static/custom/module/index.js @@ -0,0 +1,158 @@ +layui.define(['admin', 'layer', 'element'], function (exports) { + var admin = layui.admin; + var layer = layui.layer; + var element = layui.element; + + var index = { + pageTabs: true, // 是否开启多标签 + // 路由注册 + initRouter: function () { + // 自动扫描side菜单注册 + $('.layui-layout-admin .layui-side .layui-nav a[lay-href]').each(function () { + var menuName = $(this).text(); + var menuPath = $(this).attr('lay-href'); + if ('javascript:;' != menuPath && '' != menuPath) { + var key = menuPath.replace(/[?:=&/]/g, '_'); + $(this).attr('href', '#!' + key); + Q.reg(key, function () { + index.loadView({ + menuId: key, + menuPath: menuPath, + menuName: menuName + }); + }); + } else { + $(this).attr('href', 'javascript:;'); + } + }); + // 主页 + Q.init({ + index: 'home_console' + }); + // tab选项卡切换监听 + element.on('tab(admin-pagetabs)', function (data) { + var layId = $(this).attr('lay-id'); + Q.go(layId); + }); + }, + // 加载主体部分 + loadView: function (param) { + var menuId = param.menuId; + var menuPath = param.menuPath; + var menuName = param.menuName; + var flag; // 选项卡是否已添加 + var contentBody = '.layui-layout-admin .layui-body'; + // 判断是否开启了选项卡功能 + if (index.pageTabs) { + $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title>li').each(function () { + if ($(this).attr('lay-id') === menuId) { + flag = true; + return false; + } + }); + if (!flag) { + element.tabAdd('admin-pagetabs', { + title: menuName, + id: menuId, + content: '' + }); + } + contentBody = '#' + menuId; + element.tabChange('admin-pagetabs', menuId); + admin.rollPage('auto'); + // 切换tab关闭表格内浮窗 + $('.layui-table-tips-c').trigger('click'); + admin.removeLoading('.layui-layout-admin .layui-body'); + // 解决切换tab滚动条时而消失的问题 + var $iframe = $('.layui-layout-admin .layui-body .layui-tab-content .layui-tab-item.layui-show .admin-iframe')[0]; + if ($iframe) { + $iframe.style.height = "99%"; + $iframe.scrollWidth; + $iframe.style.height = "100%"; + } + } else { + $('.layui-body.admin-iframe-body').removeClass('admin-iframe-body'); + } + if (!flag || admin.isRefresh) { + admin.showLoading('.layui-layout-admin .layui-body'); + admin.ajax({ + url: menuPath, + type: 'GET', + dataType: 'html', + success: function (result, status, xhr) { + $(contentBody).html(result); + admin.isRefresh = false; + element.render('breadcrumb'); + admin.removeLoading('.layui-layout-admin .layui-body'); + } + }); + } + admin.activeNav(Q.lash); + // 移动设备切换页面隐藏侧导航 + if (document.body.clientWidth <= 750) { + admin.flexible(true); + } + }, + // 检查多标签功能是否开启 + checkPageTabs: function () { + if (index.pageTabs) { + $('.layui-layout-admin').addClass('open-tab'); + // 如果开启多标签先加载主页 + element.tabAdd('admin-pagetabs', { + id: 'home_console', + title: '', + content: '
    ' + }); + $('#home_console').load('home/console'); + } else { + $('.layui-layout-admin').removeClass('open-tab'); + } + }, + // 打开新页面 + openNewTab: function (param) { + var menuId = param.menuId; + var url = param.url; + var title = param.title; + + Q.reg(menuId, function () { + index.loadView({ + menuId: menuId, + menuPath: url, + menuName: title + }); + }); + + Q.go(menuId); + }, + // 关闭选项卡 + closeTab: function (menuId) { + element.tabDelete('admin-pagetabs', menuId); + }, + // 绑定事件监听 + bindEvent: function () { + // 退出登录点击事件 + $('#btnLogout').click(function () { + layer.confirm('确定退出登录?', function () { + location.replace('logout'); + }); + }); + + // 修改密码点击事件 + $('#setPsw').click(function () { + admin.popupRight('home/password'); + }); + + // 个人信息点击事件 + $('#setInfo').click(function () { + + }); + + // 消息点击事件 + $('#btnMessage').click(function () { + admin.popupRight('home/message'); + }); + } + }; + + exports('index', index); +}); diff --git a/src/main/resources/static/custom/module/treetable-lay/treetable.css b/src/main/resources/static/custom/module/treetable-lay/treetable.css new file mode 100755 index 00000000..ca2922d1 --- /dev/null +++ b/src/main/resources/static/custom/module/treetable-lay/treetable.css @@ -0,0 +1,17 @@ +.treeTable-empty { + width: 20px; + display: inline-block; +} + +.treeTable-icon { + cursor: pointer; +} + +.treeTable-icon .layui-icon-triangle-d:before { + content: "\e623"; +} + +.treeTable-icon.open .layui-icon-triangle-d:before { + content: "\e625"; +} + diff --git a/src/main/resources/static/custom/module/treetable-lay/treetable.js b/src/main/resources/static/custom/module/treetable-lay/treetable.js new file mode 100755 index 00000000..35efdcf2 --- /dev/null +++ b/src/main/resources/static/custom/module/treetable-lay/treetable.js @@ -0,0 +1,198 @@ +layui.define(['layer', 'table'], function (exports) { + var $ = layui.jquery; + var layer = layui.layer; + var table = layui.table; + + var treetable = { + // 渲染树形表格 + render: function (param) { + // 检查参数 + if (!treetable.checkParam(param)) { + return; + } + var doneCallback = param.done; + // 获取数据 + var mData = []; + $.getJSON(param.url, param.where, function (res) { + var tNodes = res.data; + // 补上id和pid字段 + for (var i = 0; i < tNodes.length; i++) { + var tt = tNodes[i]; + if (!tt.id) { + if (!param.treeIdName) { + layer.msg('参数treeIdName不能为空', {icon: 5}); + return; + } + tt.id = tt[param.treeIdName]; + } + if (!tt.pid) { + if (!param.treePidName) { + layer.msg('参数treePidName不能为空', {icon: 5}); + return; + } + tt.pid = tt[param.treePidName]; + } + } + + // 对数据进行排序 + var sort = function (s_pid, data) { + for (var i = 0; i < data.length; i++) { + if (data[i].pid == s_pid) { + var len = mData.length; + if (len > 0 && mData[len - 1].id == s_pid) { + mData[len - 1].isParent = true; + } + mData.push(data[i]); + sort(data[i].id, data); + } + } + }; + sort(param.treeSpid, tNodes); + + // 重写参数 + param.url = undefined; + param.data = mData; + param.page = { + count: param.data.length, + limit: param.data.length + }; + param.cols[0][param.treeColIndex].templet = function (d) { + var mId = d.id; + var mPid = d.pid; + var isDir = d.isParent; + var emptyNum = treetable.getEmptyNum(mPid, mData); + var iconHtml = ''; + for (var i = 0; i < emptyNum; i++) { + iconHtml += ''; + } + if (isDir) { + iconHtml += ' '; + } else { + iconHtml += ''; + } + iconHtml += '  '; + var ttype = isDir ? 'dir' : 'file'; + var vg = ''; + return vg + iconHtml + d[param.cols[0][param.treeColIndex].field] + '' + }; + + param.done = function (res, curr, count) { + $(param.elem).next().addClass('treeTable'); + $('.treeTable .layui-table-page').css('display', 'none'); + $(param.elem).next().attr('treeLinkage', param.treeLinkage); + // 绑定事件换成对body绑定 + /*$('.treeTable .treeTable-icon').click(function () { + treetable.toggleRows($(this), param.treeLinkage); + });*/ + if (param.treeDefaultClose) { + treetable.foldAll(param.elem); + } + if (doneCallback) { + doneCallback(res, curr, count); + } + }; + + // 渲染表格 + table.render(param); + }); + }, + // 计算缩进的数量 + getEmptyNum: function (pid, data) { + var num = 0; + if (!pid) { + return num; + } + var tPid; + for (var i = 0; i < data.length; i++) { + if (pid == data[i].id) { + num += 1; + tPid = data[i].pid; + break; + } + } + return num + treetable.getEmptyNum(tPid, data); + }, + // 展开/折叠行 + toggleRows: function ($dom, linkage) { + var type = $dom.attr('lay-ttype'); + if ('file' == type) { + return; + } + var mId = $dom.attr('lay-tid'); + var isOpen = $dom.hasClass('open'); + if (isOpen) { + $dom.removeClass('open'); + } else { + $dom.addClass('open'); + } + $dom.closest('tbody').find('tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var pid = $ti.attr('lay-tpid'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if (mId == pid) { + if (isOpen) { + $(this).hide(); + if ('dir' == ttype && tOpen == isOpen) { + $ti.trigger('click'); + } + } else { + $(this).show(); + if (linkage && 'dir' == ttype && tOpen == isOpen) { + $ti.trigger('click'); + } + } + } + }); + }, + // 检查参数 + checkParam: function (param) { + if (!param.treeSpid && param.treeSpid != 0) { + layer.msg('参数treeSpid不能为空', {icon: 5}); + return false; + } + + if (!param.treeColIndex && param.treeColIndex != 0) { + layer.msg('参数treeColIndex不能为空', {icon: 5}); + return false; + } + return true; + }, + // 展开所有 + expandAll: function (dom) { + $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if ('dir' == ttype && !tOpen) { + $ti.trigger('click'); + } + }); + }, + // 折叠所有 + foldAll: function (dom) { + $(dom).next('.treeTable').find('.layui-table-body tbody tr').each(function () { + var $ti = $(this).find('.treeTable-icon'); + var ttype = $ti.attr('lay-ttype'); + var tOpen = $ti.hasClass('open'); + if ('dir' == ttype && tOpen) { + $ti.trigger('click'); + } + }); + } + }; + + layui.link(layui.cache.base + 'treetable-lay/treetable.css'); + + // 给图标列绑定事件 + $('body').on('click', '.treeTable .treeTable-icon', function () { + var treeLinkage = $(this).parents('.treeTable').attr('treeLinkage'); + if ('true' == treeLinkage) { + treetable.toggleRows($(this), true); + } else { + treetable.toggleRows($(this), false); + } + }); + + exports('treetable', treetable); +}); diff --git a/src/main/resources/static/libs/q.js b/src/main/resources/static/libs/q.js new file mode 100755 index 00000000..a8094341 --- /dev/null +++ b/src/main/resources/static/libs/q.js @@ -0,0 +1,100 @@ +/** + * 路由组件 + * q.js-1.2 + */ +var Q = function (W, D, HTML, hash, view, arg, _arg, i, index, Regex, key, Q) { + HTML = D.documentElement; + Regex = []; + key = '!'; + onhashchange = function () { + Q.hash = hash = location.hash.substring(key.length + 1); + + arg = hash.split(/\?/g).shift(); + + arg = arg.split('/'); + + i = Regex.length; + while (i--) + if (_arg = hash.match(Regex[i])) { + arg = _arg; + arg[0] = Regex[i]; + break; + } + + + if (!Q[arg[0]]) // default + arg[0] = index; + + if (Q.pop) + Q.pop.apply(W, arg); + + Q.lash = view = arg.shift(); + + HTML.setAttribute('view', view); + + Q[view].apply(W, arg); + }; + + if (!'onhashchange' in W) { + Q.path = location.hash; + setInterval(function () { + if (Q.path != location.hash) { + onhashchange(); + Q.path = location.hash; + } + }, 100); + } + + Q = { + init: function (o) { + + if (o.key !== undefined) + key = o.key; + + index = o.index || 'V'; + + if (o.pop && typeof o.pop == 'function') + Q.pop = o.pop; + + onhashchange(); + + return this + }, + reg: function (r, u) { + if (!r) + return; + + if (u == undefined) + u = function () { + }; + + if (r instanceof RegExp) { //正则注册 + Q[r] = u; + Regex.push(r); + } else if (r instanceof Array) { //数组注册 + for (var i in r) { + this.reg.apply(this, [].concat(r[i]).concat(u)); + } + } else if (typeof r == 'string') { //关键字注册 + if (typeof u == 'function') + Q[r] = u; + else if (typeof u == 'string' && Q[u]) + Q[r] = Q[u]; + } + + return this + }, + V: function () { + console.log('q.js 2014/12/28'); + return this + }, + go: function (u) { + location.hash = '#' + key + u; + return this + }, + refresh: function () { + onhashchange(); + } + }; + return Q; +}(this, document); diff --git a/src/main/resources/static/libs/zTree/css/metroStyle/img/line_conn.png b/src/main/resources/static/libs/zTree/css/metroStyle/img/line_conn.png new file mode 100755 index 0000000000000000000000000000000000000000..b211da2fa8fa64efa883f893334cf9316e027767 GIT binary patch literal 933 zcmaJ=O^ee&7!EFotn}hZy*Nx^QLst#(X%eNv<=;4;$&*l9z?u( zP*7y?;7!l|0S|ih=+&ElKyP{x)=9VNda#Bh^TG2x?>q1N%+qe?ZejQOF2`{N>(J=2 z@iO}^T)N2q&)@ESXTvpW4rw2cY2pyXwLCmRzzUoR>LJHlJotcYHXfu3lOXzbf&|zq=t4Ev@t=T!pkMMEQ&x?c~PmTs(2en zWl<8!>{UymqE%E)s)F?cSv2B}wVrXXj>T3woKhNTf{-K$pU6BW6G5!k>zRfml^CKF zFGA|1r7$k$3I>W@;z!iSA;=V+5uQ^WvP{p85JVfjHwg4$TD=u6nNkFG^1KGOhr=nO;Z*{Q*Oypy;ZK&6j4= zO*gh>i;eM7$lOktt)IPo@hZDgmeCrdUq`=BPn$bmxOcCwzBxJhc>{dnemyQ;QN9%( PWf#XXJI4F{`%nG=ZlfRK literal 0 HcmV?d00001 diff --git a/src/main/resources/static/libs/zTree/css/metroStyle/img/loading.gif b/src/main/resources/static/libs/zTree/css/metroStyle/img/loading.gif new file mode 100755 index 0000000000000000000000000000000000000000..e8c289293b11c889703d83dce6631fce90da4630 GIT binary patch literal 381 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/libs/zTree/css/metroStyle/img/metro.png b/src/main/resources/static/libs/zTree/css/metroStyle/img/metro.png new file mode 100755 index 0000000000000000000000000000000000000000..e9e58a3a73ab5eac62afb4a4062887896248ec2d GIT binary patch literal 5283 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 tKB8gmm_&cf{x8xo``@I~f=7He=?tT_)p@)n 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 Ap8x;= literal 0 HcmV?d00001 diff --git a/src/main/resources/static/libs/zTree/css/zTreeStyle/img/zTreeStandard.png b/src/main/resources/static/libs/zTree/css/zTreeStyle/img/zTreeStandard.png new file mode 100755 index 0000000000000000000000000000000000000000..ffda01ef1cccc398ee4e2327f4093ba1130a4961 GIT binary patch literal 11173 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 X3wf1`XyoU;TL_tNiW1dgpn(4aGkUu% literal 0 HcmV?d00001 diff --git a/src/main/resources/static/libs/zTree/css/zTreeStyle/zTreeStyle.css b/src/main/resources/static/libs/zTree/css/zTreeStyle/zTreeStyle.css new file mode 100755 index 00000000..a6845a44 --- /dev/null +++ b/src/main/resources/static/libs/zTree/css/zTreeStyle/zTreeStyle.css @@ -0,0 +1,97 @@ +/*------------------------------------- +zTree Style + +version: 3.5.17 +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 diff --git a/src/main/resources/static/libs/zTree/js/jquery.ztree.all-3.5.min.js b/src/main/resources/static/libs/zTree/js/jquery.ztree.all-3.5.min.js new file mode 100755 index 00000000..8ff94818 --- /dev/null +++ b/src/main/resources/static/libs/zTree/js/jquery.ztree.all-3.5.min.js @@ -0,0 +1,161 @@ + +/* + * JQuery zTree common v3.5.18 + * http://zTree.me/ + * + * Copyright (c) 2010 Hunter.z + * + * Licensed same as jquery - MIT License + * http://www.opensource.org/licenses/mit-license.php + * + * email: hunter.z@263.net + * Date: 2015-06-18 + */ +(function(p){var G,H,I,J,K,L,r={},u={},v={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[], +otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},w=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated, +[a,c,g])});a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])});a.bind(c.REMOVE,function(a,c,g){j.apply(b.callback.onRemove,[a,c,g])});a.bind(c.SELECTED, +function(a,c,g,l){j.apply(b.callback.onSelected,[c,g,l])});a.bind(c.UNSELECTED,function(a,c,g,l){j.apply(b.callback.onUnSelected,[c,g,l])})}],x=[function(b){var a=e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR).unbind(a.REMOVE).unbind(a.SELECTED).unbind(a.UNSELECTED)}],y=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],z=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children; +c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?j.eqs(c.open,"true"):!!c.open;c[e]&&c[e].length>0?(c.isParent=!0,c.zAsync=!0):(c.isParent=typeof c.isParent=="string"?j.eqs(c.isParent,"true"):!!c.isParent,c.open=c.isParent&&!b.async.enable?c.open:!1,c.zAsync=!c.isParent);c.isFirstNode=f;c.isLastNode=g;c.getParentNode=function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b, +c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],s=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,o=null,k=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+e.id.SWITCH)!==null)d=j.getNodeMainDom(a).id,g="switchNode";else{if(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=j.getNodeMainDom(k).id, +g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id,g="switchNode";if(l.length>0&&d.length==0&&(k=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=j.getNodeMainDom(k).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=G:g="":g="";break;case "clickNode":i= +H}switch(l){case "mousedown":o=I;break;case "mouseup":o=J;break;case "dblclick":o=K;break;case "contextmenu":o=L}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i,treeEventType:l,treeEventCallback:o}}],A=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],B=[],C=[],D=[],E=[],F=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]= +a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){C.push(b)},addBeforeA:function(b){B.push(b)},addInnerAfterA:function(b){E.push(b)},addInnerBeforeA:function(b){D.push(b)},addInitBind:function(b){w.push(b)},addInitUnBind:function(b){x.push(b)},addInitCache:function(b){y.push(b)},addInitNode:function(b){z.push(b)},addInitProxy:function(b,a){a?s.splice(0,0,b):s.push(b)},addInitRoot:function(b){A.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children; +a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=h.getRoot(b);h.isSelectedNode(b,a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){F.push(b)},exSetting:function(b){p.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]= +a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=C.length;d-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?null:[];for(var g=b.data.key.children,e=d?null:[],i=0,o=a.length;i0)},clone:function(b){if(b===null)return null;var a=j.isArray(b)?[]:{},c;for(c in b)a[c]=b[c]instanceof Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()===a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},$:function(b,a,c){a&&typeof a!="string"&&(c=a,a="");return typeof b=="string"?p(b,c?c.treeObj.get(0).ownerDocument: +null):p("#"+b.tId+a,c?c.treeObj:null)},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d0},uCanDo:function(){return!0}},i={addNodes:function(b,a,c,d){if(!b.data.keep.leaf|| +!a||a.isParent)if(j.isArray(c)||(c=[c]),b.data.simpleData.enable&&(c=h.transformTozTreeFormat(b,c)),a){var f=k(a,e.id.SWITCH,b),g=k(a,e.id.ICON,b),l=k(a,e.id.UL,b);if(!a.open)i.replaceSwitchClass(a,f,e.folder.CLOSE),i.replaceIcoClass(a,g,e.folder.CLOSE),a.open=!1,l.css({display:"none"});h.addNodesData(b,a,c);i.createNodes(b,a.level+1,c,a);d||i.expandCollapseParentNode(b,a,!0)}else h.addNodesData(b,h.getRoot(b),c),i.createNodes(b,0,c,null)},appendNodes:function(b,a,c,d,f,g){if(!c)return[];for(var e= +[],j=b.data.key.children,k=0,m=c.length;k0&&(t=i.appendNodes(b,a+1,n[j],n,f,g&&n.open));g&&(i.makeDOMNodeMainBefore(e,b,n),i.makeDOMNodeLine(e,b,n),h.getBeforeA(b,n,e),i.makeDOMNodeNameBefore(e,b,n),h.getInnerBeforeA(b,n,e),i.makeDOMNodeIcon(e,b,n),h.getInnerAfterA(b,n,e),i.makeDOMNodeNameAfter(e,b,n),h.getAfterA(b,n,e),n.isParent&&n.open&&i.makeUlHtml(b, +n,e,t.join("")),i.makeDOMNodeMainAfter(e,b,n),h.addCreatedNode(b,n))}return e},appendParentULDom:function(b,a){var c=[],d=k(a,b);!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),d=k(a,b));var f=k(a,e.id.UL,b);f.get(0)&&f.remove();f=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,f.join(""));d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync, +[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k(a,e.id.ICON,b).attr({style:"","class":e.className.BUTTON+" "+e.className.ICO_LOADING});var l={};for(f=0,g=b.async.autoParam.length;a&&f1&&(o=q[1],q=q[0]);l[o]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f=0;f--)if(g=d[f],a===g||!a&&(!c||c!==g))if(k(g,e.id.A,b).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);b.treeObj.trigger(e.event.UNSELECTED,[m,b.treeId,g]);break}else d.splice(f,1),b.treeObj.trigger(e.event.UNSELECTED, +[m,b.treeId,g])},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED,[b.treeId,c])}},createNodes:function(b,a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k(d[g][0],b).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k(d,e.id.UL,b),d.get(0)&&d.append(a.join(""))): +b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty(),delete r[b.treeId])},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q=f,f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k(a,e.id.UL,b).get(0)||a[l]&&a[l].length> +0&&!k(a[l][0],b).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k(a,e.id.UL,b),g=k(a,e.id.SWITCH,b),o=k(a,e.id.ICON,b);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&o.attr("style",i.makeNodeIcoStyle(b,a)),a.open?(i.replaceSwitchClass(a,g,e.folder.OPEN),i.replaceIcoClass(a,o,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a, +g,e.folder.CLOSE),i.replaceIcoClass(a,o,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId?(i.expandCollapseNode(b,a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1: +d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k=0;d--)if(a===c[d])return!0;return!1},makeDOMNodeIcon:function(b,a,c){var d=h.getNodeName(a,c),d=a.view.nameIsHTML?d:d.replace(/&/g,"&").replace(//g,">");b.push("",d,"")},makeDOMNodeLine:function(b,a,c){b.push("")},makeDOMNodeMainAfter:function(b){b.push("")},makeDOMNodeMainBefore:function(b,a,c){b.push("
  • ")}, +makeDOMNodeNameAfter:function(b){b.push("")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),"' style='",l.join(""),"'");j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g, +"'").replace(//g,">"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return e.className.BUTTON+" "+c.join("_")},makeNodeIcoStyle:function(b,a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&& +a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):c.push(e.line.CENTER):c.push(e.line.NOLINE);a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE): +c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return e.className.BUTTON+" "+e.className.LEVEL+b.level+" "+e.className.SWITCH+" "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("
      ");c.push(d);c.push("
    ")}, +makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k(a,b).remove();h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g0){var o=f[d][g-1],g=k(o,e.id.UL,b),l=k(o,e.id.SWITCH,b);j=k(o,e.id.ICON,b);f==c?f[d].length==1?i.replaceSwitchClass(o,l,e.line.ROOT):(c=k(f[d][0],e.id.SWITCH,b),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS), +i.replaceSwitchClass(o,l,e.line.BOTTOM)):i.replaceSwitchClass(o,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=a.attr("class");if(d!=void 0){d=d.split("_");switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]= +i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b,null,a);k(a,e.id.A,b).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a);b.treeObj.trigger(e.event.SELECTED,[m,b.treeId,a])},setNodeFontCss:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeFontCss(b,a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c= +k(a,e.id.SWITCH,b),d=k(a,e.id.UL,b),f=k(a,e.id.ICON,b),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=k(a,e.id.SPAN,b);d.empty();b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle, +[b.treeId,a],b.view.showTitle)&&k(a,e.id.A,b).attr("title",!c?"":c)},setNodeTarget:function(b,a){k(a,e.id.A,b).attr("target",i.makeNodeTarget(a))},setNodeUrl:function(b,a){var c=k(a,e.id.A,b),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,a)||i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};p.fn.zTree={consts:{className:{BUTTON:"button", +LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove",SELECTED:"ztree_selected",UNSELECTED:"ztree_unselected"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close", +DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);p.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed="";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)? +c:[c]):[];b[a]=d.data.simpleData.enable?h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(d,a)},destroy:function(){i.destroy(d)},expandAll:function(a){a= +!!a;i.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,e,m){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((m=!!m)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(m&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(d,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=m;if(!j.canAsync(d,a)&&c)i.expandCollapseSonNode(d,a,b,!0,function(){if(e!== +!1)try{k(a,d).focus().blur()}catch(b){}});else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k(a,d).focus().blur()}catch(p){}return b},getNodes:function(){return h.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodeByTId:function(a){return h.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByParamFuzzy:function(a,b,c){return!a? +null:h.getNodesByParamFuzzy(d,c?c[d.data.key.children]:h.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,e){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(d,c?c[d.data.key.children]:h.getNodes(d),a,b,e)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(d),e=0,i=c[b].length;e0?i.createNodes(d,0,b[a]):d.async.enable&& +d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=p.fn.zTree,k=j.$,e=N.consts})(jQuery); + +/* + * JQuery zTree excheck v3.5.18 + * http://zTree.me/ + * + * Copyright (c) 2010 Hunter.z + * + * Licensed same as jquery - MIT License + * http://www.opensource.org/licenses/mit-license.php + * + * email: hunter.z@263.net + * Date: 2015-06-18 + */ +(function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c, +a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=b.data.key.checked;if(k.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=n(a,j.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(j.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled=== +!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,j.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,h,i=c.data.key.children,l=c.data.key.checked;b=j.radio;if(c.check.chkStyle==b.STYLE){var g=f.getRadioCheckedList(c);if(a[l])if(c.check.radioType==b.TYPE_ALL){for(d=g.length-1;d>=0;d--)b=g[d],b[l]&&b!=a&&(b[l]=!1,g.splice(d,1),e.setChkClass(c,n(b,j.id.CHECK,c),b),b.parentTId!= +a.parentTId&&e.repairParentChkClassWithSelf(c,b));g.push(a)}else{g=a.parentTId?a.getParentNode():f.getRoot(c);for(d=0,h=g[i].length;d-1)&&e.setSonNodeCheckBox(c,a,!0),!a[l]&&(!a[i]||a[i].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c, +a,!1),a[l]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[l]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=j.checkbox,h=j.radio,i="",i=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==h.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+ +"_"+i,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return j.className.BUTTON+" "+d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===j.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,h=f.getRoot(c),i=0,l=h[d].length;i0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){var h=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if(a[h]&&d)for(var i=0,l=a[h].length;i0){l=!1;break}l&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var h=c.data.key.children,i=c.data.key.checked,l=n(a,j.id.CHECK,c);d||(d=a);var g=!1;if(a[h])for(var k=0,m=a[h].length;k0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,l,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(j.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=f.getRoot(c).radioCheckedList,b=0,d=a.length;b-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var h=c.data.key.children,i=c.data.key.checked,e=b&&c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL, +d=!d?[]:d,g=0,k=a.length;g0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var d=c.data.key.children,h=c.data.key.checked,b=!b?[]:b,i=0,e=a.length;i0?2:0,f==2){h=2;break}else f==0&&(h=0);else if(c.check.chkStyle==j.checkbox.STYLE)if(f=g.nocheck===!0||g.chkDisabled===!0?g.check_Child_State:g.halfCheck===!0?1:g[d]?g.check_Child_State===-1||g.check_Child_State===2?2:1:g.check_Child_State>0?1:0,f===1){h=1;break}else if(f=== +2&&h>-1&&i>0&&f!==h){h=1;break}else if(h===2&&f>-1&&f<2){h=1;break}else f>-1&&(h=f)}a.check_Child_State=h}}}});var m=m.fn.zTree,k=m._z.tools,j=m.consts,e=m._z.view,f=m._z.data,n=k.$;f.exSetting(v);f.addInitBind(function(c){c.treeObj.bind(j.event.CHECK,function(a,b,d,h){a.srcEvent=b;k.apply(c.callback.onCheck,[a,d,h])})});f.addInitUnBind(function(c){c.treeObj.unbind(j.event.CHECK)});f.addInitCache(function(){});f.addInitNode(function(c,a,b,d){if(b){a=c.data.key.checked;typeof b[a]=="string"&&(b[a]= +k.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];if(typeof b.nocheck=="string")b.nocheck=k.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=k.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=k.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return f.getCheckStatus(c, +b)};c.check.chkStyle==j.radio.STYLE&&c.check.radioType==j.radio.TYPE_ALL&&b[a]&&f.getRoot(c).radioCheckedList.push(b)}});f.addInitProxy(function(c){var a=c.target,b=f.getSetting(c.data.treeId),d="",h=null,e="",l=null;if(k.eqs(c.type,"mouseover")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="mouseoverCheck"}else if(k.eqs(c.type,"mouseout")){if(b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d= +k.getNodeMainDom(a).id,e="mouseoutCheck"}else if(k.eqs(c.type,"click")&&b.check.enable&&k.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+j.id.CHECK)!==null)d=k.getNodeMainDom(a).id,e="checkNode";if(d.length>0)switch(h=f.getNodeCache(b,d),e){case "checkNode":l=p;break;case "mouseoverCheck":l=q;break;case "mouseoutCheck":l=r}return{stop:e==="checkNode",node:h,nodeEventType:e,nodeEventCallback:l,treeEventType:"",treeEventCallback:null}},!0);f.addInitRoot(function(c){f.getRoot(c).radioCheckedList=[]}); +f.addBeforeA(function(c,a,b){c.check.enable&&(f.makeChkFlag(c,a),b.push(""))});f.addZTreeTools(function(c,a){a.checkNode=function(a,b,c,f){var g=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[g]),f=!!f,(a[g]!==b||c)&&!(f&&k.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a],!0)==!1)&&k.uCanDo(this.setting)&&this.setting.check.enable&& +a.nocheck!==!0))a[g]=b,b=n(a,j.id.CHECK,this.setting),(c||this.setting.check.chkStyle===j.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),f&&this.setting.treeObj.trigger(j.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return f.getTreeCheckedNodes(this.setting,f.getRoot(this.setting)[b],a!==!1)}; +a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children;return f.getTreeChangeCheckedNodes(this.setting,f.getRoot(this.setting)[a])};a.setChkDisabled=function(a,b,c,f){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!f);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&&k.uCanDo(this.setting)){var i=n(c,j.id.CHECK,this.setting);(f==!0||this.setting.check.chkStyle=== +j.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,i,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))};var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,i){var j="";u&&(j=u.apply(e,arguments));d&&f.makeChkFlag(c, +d);return j}})(jQuery); + +/* + * JQuery zTree exedit v3.5.18 + * http://zTree.me/ + * + * Copyright (c) 2010 Hunter.z + * + * Licensed same as jquery - MIT License + * http://www.opensource.org/licenses/mit-license.php + * + * email: hunter.z@263.net + * Date: 2015-06-18 + */ +(function(w){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},x={onHoverOverNode:function(b,a){var c=m.getSetting(b.data.treeId),d=m.getRoot(c);if(d.curHoverNode!=a)x.onHoverOutNode(b);d.curHoverNode=a;f.addHoverDom(c,a)},onHoverOutNode:function(b){var b= +m.getSetting(b.data.treeId),a=m.getRoot(b);if(a.curHoverNode&&!m.isSelectedNode(b,a.curHoverNode))f.removeTreeDom(b,a.curHoverNode),a.curHoverNode=null},onMousedownNode:function(b,a){function c(b){if(C.dragFlag==0&&Math.abs(N-b.clientX)1){var j=l[0].parentTId?l[0].getParentNode()[i]:m.getNodes(e);i=[];for(a=0,c=j.length;a-1&&k+1!==a&&(n=!1),i.push(j[a]),k=a),l.length===i.length){l=i;break}}n&&(H=l[0].getPreNode(),R=l[l.length-1].getNextNode());D=o("
      ", +e);for(a=0,c=l.length;a0),f.removeTreeDom(e,n),a>e.edit.drag.maxShowNodeNum-1||(k=o("
    • ",e),k.append(o(n,d.id.A,e).clone()),k.css("padding","0"),k.children("#"+n.tId+d.id.A).removeClass(d.node.CURSELECTED),D.append(k),a==e.edit.drag.maxShowNodeNum-1&&(k=o("
    • ...
    • ",e),D.append(k)));D.attr("id",l[0].tId+d.id.UL+"_tmp");D.addClass(e.treeObj.attr("class"));D.appendTo(M);B=o("", +e);B.attr("id","zTreeMove_arrow_tmp");B.appendTo(M);e.treeObj.trigger(d.event.DRAG,[b,e.treeId,l])}if(C.dragFlag==1){s&&B.attr("id")==b.target.id&&u&&b.clientX+F.scrollLeft()+2>w("#"+u+d.id.A,s).offset().left?(n=w("#"+u+d.id.A,s),b.target=n.length>0?n.get(0):b.target):s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER)); +u=s=null;J=!1;h=e;n=m.getSettings();for(var y in n)if(n[y].treeId&&n[y].edit.enable&&n[y].treeId!=e.treeId&&(b.target.id==n[y].treeId||w(b.target).parents("#"+n[y].treeId).length>0))J=!0,h=n[y];y=F.scrollTop();k=F.scrollLeft();i=h.treeObj.offset();a=h.treeObj.get(0).scrollHeight;n=h.treeObj.get(0).scrollWidth;c=b.clientY+y-i.top;var p=h.treeObj.height()+i.top-b.clientY-y,q=b.clientX+k-i.left,x=h.treeObj.width()+i.left-b.clientX-k;i=ce.edit.drag.borderMin;var j=pe.edit.drag.borderMin,K=qe.edit.drag.borderMin,G=xe.edit.drag.borderMin,p=c>e.edit.drag.borderMin&&p>e.edit.drag.borderMin&&q>e.edit.drag.borderMin&&x>e.edit.drag.borderMin,q=i&&h.treeObj.scrollTop()<=0,x=j&&h.treeObj.scrollTop()+h.treeObj.height()+10>=a,P=K&&h.treeObj.scrollLeft()<=0,Q=G&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=n;if(b.target&&g.isChildOrSelf(b.target,h.treeId)){for(var E=b.target;E&&E.tagName&&!g.eqs(E.tagName,"li")&&E.id!= +h.treeId;)E=E.parentNode;var S=!0;for(a=0,c=l.length;a0){S=!1;break}if(S&&b.target&&g.isChildOrSelf(b.target,E.id+d.id.A))s=w(E),u=E.id}n=l[0];if(p&&g.isChildOrSelf(b.target,h.treeId)){if(!s&&(b.target.id==h.treeId||q||x||P||Q)&&(J||!J&&n.parentTId))s=h.treeObj;i?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):j&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);K?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):G&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+ +10);s&&s!=h.treeObj&&s.offset().left=-0.2)&&n?(a=1-B.width(),i=j-B.height()/2,v=d.move.TYPE_PREV):(G==0||y>=G&&y<=1.2)&&a?(a=1-B.width(),i=i==null||z.isParent&&z.open?j+c.height()-B.height()/2:i.offset().top-B.height()/2,v=d.move.TYPE_NEXT):(a=5-B.width(),i=j,v=d.move.TYPE_INNER);B.css({display:"block",top:i+"px",left:k+a+"px"});c.addClass(d.node.TMPTARGET_NODE+"_"+v);if(T!=u||U!=v)L=(new Date).getTime();if(z&&z.isParent&&v==d.move.TYPE_INNER&&(y=!0,window.zTreeMoveTimer&& +window.zTreeMoveTargetNodeTId!==z.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===z.tId&&(y=!1),y))window.zTreeMoveTimer=setTimeout(function(){v==d.move.TYPE_INNER&&z&&z.isParent&&!z.open&&(new Date).getTime()-L>h.edit.drag.autoOpenTime&&g.apply(h.callback.beforeDragOpen,[h.treeId,z],!0)&&(f.switchNode(h,z),h.edit.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND,[h.treeId,z]))},h.edit.drag.autoOpenTime+50), +window.zTreeMoveTargetNodeTId=z.tId}}else if(v=d.move.TYPE_INNER,s&&g.apply(h.edit.drag.inner,[h.treeId,l,null],!!h.edit.drag.inner)?s.addClass(d.node.TMPTARGET_TREE):s=null,B.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;T=u;U=v;e.treeObj.trigger(d.event.DRAGMOVE,[b,e.treeId,l])}return!1}function r(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;U=T=null;F.unbind("mousemove",c); +F.unbind("mouseup",r);F.unbind("selectstart",k);M.css("cursor","auto");s&&(s.removeClass(d.node.TMPTARGET_TREE),u&&w("#"+u+d.id.A,s).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));g.showIfameMask(e,!1);t.showHoverDom=!0;if(C.dragFlag!=0){C.dragFlag=0;var a,i,j;for(a=0,i=l.length;a0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(a)for(var d=o("iframe",b),f=0,i=d.length;f",b);j.appendTo(o("body",b));c.dragMaskList.push(j)}}},view:{addEditBtn:function(b, +a){if(!(a.editNameFlag||o(a,d.id.EDIT,b).length>0)&&g.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=o(a,d.id.A,b),r="";c.append(r);o(a,d.id.EDIT,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!1;f.editNode(b,a);return!1}).show()}}, +addRemoveBtn:function(b,a){if(!(a.editNameFlag||o(a,d.id.REMOVE,b).length>0)&&g.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=o(a,d.id.A,b),r="";c.append(r);o(a,d.id.REMOVE,b).bind("click",function(){if(!g.uCanDo(b)||g.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!1;f.removeNode(b, +a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(m.getRoots().showHoverDom)a.isHover=!0,b.edit.enable&&(f.addEditBtn(b,a),f.addRemoveBtn(b,a)),g.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a,c){var r=m.getRoot(b),k=b.data.key.name,i=r.curEditNode;if(i){var j=r.curEditInput,a=a?a:c?i[k]:j.val();if(g.apply(b.callback.beforeRename,[b.treeId,i,a,c],!0)===!1)return!1;i[k]=a;o(i,d.id.A,b).removeClass(d.node.CURSELECTED_EDIT); +j.unbind();f.setNodeName(b,i);i.editNameFlag=!1;r.curEditNode=null;r.curEditInput=null;f.selectNode(b,i,!1);b.treeObj.trigger(d.event.RENAME,[b.treeId,i,c])}return r.noSelection=!0},editNode:function(b,a){var c=m.getRoot(b);f.editNodeBlur=!1;if(m.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){g.inputFocus(c.curEditInput)},0);else{var r=b.data.key.name;a.editNameFlag=!0;f.removeTreeDom(b,a);f.cancelCurEditNode(b);f.selectNode(b,a,!1);o(a,d.id.SPAN,b).html("");var k=o(a,d.id.INPUT,b);k.attr("value",a[r]);b.edit.editNameSelectAll?g.inputSelect(k):g.inputFocus(k);k.bind("blur",function(){f.editNodeBlur||f.cancelCurEditNode(b)}).bind("keydown",function(a){a.keyCode=="13"?(f.editNodeBlur=!0,f.cancelCurEditNode(b)):a.keyCode=="27"&&f.cancelCurEditNode(b,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});o(a,d.id.A,b).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=k;c.noSelection= +!1;c.curEditNode=a}},moveNode:function(b,a,c,r,k,i){var j=m.getRoot(b),e=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent||r!=d.move.TYPE_INNER)){var g=c.parentTId?c.getParentNode():j,t=a===null||a==j;t&&a===null&&(a=j);if(t)r=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(r!=d.move.TYPE_PREV&&r!=d.move.TYPE_NEXT)r=d.move.TYPE_INNER;if(r==d.move.TYPE_INNER)if(t)c.parentTId=null;else{if(!a.isParent)a.isParent=!0,a.open=!!a.open,f.setNodeLineIcos(b,a);c.parentTId=a.tId}var p; +t?p=t=b.treeObj:(!i&&r==d.move.TYPE_INNER?f.expandCollapseNode(b,a,!0,!1):i||f.expandCollapseNode(b,a.getParentNode(),!0,!1),t=o(a,b),p=o(a,d.id.UL,b),t.get(0)&&!p.get(0)&&(p=[],f.makeUlHtml(b,a,p,""),t.append(p.join(""))),p=o(a,d.id.UL,b));var q=o(c,b);q.get(0)?t.get(0)||q.remove():q=f.appendNodes(b,c.level,[c],null,!1,!0).join("");p.get(0)&&r==d.move.TYPE_INNER?p.append(q):t.get(0)&&r==d.move.TYPE_PREV?t.before(q):t.get(0)&&r==d.move.TYPE_NEXT&&t.after(q);var l=-1,w=0,x=null,t=null,D=c.level;if(c.isFirstNode){if(l= +0,g[e].length>1)x=g[e][1],x.isFirstNode=!0}else if(c.isLastNode)l=g[e].length-1,x=g[e][l-1],x.isLastNode=!0;else for(p=0,q=g[e].length;p=0&&g[e].splice(l,1);if(r!=d.move.TYPE_INNER)for(p=0,q=j[e].length;p0)t=a[e][a[e].length-1],t.isLastNode=!1;a[e].splice(a[e].length,0,c);c.isLastNode=!0;c.isFirstNode=a[e].length==1}else a.isFirstNode&&r==d.move.TYPE_PREV?(j[e].splice(w, +0,c),t=a,t.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode=!1):a.isLastNode&&r==d.move.TYPE_NEXT?(j[e].splice(w+1,0,c),t=a,t.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(r==d.move.TYPE_PREV?j[e].splice(w,0,c):j[e].splice(w+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);m.fixPIdKeyValue(b,c);m.setSonNodeLevel(b,c.getParentNode(),c);f.setNodeLineIcos(b,c);f.repairNodeLevelClass(b,c,D);!b.data.keep.parent&&g[e].length<1?(g.isParent=!1, +g.open=!1,a=o(g,d.id.UL,b),r=o(g,d.id.SWITCH,b),e=o(g,d.id.ICON,b),f.replaceSwitchClass(g,r,d.folder.DOCU),f.replaceIcoClass(g,e,d.folder.DOCU),a.css("display","none")):x&&f.setNodeLineIcos(b,x);t&&f.setNodeLineIcos(b,t);b.check&&b.check.enable&&f.repairChkClass&&(f.repairChkClass(b,g),f.repairParentChkClassWithSelf(b,g),g!=c.parent&&f.repairParentChkClassWithSelf(b,c));i||f.expandCollapseParentNode(b,c.getParentNode(),!0,k)}},removeEditBtn:function(b,a){o(a,d.id.EDIT,b).unbind().remove()},removeRemoveBtn:function(b, +a){o(a,d.id.REMOVE,b).unbind().remove()},removeTreeDom:function(b,a){a.isHover=!1;f.removeEditBtn(b,a);f.removeRemoveBtn(b,a);g.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var f=o(a,b),g=o(a,d.id.A,b),b=o(a,d.id.UL,b),c=d.className.LEVEL+c,a=d.className.LEVEL+a.level;f.removeClass(c);f.addClass(a);g.removeClass(c);g.addClass(a);b.removeClass(c);b.addClass(a)}},selectNodes:function(b,a){for(var c=0,d=a.length;c0)}},event:{}, +data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,f=c[d].length;a0)switch(i=m.getNodeCache(c,k),j){case "mousedownNode":e=x.onMousedownNode;break;case "hoverOverNode":e=x.onHoverOverNode;break;case "hoverOutNode":e=x.onHoverOutNode}return{stop:!1, +node:i,nodeEventType:j,nodeEventCallback:e,treeEventType:"",treeEventCallback:null}});m.addInitRoot(function(b){var b=m.getRoot(b),a=m.getRoots();b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore=[];b.dragMaskList=[];a.showHoverDom=!0});m.addZTreeTools(function(b,a){a.cancelEditName=function(a){m.getRoot(this.setting).curEditNode&&f.cancelCurEditNode(this.setting,a?a:null,!0)};a.copyNode=function(a,b,k,i){if(!b)return null;if(a&&!a.isParent&&this.setting.data.keep.leaf&& +k===d.move.TYPE_INNER)return null;var j=this,e=g.clone(b);if(!a)a=null,k=d.move.TYPE_INNER;k==d.move.TYPE_INNER?(b=function(){f.addNodes(j.setting,a,[e],i)},g.canAsync(this.setting,a)?f.asyncNode(this.setting,a,i,b):b()):(f.addNodes(this.setting,a.parentNode,[e],i),f.moveNode(this.setting,a,e,k,!1,i));return e};a.editName=function(a){a&&a.tId&&a===m.getNodeCache(this.setting,a.tId)&&(a.parentTId&&f.expandCollapseParentNode(this.setting,a.getParentNode(),!0),f.editNode(this.setting,a))};a.moveNode= +function(a,b,k,i){function j(){f.moveNode(e.setting,a,b,k,!1,i)}if(!b)return b;if(a&&!a.isParent&&this.setting.data.keep.leaf&&k===d.move.TYPE_INNER)return null;else if(a&&(b.parentTId==a.tId&&k==d.move.TYPE_INNER||o(b,this.setting).find("#"+a.tId).length>0))return null;else a||(a=null);var e=this;g.canAsync(this.setting,a)&&k===d.move.TYPE_INNER?f.asyncNode(this.setting,a,i,j):j();return b};a.setEditable=function(a){this.setting.edit.enable=a;return this.refresh()}});var N=f.cancelPreSelectedNode; +f.cancelPreSelectedNode=function(b,a){for(var c=m.getRoot(b).curSelectedList,d=0,g=c.length;d + - - 支付中心 - - - - - + 首页 + + + + + + + + + - -
      -
      -
      - +
      + +
      + - -
      - - -
      -
      - - - + -
      -
      - - -
      -
      -
      - + + +
      +
      +
      -
      -
        -
      • -
      +
      + + + +
      +
      +
        +
      +
      +
      -
      - - - - -
      - + + - - + +
      +
      + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 919d862c..81e84718 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -8,13 +8,13 @@ - +