Pārlūkot izejas kodu

项目引入shiro,并规整登陆模块

xian 5 gadi atpakaļ
vecāks
revīzija
2dae6b94cf
100 mainītis faili ar 3070 papildinājumiem un 6885 dzēšanām
  1. 242 0
      watero-common-core/src/main/java/com/iamberry/sys/Admin.java
  2. 87 0
      watero-common-core/src/main/java/com/iamberry/sys/AdminPocess.java
  3. 78 0
      watero-common-core/src/main/java/com/iamberry/sys/Menu.java
  4. 86 0
      watero-common-core/src/main/java/com/iamberry/sys/MenuPermisssion.java
  5. 98 0
      watero-common-core/src/main/java/com/iamberry/sys/SubMenu.java
  6. 80 0
      watero-common-core/src/main/java/com/iamberry/sys/SysRule.java
  7. 1 0
      watero-common-core/src/main/java/com/iamberry/wechat/core/entity/AdminUtils.java
  8. 1 0
      watero-wechat-interface/src/main/java/com/iamberry/wechat/face/admin/AdminLoginService.java
  9. 107 0
      watero-wechat-interface/src/main/java/com/iamberry/wechat/face/sys/SysService.java
  10. 1 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/admin/AdminLoginServiceImpl.java
  11. 174 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/sys/SysServiceImpl.java
  12. 115 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/sys/mapper/SysMapper.java
  13. 179 0
      watero-wechat-service/src/main/java/com/iamberry/wechat/service/sys/mapper/sysMapper.xml
  14. 18 1
      watero-wechat-web/pom.xml
  15. 12 10
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminLoginHandler.java
  16. 158 0
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/LoginController.java
  17. 264 0
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/SysController.java
  18. 1 1
      watero-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/CartHandlers.java
  19. 71 0
      watero-wechat-web/src/main/java/com/iamberry/wechat/realm/IamberryRealm.java
  20. 144 0
      watero-wechat-web/src/main/java/com/iamberry/wechat/utils/AdminUtils.java
  21. 33 0
      watero-wechat-web/src/main/java/com/iamberry/wechat/utils/StaticModelUtil.java
  22. 3 1
      watero-wechat-web/src/main/resources/ioc.xml
  23. 4 4
      watero-wechat-web/src/main/resources/mvc.xml
  24. 11 0
      watero-wechat-web/src/main/resources/orm.xml
  25. 39 0
      watero-wechat-web/src/main/resources/shiro.xml
  26. 31 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/base/add_base.ftl
  27. 26 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/base/index_base.ftl
  28. 33 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/base/list_base.ftl
  29. 82 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/base/page_util.ftl
  30. 136 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/login.ftl
  31. 103 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/sys/add.ftl
  32. 74 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/sys/add_rule.ftl
  33. 109 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/sys/edit.ftl
  34. 199 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/sys/edit_permission.ftl
  35. 71 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/sys/edit_pwd.ftl
  36. 77 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/sys/edit_rule.ftl
  37. 71 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/sys/list_admin.ftl
  38. 51 0
      watero-wechat-web/src/main/webapp/WEB-INF/views/sys/list_rule.ftl
  39. 0 57
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/WdatePicker.js
  40. 0 5
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/calendar.js
  41. 0 14
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/lang/en.js
  42. 0 14
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/lang/zh-cn.js
  43. 0 14
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/lang/zh-tw.js
  44. 0 9
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/WdatePicker.css
  45. BIN
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/datePicker.gif
  46. 0 1
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/default/datepicker.css
  47. BIN
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/default/img.gif
  48. 0 339
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/twoer/datepicker-dev.css
  49. 0 1
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/twoer/datepicker.css
  50. BIN
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/twoer/img.gif
  51. BIN
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/twoer/img.png
  52. BIN
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/whyGreen/bg.jpg
  53. 0 256
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/whyGreen/datepicker.css
  54. BIN
      watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/whyGreen/img.gif
  55. 0 141
      watero-wechat-web/src/main/webapp/common/admin/css/H-ui.admin.css
  56. 0 3075
      watero-wechat-web/src/main/webapp/common/admin/css/H-ui.css
  57. 0 47
      watero-wechat-web/src/main/webapp/common/admin/css/H-ui.login.css
  58. 0 12
      watero-wechat-web/src/main/webapp/common/admin/css/H-ui.min.css
  59. 0 60
      watero-wechat-web/src/main/webapp/common/admin/css/H-ui.reset.css
  60. 0 182
      watero-wechat-web/src/main/webapp/common/admin/css/icheck.css
  61. 0 242
      watero-wechat-web/src/main/webapp/common/admin/css/iconfont.css
  62. 0 7
      watero-wechat-web/src/main/webapp/common/admin/css/style.css
  63. 0 95
      watero-wechat-web/src/main/webapp/common/admin/css/webuploader.css
  64. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/acrossTab-2.png
  65. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/acrossTab-2bak.png
  66. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/acrossTab-bg.png
  67. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/acrossTab-close.png
  68. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/acrossTab.png
  69. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/admin-login-bg.jpg
  70. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/admin-loginform-bg.png
  71. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/gq/cn.gif
  72. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/gq/gj.png
  73. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/gq/us.gif
  74. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/hamburger-retina.gif
  75. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/hamburger.gif
  76. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/icon-add.png
  77. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/icon_error_s.png
  78. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/icon_jt2.png
  79. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/icon_right_s.png
  80. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/icon_warning_s.png
  81. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/loading.gif
  82. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/loading_072.gif
  83. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/logo.png
  84. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/sort_asc.png
  85. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/sort_both.png
  86. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/sort_desc.png
  87. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/totop.png
  88. BIN
      watero-wechat-web/src/main/webapp/common/admin/images/user.png
  89. 0 194
      watero-wechat-web/src/main/webapp/common/admin/js/H-ui.admin.js
  90. 0 664
      watero-wechat-web/src/main/webapp/common/admin/js/H-ui.js
  91. 0 57
      watero-wechat-web/src/main/webapp/common/admin/js/WdatePicker.js
  92. 0 18
      watero-wechat-web/src/main/webapp/common/admin/js/de_DE.txt
  93. 0 229
      watero-wechat-web/src/main/webapp/common/admin/js/tips.js
  94. 0 709
      watero-wechat-web/src/main/webapp/common/admin/js/ueditor.all.min.js
  95. 0 413
      watero-wechat-web/src/main/webapp/common/admin/js/ueditor.config.js
  96. 0 13
      watero-wechat-web/src/main/webapp/common/admin/lib/DD_belatedPNG_0.0.8a-min.js
  97. BIN
      watero-wechat-web/src/main/webapp/common/admin/lib/Highcharts/4.1.7/gfx/vml-radial-gradient.png
  98. BIN
      watero-wechat-web/src/main/webapp/common/admin/lib/Highcharts/4.1.7/graphics/meteogram-symbols-30px.png
  99. BIN
      watero-wechat-web/src/main/webapp/common/admin/lib/Highcharts/4.1.7/graphics/skies.jpg
  100. 0 0
      watero-wechat-web/src/main/webapp/common/admin/lib/Highcharts/4.1.7/graphics/snow.png

+ 242 - 0
watero-common-core/src/main/java/com/iamberry/sys/Admin.java

@@ -0,0 +1,242 @@
+package com.iamberry.sys;
+
+import org.hibernate.validator.constraints.*;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 管理员信息
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+public class Admin implements Serializable {
+
+    private static final long serialVersionUID = -5830255406911681115L;
+
+    private Integer adminId;
+
+    private Integer ruleId;
+
+    private Integer supplierId;
+
+    /**
+     * 管理员姓名
+     */
+    @NotBlank(message="姓名不能为空")
+    @Length(min=2,max=10,message="姓名必须由2~10个字组成")
+    private String adminName;
+
+    /**
+     * 性别
+     */
+    @Range(min=1,max=2,message="性别输入有误")
+    private Integer adminSex;
+
+    /**
+     * 电话
+     */
+    @Pattern(regexp = "\\d{4}-\\d{8}|\\d{4}-\\d{7}|\\d(3)-\\d(8)", message = "电话号码输入有误!")
+    private String adminTel;
+
+    /**
+     * 登录账户
+     */
+    private String adminAccount;
+
+    /**
+     * 密码
+     */
+    @Pattern(regexp="(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}",message="密码必须是6~16位数字和字母的组合")
+    private String adminPassword;
+
+    /**
+     * 盐值
+     */
+    private String adminSalt;
+
+    /**
+     * 1:正常使用 2:已停止使用
+     */
+    private Integer adminStatus;
+
+    /**
+     * 邮箱
+     */
+    @Email(message = "邮箱输入有误!")
+    private String adminMail;
+
+    /**
+     * 创建时间
+     */
+    private Date adminCreateTime;
+
+    /**
+     * 修改时间
+     */
+    private Date adminUpdateTime;
+
+    private SysRule rule;
+
+    public SysRule getRule() {
+        return rule;
+    }
+
+    public void setRule(SysRule rule) {
+        this.rule = rule;
+    }
+
+    public Integer getSupplierId() {
+        return supplierId;
+    }
+
+    public void setSupplierId(Integer supplierId) {
+        this.supplierId = supplierId;
+    }
+
+    public Integer getAdminId() {
+        return adminId;
+    }
+
+    public String getAdminName() {
+        return adminName;
+    }
+
+    public Integer getAdminSex() {
+        return adminSex;
+    }
+
+    public String getAdminTel() {
+        return adminTel;
+    }
+
+    public String getAdminAccount() {
+        return adminAccount;
+    }
+
+    public String getAdminPassword() {
+        return adminPassword;
+    }
+
+    public String getAdminSalt() {
+        return adminSalt;
+    }
+
+    public String getAdminMail() {
+        return adminMail;
+    }
+
+    public Date getAdminCreateTime() {
+        return adminCreateTime;
+    }
+
+    public void setAdminId(Integer adminId) {
+        this.adminId = adminId;
+    }
+
+
+    public void setAdminName(String adminName) {
+        this.adminName = adminName;
+    }
+
+    public void setAdminSex(Integer adminSex) {
+        this.adminSex = adminSex;
+    }
+
+    public void setAdminTel(String adminTel) {
+        this.adminTel = adminTel;
+    }
+
+    public void setAdminAccount(String adminAccount) {
+        this.adminAccount = adminAccount;
+    }
+
+    public void setAdminPassword(String adminPassword) {
+        this.adminPassword = adminPassword;
+    }
+
+    public void setAdminSalt(String adminSalt) {
+        this.adminSalt = adminSalt;
+    }
+
+    public void setAdminMail(String adminMail) {
+        this.adminMail = adminMail;
+    }
+
+    public void setAdminCreateTime(Date adminCreateTime) {
+        this.adminCreateTime = adminCreateTime;
+    }
+
+    public void setAdminStatus(Integer adminStatus) {
+        this.adminStatus = adminStatus;
+    }
+
+    public Integer getAdminStatus() {
+        return adminStatus;
+    }
+
+    public Date getAdminUpdateTime() {
+        return adminUpdateTime;
+    }
+
+    public void setAdminUpdateTime(Date adminUpdateTime) {
+        this.adminUpdateTime = adminUpdateTime;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Integer getRuleId() {
+        return ruleId;
+    }
+
+    public void setRuleId(Integer ruleId) {
+        this.ruleId = ruleId;
+    }
+
+    /**
+     * 本函数输出将作为默认的<shiro:principal/>输出.
+     */
+    @Override
+    public String toString() {
+        return adminAccount;
+    }
+
+    /**
+     * 重载hashCode,只计算adminAccount;
+     */
+    @Override
+    public int hashCode() {
+        return adminAccount.hashCode();
+    }
+
+    /**
+     * 重载equals,只计算loginName;
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        Admin other = (Admin) obj;
+        if (adminAccount == null) {
+            return false;
+        } else if (!adminAccount.equals(other.getAdminAccount())) {
+            return false;
+        }
+        return true;
+    }
+}

+ 87 - 0
watero-common-core/src/main/java/com/iamberry/sys/AdminPocess.java

@@ -0,0 +1,87 @@
+package com.iamberry.sys;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 管理员拥有的权限信息
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+public class AdminPocess implements Serializable{
+
+    private static final long serialVersionUID = -160730018745014868L;
+    // id
+    private Integer pocessId;
+    // 一级菜单id
+    private Integer menuId;
+    // 二级菜单id
+    private Integer subId;
+    // 权限id
+    private Integer permId;
+    // 管理员id
+    private Integer ruleId;
+    // 权限操作符
+    private String pocessSymbol;
+    // 时间
+    private Date pocessCreateTime;
+
+    public Integer getPocessId() {
+        return pocessId;
+    }
+
+    public void setPocessId(Integer pocessId) {
+        this.pocessId = pocessId;
+    }
+
+    public Integer getMenuId() {
+        return menuId;
+    }
+
+    public void setMenuId(Integer menuId) {
+        this.menuId = menuId;
+    }
+
+    public Integer getSubId() {
+        return subId;
+    }
+
+    public void setSubId(Integer subId) {
+        this.subId = subId;
+    }
+
+    public Integer getPermId() {
+        return permId;
+    }
+
+    public void setPermId(Integer permId) {
+        this.permId = permId;
+    }
+
+    public Integer getRuleId() {
+        return ruleId;
+    }
+
+    public void setRuleId(Integer ruleId) {
+        this.ruleId = ruleId;
+    }
+
+    public String getPocessSymbol() {
+        return pocessSymbol;
+    }
+
+    public void setPocessSymbol(String pocessSymbol) {
+        this.pocessSymbol = pocessSymbol;
+    }
+
+    public Date getPocessCreateTime() {
+        return pocessCreateTime;
+    }
+
+    public void setPocessCreateTime(Date pocessCreateTime) {
+        this.pocessCreateTime = pocessCreateTime;
+    }
+}

+ 78 - 0
watero-common-core/src/main/java/com/iamberry/sys/Menu.java

@@ -0,0 +1,78 @@
+package com.iamberry.sys;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 菜单实体类
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+public class Menu implements Serializable{
+
+    private static final long serialVersionUID = -1122142514158482727L;
+
+    private Integer menuId;                 // id
+
+    private String menuName;                // 菜单名称
+
+    private Integer menuStatus;             // 状态 1:正常使用;2:已停止使用
+
+    private String menuIcon;                // 图标
+
+    private Date menuCreateTime;            // 创建时间
+
+    private List<SubMenu> subMenus;         // 所属的二级菜单
+
+    public List<SubMenu> getSubMenus() {
+        return subMenus;
+    }
+
+    public void setSubMenus(List<SubMenu> subMenus) {
+        this.subMenus = subMenus;
+    }
+
+    public void setMenuId(Integer menuId) {
+        this.menuId = menuId;
+    }
+
+    public void setMenuName(String menuName) {
+        this.menuName = menuName;
+    }
+
+    public void setMenuStatus(Integer menuStatus) {
+        this.menuStatus = menuStatus;
+    }
+
+    public void setMenuIcon(String menuIcon) {
+        this.menuIcon = menuIcon;
+    }
+
+    public void setMenuCreateTime(Date menuCreateTime) {
+        this.menuCreateTime = menuCreateTime;
+    }
+
+    public Integer getMenuId() {
+        return menuId;
+    }
+
+    public String getMenuName() {
+        return menuName;
+    }
+
+    public Integer getMenuStatus() {
+        return menuStatus;
+    }
+
+    public String getMenuIcon() {
+        return menuIcon;
+    }
+
+    public Date getMenuCreateTime() {
+        return menuCreateTime;
+    }
+}

+ 86 - 0
watero-common-core/src/main/java/com/iamberry/sys/MenuPermisssion.java

@@ -0,0 +1,86 @@
+package com.iamberry.sys;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+public class MenuPermisssion implements Serializable {
+
+    private static final long serialVersionUID = 1005471561916102773L;
+    // id
+    private Integer permId;
+    // 菜单id
+    private Integer permMenuId;
+    // 二级菜单id
+    private Integer permSubId;
+    // 权限名称
+    private String permName;
+    // 状态 1:正常使用;2:已停止使用
+    private Integer permStatus;
+    // Shiro 操作符
+    private String permSymbol;
+    // 创建时间
+    private Date permCreateTime;
+
+    public void setPermId(Integer permId) {
+        this.permId = permId;
+    }
+
+    public void setPermMenuId(Integer permMenuId) {
+        this.permMenuId = permMenuId;
+    }
+
+    public void setPermSubId(Integer permSubId) {
+        this.permSubId = permSubId;
+    }
+
+    public void setPermName(String permName) {
+        this.permName = permName;
+    }
+
+    public void setPermStatus(Integer permStatus) {
+        this.permStatus = permStatus;
+    }
+
+    public void setPermSymbol(String permSymbol) {
+        this.permSymbol = permSymbol;
+    }
+
+    public void setPermCreateTime(Date permCreateTime) {
+        this.permCreateTime = permCreateTime;
+    }
+
+    public Integer getPermId() {
+        return permId;
+    }
+
+    public Integer getPermMenuId() {
+        return permMenuId;
+    }
+
+    public Integer getPermSubId() {
+        return permSubId;
+    }
+
+    public String getPermName() {
+        return permName;
+    }
+
+    public Integer getPermStatus() {
+        return permStatus;
+    }
+
+    public String getPermSymbol() {
+        return permSymbol;
+    }
+
+    public Date getPermCreateTime() {
+        return permCreateTime;
+    }
+}

+ 98 - 0
watero-common-core/src/main/java/com/iamberry/sys/SubMenu.java

@@ -0,0 +1,98 @@
+package com.iamberry.sys;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 二级菜单
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+public class SubMenu implements Serializable {
+
+    private static final long serialVersionUID = -4242209916573654309L;
+
+    private Integer subId;
+    // 菜单id
+    private Integer subMenuId;
+    // 二级菜单名称
+    private String subName;
+    // 1:可以使用;2:已停止使用
+    private Integer subStatus;
+    // 图标
+    private String subIcon;
+    // 创建时间
+    private Date subCreateTime;
+    // URL
+    private String subUrl;
+
+    private List<MenuPermisssion> menuPermisssions;
+
+    public List<MenuPermisssion> getMenuPermisssions() {
+        return menuPermisssions;
+    }
+
+    public void setMenuPermisssions(List<MenuPermisssion> menuPermisssions) {
+        this.menuPermisssions = menuPermisssions;
+    }
+
+    public void setSubId(Integer subId) {
+        this.subId = subId;
+    }
+
+    public void setSubMenuId(Integer subMenuId) {
+        this.subMenuId = subMenuId;
+    }
+
+    public void setSubName(String subName) {
+        this.subName = subName;
+    }
+
+    public void setSubStatus(Integer subStatus) {
+        this.subStatus = subStatus;
+    }
+
+    public void setSubIcon(String subIcon) {
+        this.subIcon = subIcon;
+    }
+
+    public void setSubCreateTime(Date subCreateTime) {
+        this.subCreateTime = subCreateTime;
+    }
+
+    public Integer getSubId() {
+        return subId;
+    }
+
+    public Integer getSubMenuId() {
+        return subMenuId;
+    }
+
+    public String getSubName() {
+        return subName;
+    }
+
+    public Integer getSubStatus() {
+        return subStatus;
+    }
+
+    public String getSubIcon() {
+        return subIcon;
+    }
+
+    public Date getSubCreateTime() {
+        return subCreateTime;
+    }
+
+    public void setSubUrl(String subUrl) {
+        this.subUrl = subUrl;
+    }
+
+    public String getSubUrl() {
+        return subUrl;
+    }
+}

+ 80 - 0
watero-common-core/src/main/java/com/iamberry/sys/SysRule.java

@@ -0,0 +1,80 @@
+package com.iamberry.sys;
+
+import java.util.Date;
+
+/**
+ * 用户角色表
+ * @author root
+ */
+public class SysRule {
+
+    private Integer ruleId;
+
+    private Integer supplierId;
+
+    private String ruleName;
+
+    private Integer ruleState;
+
+    private Integer ruleOrderPermission;
+
+    private Date ruleCreateTime;
+
+    private Date ruleUpdateTime;
+
+    public Integer getRuleOrderPermission() {
+        return ruleOrderPermission;
+    }
+
+    public void setRuleOrderPermission(Integer ruleOrderPermission) {
+        this.ruleOrderPermission = ruleOrderPermission;
+    }
+
+    public Integer getSupplierId() {
+        return supplierId;
+    }
+
+    public void setSupplierId(Integer supplierId) {
+        this.supplierId = supplierId;
+    }
+
+    public Integer getRuleId() {
+        return ruleId;
+    }
+
+    public void setRuleId(Integer ruleId) {
+        this.ruleId = ruleId;
+    }
+
+    public String getRuleName() {
+        return ruleName;
+    }
+
+    public void setRuleName(String ruleName) {
+        this.ruleName = ruleName == null ? null : ruleName.trim();
+    }
+
+    public Integer getRuleState() {
+        return ruleState;
+    }
+
+    public void setRuleState(Integer ruleState) {
+        this.ruleState = ruleState;
+    }
+
+    public Date getRuleCreateTime() {
+        return ruleCreateTime;
+    }
+
+    public void setRuleCreateTime(Date ruleCreateTime) {
+        this.ruleCreateTime = ruleCreateTime;
+    }
+
+    public Date getRuleUpdateTime() {
+        return ruleUpdateTime;
+    }
+
+    public void setRuleUpdateTime(Date ruleUpdateTime) {
+        this.ruleUpdateTime = ruleUpdateTime;
+    }
+}

+ 1 - 0
watero-common-core/src/main/java/com/iamberry/wechat/core/entity/AdminUtils.java

@@ -18,6 +18,7 @@ import com.iamberry.app.tool.log.RatFWLogger;
 import com.iamberry.wechat.core.entity.admin.AdminLoginDTO;
 
 @Component
+@Deprecated
 public class AdminUtils {
 	
 	public static void addAdminUserToSession(Object object, HttpServletRequest request) {

+ 1 - 0
watero-wechat-interface/src/main/java/com/iamberry/wechat/face/admin/AdminLoginService.java

@@ -7,6 +7,7 @@ import com.iamberry.wechat.core.entity.admin.AdminChildPermissionErmissions;
 import com.iamberry.wechat.core.entity.admin.AdminChildPermissions;
 import com.iamberry.wechat.core.entity.admin.AdminLoginDTO;
 
+@Deprecated
 public interface AdminLoginService {
 
 	/**

+ 107 - 0
watero-wechat-interface/src/main/java/com/iamberry/wechat/face/sys/SysService.java

@@ -0,0 +1,107 @@
+package com.iamberry.wechat.face.sys;
+
+import com.iamberry.sys.Admin;
+import com.iamberry.sys.Menu;
+import com.iamberry.sys.SysRule;
+import com.iamberry.wechat.core.entity.page.PageRequest;
+import com.iamberry.wechat.core.entity.page.PagedResult;
+
+import java.util.List;
+
+/**
+ * 管理员 Service
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+public interface SysService {
+
+    /**
+     * 根据登陆名称,获取用户的加密salt
+     * @param loginName
+     * @return
+     */
+    String getSaltByLoginName(String loginName);
+
+    /**
+     *  查询管理员信息
+     * @param admin
+     * @return
+     */
+    Admin get(Admin admin);
+
+    /**
+     * 更新管理员信息
+     * @param admin
+     * @return
+     */
+    Integer editAdmin(Admin admin);
+
+    /**
+     * 分页查询管理员
+     * @param pageRequest
+     * @return
+     */
+    PagedResult<Admin> listAdmin(PageRequest<Admin> pageRequest);
+
+    /**
+     * 添加管理员信息
+     * @param admin
+     * @return
+     */
+    Integer saveAdmin(Admin admin);
+
+    /**
+     * 根据角色id,查询菜单信息
+     * @param ruleId
+     * @return
+     */
+    List<Menu> listMenuByRule(Integer ruleId);
+
+    /**
+     * 根据角色id,查询权限信息
+     * @param ruleId
+     * @return
+     */
+    List<String> listSymbolByRule(Integer ruleId);
+
+    /**
+     * 查询供应商所有的角色
+     * @param supplierId
+     * @return
+     */
+    List<SysRule> listRule(Integer supplierId);
+
+    /**
+     * 查询单个角色的信息
+     * @param ruleId
+     * @return
+     */
+    SysRule getRule(Integer ruleId);
+
+    /**
+     * 查询所有再用的菜单
+     * @return
+     */
+    List<Menu> listMenu();
+
+    /**
+     * 添加角色
+     * @param supplierId
+     * @param ruleName
+     * @param subMenuId
+     * @return
+     */
+    int addRule(Integer supplierId, String ruleName, Integer[] subMenuId);
+
+    /**
+     * 编辑角色
+     * @param ruleId
+     * @param ruleName
+     * @param subMenuId
+     * @return
+     */
+    int editRule(Integer ruleId, String ruleName, Integer[] subMenuId);
+}

+ 1 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/admin/AdminLoginServiceImpl.java

@@ -17,6 +17,7 @@ import com.iamberry.wechat.face.admin.AdminLoginService;
 import com.iamberry.wechat.service.admin.dao.AdminLoginDAO;
 
 @Service
+@Deprecated
 public class AdminLoginServiceImpl implements AdminLoginService {
 
 	@Autowired

+ 174 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/sys/SysServiceImpl.java

@@ -0,0 +1,174 @@
+package com.iamberry.wechat.service.sys;
+
+import com.github.pagehelper.PageHelper;
+import com.iamberry.sys.*;
+import com.iamberry.wechat.core.entity.page.PageRequest;
+import com.iamberry.wechat.core.entity.page.PagedResult;
+import com.iamberry.wechat.face.sys.SysService;
+import com.iamberry.wechat.service.PageUtil;
+import com.iamberry.wechat.service.sys.mapper.SysMapper;
+import com.iamberry.wechat.tools.MD5Util;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.sql.SQLException;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+@Service
+public class SysServiceImpl implements SysService {
+
+    @Autowired
+    private SysMapper sysMapper;
+
+    @Override
+    public String getSaltByLoginName(String loginName) {
+        return sysMapper.getSaltByLoginName(loginName);
+    }
+
+    @Override
+    public Admin get(Admin admin) {
+        return sysMapper.get(admin);
+    }
+
+    @Override
+    public Integer editAdmin(Admin admin) {
+        // 不允许修改的内容:身份、使用状态、销售数量、登录账户
+        admin.setAdminAccount(null);
+        // 如果密码不为空,则表示需要修改密码
+        createMD5(admin);
+        // 更新
+        return sysMapper.updateAdmin(admin);
+    }
+
+    @Override
+    public PagedResult<Admin> listAdmin(PageRequest<Admin> pageRequest) {
+        // 开始分页(页数, 每页数据大小,是否需要总页数,即执行(select count()))
+        PageHelper.startPage(pageRequest.getPageNO(), pageRequest.getPageSize(), pageRequest.isPageTotal());
+        List<Admin> list = sysMapper.listAdmin(pageRequest.getData());
+        return PageUtil.getPage(list);
+    }
+
+    @Override
+    public Integer saveAdmin(Admin admin) {
+        // 如果密码不为空,则表示需要修改密码
+        createMD5(admin);
+        return sysMapper.addAdmin(admin);
+    }
+
+    /**
+     * 为对象Admin生产MD5信息
+     * @param admin
+     */
+    private void createMD5(Admin admin) {
+        if (admin.getAdminPassword() != null) {
+            String salt = UUID.randomUUID().toString().replaceAll("-", "");
+            if (salt.length() > 32) {
+                salt = salt.substring(0, 31);
+            }
+            admin.setAdminPassword(MD5Util.MD5Encode(admin.getAdminPassword() + salt, "UTF-8"));
+            admin.setAdminSalt(salt);
+        }
+    }
+
+    @Override
+    public List<Menu> listMenuByRule(Integer ruleId) {
+        return sysMapper.listMenuByRule(ruleId);
+    }
+
+    @Override
+    public List<String> listSymbolByRule(Integer ruleId) {
+        return sysMapper.listSymbolByRule(ruleId);
+    }
+
+    @Override
+    public List<SysRule> listRule(Integer supplierId) {
+        return sysMapper.listRule(supplierId);
+    }
+
+    @Override
+    public SysRule getRule(Integer ruleId) {
+        return sysMapper.getRule(ruleId);
+    }
+
+    @Override
+    public List<Menu> listMenu() {
+        return sysMapper.listMenu();
+    }
+
+    @Override
+    @Transactional(rollbackFor = {RuntimeException.class, SQLException.class})
+    public int addRule(Integer supplierId, String ruleName, Integer[] subMenuId) {
+        if (subMenuId == null || subMenuId.length <= 0) {
+            return 0;
+        }
+        // 添加角色
+        SysRule sysRule = new SysRule();
+        sysRule.setRuleName(ruleName);
+        sysRule.setSupplierId(supplierId);
+        sysRule.setRuleState(1);
+        if (sysRule.getRuleOrderPermission() == null) {
+            sysRule.setRuleOrderPermission(1);
+        }
+        int res = sysMapper.addRule(sysRule);
+        if (res <= 0) {
+            return 0;
+        }
+        // 添加权限
+        for (Integer subId : subMenuId) {
+            List<MenuPermisssion> subs = sysMapper.listPermisssionBySubId(subId);
+            if (subs == null || subs.isEmpty()) {
+                continue;
+            }
+            for (MenuPermisssion perm : subs) {
+                AdminPocess pocess = new AdminPocess();
+                pocess.setMenuId(perm.getPermMenuId());
+                pocess.setPermId(perm.getPermId());
+                pocess.setPocessSymbol(perm.getPermSymbol());
+                pocess.setRuleId(sysRule.getRuleId());
+                pocess.setSubId(subId);
+                sysMapper.addPocess(pocess);
+            }
+        }
+        return 1;
+    }
+
+    @Override
+    @Transactional(rollbackFor = {RuntimeException.class, SQLException.class})
+    public int editRule(Integer ruleId, String ruleName, Integer[] subMenuId) {
+        // 修改角色信息
+        SysRule rule = new SysRule();
+        rule.setRuleId(ruleId);
+        rule.setRuleName(ruleName);
+        sysMapper.editRule(rule);
+
+        // 删除角色拥有的权限
+        sysMapper.delPocess(ruleId);
+
+        // 重新录入角色权限
+        for (Integer subId : subMenuId) {
+            List<MenuPermisssion> subs = sysMapper.listPermisssionBySubId(subId);
+            if (subs == null || subs.isEmpty()) {
+                continue;
+            }
+            for (MenuPermisssion perm : subs) {
+                AdminPocess pocess = new AdminPocess();
+                pocess.setMenuId(perm.getPermMenuId());
+                pocess.setPermId(perm.getPermId());
+                pocess.setPocessSymbol(perm.getPermSymbol());
+                pocess.setRuleId(ruleId);
+                pocess.setSubId(subId);
+                sysMapper.addPocess(pocess);
+            }
+        }
+        return 1;
+    }
+}

+ 115 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/sys/mapper/SysMapper.java

@@ -0,0 +1,115 @@
+package com.iamberry.wechat.service.sys.mapper;
+
+
+import com.iamberry.sys.*;
+
+import java.util.List;
+
+/**
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+public interface SysMapper {
+
+    String getSaltByLoginName(String loginName);
+
+    /**
+     * 根据用户获取登录信息
+     * @param admin
+     * @return
+     */
+    Admin get(Admin admin);
+
+    /**
+     * 编辑管理员信息
+     * @param admin
+     * @return
+     */
+    Integer updateAdmin(Admin admin);
+
+    /**
+     * 管理员集合
+     * @param admin
+     * @return
+     */
+    List<Admin> listAdmin(Admin admin);
+
+    /**
+     * 添加管理员
+     * @param admin
+     * @return
+     */
+    Integer addAdmin(Admin admin);
+
+    /**
+     * 根据角色id,查询菜单信息
+     * @param ruleId
+     * @return
+     */
+    List<Menu> listMenuByRule(Integer ruleId);
+
+    /**
+     * 查询所有再用的菜单
+     * @return
+     */
+    List<Menu> listMenu();
+
+    /**
+     * 根据角色id,查询权限信息
+     * @param ruleId
+     * @return
+     */
+    List<String> listSymbolByRule(Integer ruleId);
+
+    /**
+     * 查询供应商所有的角色
+     * @param supplierId
+     * @return
+     */
+    List<SysRule> listRule(Integer supplierId);
+
+    /**
+     * 添加角色
+     * @param sysRule
+     * @return
+     */
+    int addRule(SysRule sysRule);
+
+    /**
+     * 编辑角色
+     * @param sysRule
+     * @return
+     */
+    int editRule(SysRule sysRule);
+
+    /**
+     * 查询单个角色的信息
+     * @param ruleId
+     * @return
+     */
+    SysRule getRule(Integer ruleId);
+
+    /**
+     * 查询二级菜单的权限
+     * @param subId
+     * @return
+     */
+    List<MenuPermisssion> listPermisssionBySubId(Integer subId);
+
+    /**
+     * 添加管理员权限
+     * @param pocess
+     * @return
+     */
+    int addPocess(AdminPocess pocess);
+
+    /**
+     * 删除角色对应的权限
+     * @param ruleId
+     * @return
+     */
+    int delPocess(Integer ruleId);
+}

+ 179 - 0
watero-wechat-service/src/main/java/com/iamberry/wechat/service/sys/mapper/sysMapper.xml

@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iamberry.wechat.service.sys.mapper.SysMapper">
+
+	<!-- 根据用户名称获取用户的盐值 -->
+	<select id="getSaltByLoginName" parameterType="String" resultType="String">
+		SELECT admin_salt FROM tb_sys_admin WHERE admin_account = #{loginName}
+	</select>
+
+	<!-- 获取管理员信息 -->
+	<select id="get" parameterType="Admin" resultType="Admin">
+		SELECT * FROM tb_sys_admin
+		WHERE
+		<choose>
+			<when test="adminAccount != null">
+				admin_account = #{adminAccount}
+			</when>
+			<otherwise>
+				admin_id = #{adminId}
+			</otherwise>
+		</choose>
+	</select>
+
+	<!-- 修改管理员信息 -->
+	<update id="updateAdmin" parameterType="Admin">
+		UPDATE tb_sys_admin
+		<set>
+			<if test="adminName != null">
+				admin_name = #{adminName},
+			</if>
+			<if test="adminSex != null">
+				admin_sex = #{adminSex},
+			</if>
+			<if test="adminTel != null">
+				admin_tel = #{adminTel},
+			</if>
+			<if test="adminPassword != null">
+				admin_password = #{adminPassword},
+			</if>
+			<if test="adminSalt != null">
+				admin_salt = #{adminSalt},
+			</if>
+			<if test="adminStatus != null">
+				admin_status = #{adminStatus},
+			</if>
+			<if test="adminMail != null">
+				admin_mail = #{adminMail},
+			</if>
+			<if test="ruleId != null">
+				rule_id = #{ruleId},
+			</if>
+			admin_update_time = NOW()
+		</set>
+		WHERE admin_id = #{adminId}
+	</update>
+
+	<!-- 查询信息 -->
+	<select id="listAdmin" parameterType="Admin" resultType="Admin">
+		SELECT
+			a.*, r.rule_name "rule.ruleName"
+		FROM tb_sys_admin a
+		left join tb_sys_rule r on a.rule_id = r.rule_id
+		<where>
+			<if test="adminName != null and adminName != ''">
+				AND admin_name LIKE CONCAT('%', #{adminName},'%')
+			</if>
+			<if test="adminSex != null and adminSex != ''">
+				AND admin_sex = #{adminSex}
+			</if>
+			<if test="adminTel != null and adminTel != ''">
+				AND admin_tel LIKE CONCAT('%', #{adminTel},'%')
+			</if>
+			<if test="adminMail != null and adminMail != ''">
+				AND admin_mail LIKE CONCAT('%', #{adminMail},'%')
+			</if>
+			<if test="adminAccount != null and adminAccount != ''">
+				AND admin_account = #{adminAccount}
+			</if>
+			<if test="adminId != null">
+				AND admin_id = #{adminId}
+			</if>
+		</where>
+	</select>
+
+	<!-- 添加管理员信息 -->
+	<insert id="addAdmin" parameterType="Admin" useGeneratedKeys="true" keyProperty="adminId">
+		INSERT INTO tb_sys_admin(admin_name, rule_id, supplier_id, admin_sex, admin_tel, admin_account, admin_password, admin_salt, admin_status, admin_mail, admin_create_time, admin_update_time)
+		VALUES (#{adminName}, #{ruleId}, #{supplierId}, #{adminSex}, #{adminTel}, #{adminAccount}, #{adminPassword}, #{adminSalt}, #{adminStatus}, #{adminMail}, NOW(), NOW())
+	</insert>
+
+	<!-- 查询菜单信息 -->
+	<select id="listMenu" resultMap="MenuMap">
+		select * from tb_sys_menu m
+		left join tb_sys_sub_menu s on m.menu_id = s.sub_menu_id and s.sub_status = 1
+		where m.menu_status = 1
+	</select>
+
+	<resultMap type="NewMenu" id="MenuMap">
+		<id column="menu_id" property="menuId"/>
+		<result column="menu_name" property="menuName"/>
+		<result column="menu_icon" property="menuIcon"/>
+		<result column="menu_status" property="menuStatus"/>
+		<result column="menu_create_time" property="menuCreateTime"/>
+		<collection property="subMenus" ofType="SubMenu">
+			<id column="sub_id" property="subId"/>
+			<result column="sub_menu_id" property="subMenuId"/>
+			<result column="sub_name" property="subName"/>
+			<result column="sub_icon" property="subIcon"/>
+			<result column="sub_status" property="subStatus"/>
+			<result column="sub_url" property="subUrl"/>
+			<result column="sub_create_time" property="subCreateTime"/>
+		</collection>
+	</resultMap>
+
+	<!-- 根据角色查询菜单信息 -->
+	<select id="listMenuByRule" parameterType="Integer" resultMap="MenuMap">
+		select m.*, s.* from tb_sys_admin_pocess p
+		left join tb_sys_menu m on m.menu_id = p.menu_id and m.menu_status = 1
+		left join tb_sys_sub_menu s on s.sub_id = p.sub_id and s.sub_status = 1
+		where p.rule_id = #{ruleId}
+	</select>
+	
+	<!-- 根据角色查询权限 -->
+	<select id="listSymbolByRule" parameterType="Integer" resultType="String">
+		select pocess_symbol from tb_sys_admin_pocess where rule_id = #{ruleId}
+	</select>
+
+	<!-- 查询所有的角色 -->
+	<select id="listRule" parameterType="Integer" resultType="SysRule">
+		select * from tb_sys_rule where supplier_id = #{supplierId} and rule_state = 1
+	</select>
+
+    <!-- 获取单个角色信息 -->
+    <select id="getRule" parameterType="Integer" resultType="SysRule">
+        select * from tb_sys_rule where rule_id = #{ruleId}
+    </select>
+
+    <update id="editRule" parameterType="SysRule" >
+        update tb_sys_rule
+        <set >
+            <if test="ruleName != null" >
+                rule_name = #{ruleName,jdbcType=VARCHAR},
+            </if>
+            <if test="ruleState != null" >
+                rule_state = #{ruleState,jdbcType=TINYINT},
+            </if>
+            <if test="ruleOrderPermission != null" >
+				rule_order_permission = #{ruleOrderPermission,jdbcType=TINYINT},
+            </if>
+            rule_update_time = NOW()
+        </set>
+        where rule_id = #{ruleId,jdbcType=INTEGER}
+    </update>
+
+	<!-- 添加角色 -->
+	<insert id="addRule" parameterType="SysRule" useGeneratedKeys="true" keyProperty="ruleId">
+		insert into tb_sys_rule (rule_name, rule_state, rule_create_time, rule_update_time, supplier_id, rule_order_permission)
+		values (#{ruleName,jdbcType=VARCHAR}, #{ruleState,jdbcType=TINYINT}, NOW(), NOW(), #{supplierId}, #{ruleOrderPermission})
+	</insert>
+	
+	<!-- 根据二级菜单查询菜单权限 -->
+	<select id="listPermisssionBySubId" parameterType="Integer" resultType="MenuPermisssion">
+		select
+			   p.sub_id "permSubId", p.menu_id "permMenuId", p.perm_name,
+			   p.perm_create_time, p.perm_id, p.perm_status, p.perm_symbol
+		from tb_sys_menu_permisssion p where sub_id = #{subId}
+	</select>
+
+	<!-- 批量增加权限 -->
+	<insert id="addPocess" parameterType="AdminPocess" useGeneratedKeys="true" keyProperty="pocessId">
+		INSERT INTO tb_sys_admin_pocess(menu_id, sub_id, pocess_symbol, perm_id, rule_id, pocess_create_time)
+		VALUES (#{menuId}, #{subId}, #{pocessSymbol}, #{permId}, #{ruleId}, NOW())
+	</insert>
+
+    <!-- 删除角色对应的权限 -->
+    <delete id="delPocess" parameterType="Integer">
+        delete from tb_sys_admin_pocess where rule_id = #{ruleId}
+    </delete>
+</mapper>

+ 18 - 1
watero-wechat-web/pom.xml

@@ -49,7 +49,24 @@
 			<groupId>javax.servlet</groupId>
 			<artifactId>jstl</artifactId>
 		</dependency>
-		
+
+		<!-- shiro -->
+		<dependency>
+			<groupId>org.apache.shiro</groupId>
+			<artifactId>shiro-core</artifactId>
+			<version>1.3.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.shiro</groupId>
+			<artifactId>shiro-web</artifactId>
+			<version>1.3.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.shiro</groupId>
+			<artifactId>shiro-spring</artifactId>
+			<version>1.3.2</version>
+		</dependency>
+
 		<!-- 新的项目使用druid -->
 		<dependency>
 			<groupId>com.alibaba</groupId>

+ 12 - 10
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/AdminLoginHandler.java

@@ -27,6 +27,7 @@ import com.iamberry.wechat.sendMsg.SendMessageUtil;
  * create date : 2015年12月10日
  */
 @Controller
+@Deprecated
 public class AdminLoginHandler {
 	
 	@Autowired
@@ -46,11 +47,12 @@ public class AdminLoginHandler {
 	@Autowired
 	private EfastOrderService efastOrderService;
 	// 将 s 进行 BASE64 编码 
-		public static String getBASE64(String s) {
-			if (s == null)
-				return null;
-			return (new sun.misc.BASE64Encoder()).encode(s.getBytes());
+	public static String getBASE64(String s) {
+		if (s == null) {
+			return null;
 		}
+		return (new sun.misc.BASE64Encoder()).encode(s.getBytes());
+	}
 	/**
 	 * 用户申请后台登陆
 	 * @param request
@@ -65,7 +67,7 @@ public class AdminLoginHandler {
 		
 		// 校验用户是否登陆成功
 		if (AdminUtils.getLoginAdminUser(request.getSession()) != null) {
-			mv.setViewName("admin/main/index"); // 转向home页
+			mv.setViewName("admin/main/index");
 			return mv;
 		}
 		// 登陆判断
@@ -76,12 +78,12 @@ public class AdminLoginHandler {
 		}
 		if (object instanceof AdminInfo) {
 			AdminInfo adminInfo = (AdminInfo) object;
-			if (adminInfo == null || adminInfo.getAdminId() == null) {
+			if (adminInfo.getAdminId() == null) {
 				adminUtils.createRandom(request.getSession());
 				return mv;
 			}
 			// 判断用户状态
-			if (adminInfo.getAdminStatus().intValue() != 1) {
+			if (adminInfo.getAdminStatus() != 1) {
 				mv.addObject("title", "对不起,您的账户被封,请联系管理员!");
 				mv.addObject("text", "对不起,您的账户被封,请联系管理员~");
 				mv.setViewName("admin/msg/error");
@@ -89,12 +91,12 @@ public class AdminLoginHandler {
 			}
 		} else if (object instanceof AdminChildInfo) {
 			AdminChildInfo adminInfo = (AdminChildInfo) object;
-			if (adminInfo == null || adminInfo.getAdminId() == null) {
+			if (adminInfo.getAdminId() == null) {
 				adminUtils.createRandom(request.getSession());
 				return mv;
 			}
 			// 判断用户状态
-			if (adminInfo.getAdminStatus().intValue() != 1) {
+			if (adminInfo.getAdminStatus() != 1) {
 				mv.addObject("title", "对不起,您的账户被封,请联系管理员!");
 				mv.addObject("text", "对不起,您的账户被封,请联系管理员~");
 				mv.setViewName("admin/msg/error");
@@ -105,7 +107,7 @@ public class AdminLoginHandler {
 		}
 		
 		// 登陆成功
-		mv.setViewName("admin/main/index"); // 转向home页
+		mv.setViewName("admin/main/index");
 		AdminUtils.addAdminUserToSession(object, request);
 		// 判断是否需要注册菜单信息
 		List<AdminChildPermissions> sessionMenuInfos = (List<AdminChildPermissions>) request.getSession().getAttribute("menuInfos");

+ 158 - 0
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/LoginController.java

@@ -0,0 +1,158 @@
+package com.iamberry.wechat.handles.admin;
+
+import com.iamberry.sys.Admin;
+import com.iamberry.wechat.face.sys.SysService;
+import com.iamberry.wechat.realm.IamberryRealm;
+import com.iamberry.wechat.tools.ResponseJson;
+import com.iamberry.wechat.utils.AdminUtils;
+import com.iamberry.wechat.utils.VerifyCodeUtil;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.LockedAccountException;
+import org.apache.shiro.authc.UnknownAccountException;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.subject.Subject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.Random;
+
+/**
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/12
+ */
+@Controller
+public class LoginController {
+
+    private static Logger logger = LoggerFactory.getLogger(LoginController.class);
+
+    @Autowired
+    private SysService sysService;
+
+    @Autowired
+    private IamberryRealm iamberryRealm;
+
+    @RequestMapping("/_login")
+    public ModelAndView loginUI(HttpServletRequest request) {
+        // 判断用户是否登录,如果已经登录,则跳转
+        Subject currentUser = SecurityUtils.getSubject();
+        if (!currentUser.isAuthenticated()) {
+            // 判断是否已经记住过密码
+            Admin admin = AdminUtils.getAdminCookie(request);
+            if (admin == null) {
+                return new ModelAndView("login");
+            }
+            try {
+                // 执行登录.
+                currentUser.login(new UsernamePasswordToken(admin.getAdminAccount(), admin.getAdminPassword().toUpperCase()));
+            } catch (Exception e) {
+                logger.error("", e);
+                return new ModelAndView("login");
+            }
+        }
+
+        // 已登陆
+        return new ModelAndView("redirect:/admin/sys/_index");
+    }
+
+    @ResponseBody
+    @RequestMapping("/get_salt")
+    public ResponseJson getSalt(@RequestParam("login_name") String login_name) {
+        // 获取用户的盐值
+        String salt = sysService.getSaltByLoginName(login_name);
+        if (salt == null || "".equals(salt)) {
+            return new ResponseJson(200, "SUCCESS", 400);
+        }
+        return new ResponseJson(200, "SUCCESS", 200).addResponseKeyValue("salt", salt);
+    }
+
+    @ResponseBody
+    @RequestMapping("/loginShiro")
+    public ResponseJson loginShiro(HttpServletRequest request, HttpServletResponse response,
+                              @RequestParam("login_name") String loginName,
+                              @RequestParam("login_pwd") String loginPwd,
+                              @RequestParam("login_code") String loginCode,
+                              @RequestParam(value = "remember_me", required = false, defaultValue = "false") String rememberMe) {
+
+        // 判断 验证码是否有误
+        Object temp = request.getSession().getAttribute("login_code");
+        if (temp == null || !loginCode.equalsIgnoreCase(temp.toString())) {
+            return new ResponseJson(200, "VERIFY_CODE_ERROR", 400);
+        }
+
+        // 调用Shiro登录
+        Subject currentUser = SecurityUtils.getSubject();
+        if (!currentUser.isAuthenticated()) {
+            try {
+                // 执行登录.
+                currentUser.login(new UsernamePasswordToken(loginName, loginPwd.toUpperCase()));
+            }
+            catch (UnknownAccountException ue) {
+                // 没有这个用户
+                return new ResponseJson(200, "NOT_ADMIN", 404);
+            }
+            catch (LockedAccountException le) {
+                // 账户被锁定
+                return new ResponseJson(200, "ADMIN_LOCKED", 403);
+            }
+            catch (Exception ae) {
+                // 所有认证时异常的父类.
+                return new ResponseJson(200, "LOGIN_ERROR", 500);
+            }
+        }
+
+        // 是否需要记住密码
+        if ("true".equals(rememberMe)) {
+            AdminUtils.saveAdminToCookie(AdminUtils.getLoginAdminId(), loginName, loginPwd.toUpperCase(), response);
+        }
+
+        // 登录成功
+        return new ResponseJson(200, "SUCCESS", 200);
+    }
+
+    /**
+     * 验证码
+     * @param response
+     * @param request
+     * @throws IOException
+     */
+    @RequestMapping(value = "/security_code")
+    public void securityCode(HttpServletResponse response, HttpServletRequest request,
+                             @RequestParam(value = "len", required = false, defaultValue = "6") Integer len) throws IOException {
+        // 生成随机的验证码
+        String verifyCode = VerifyCodeUtil.generateTextCode(3, len, null);
+        // 保存
+        request.getSession().setAttribute("login_code", verifyCode);
+        // 输出到Response
+        response.setContentType("image/jpeg");
+        BufferedImage bufferedImage = VerifyCodeUtil.generateImageCode(verifyCode, 130, 40, new Random().nextInt(50), true, Color.WHITE, Color.BLACK, null);
+        // 使用ServletOutputStream,要比PrintWrite快
+        ImageIO.write(bufferedImage, "JPEG", response.getOutputStream());
+    }
+
+    @RequestMapping("/_exit")
+    public ModelAndView exit(HttpServletRequest request) {
+        // Shiro退出
+        Subject subject = SecurityUtils.getSubject();
+        if (subject.isAuthenticated()) {
+            // 清空缓存的权限
+            iamberryRealm.getAuthorizationCache().remove(subject);
+            subject.logout();
+        }
+        // 返回Login页面
+        return new ModelAndView("login");
+    }
+}

+ 264 - 0
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/admin/SysController.java

@@ -0,0 +1,264 @@
+package com.iamberry.wechat.handles.admin;
+
+import com.iamberry.sys.Admin;
+import com.iamberry.sys.Menu;
+import com.iamberry.wechat.core.entity.page.PageRequest;
+import com.iamberry.wechat.core.entity.page.PagedResult;
+import com.iamberry.wechat.face.sys.SysService;
+import com.iamberry.wechat.tools.ResponseJson;
+import com.iamberry.wechat.tools.StrUtils;
+import com.iamberry.wechat.utils.AdminUtils;
+import com.iamberry.wechat.utils.StaticModelUtil;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.authz.annotation.RequiresUser;
+import org.apache.shiro.subject.Subject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+/**
+ * @author 献
+ *
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/15
+ */
+@Controller
+@RequestMapping("/admin/sys")
+public class SysController {
+
+    @Autowired
+    private SysService sysService;
+
+    private static Logger logger = LoggerFactory.getLogger(SysController.class);
+
+    /**
+     * 后台首页,自动判断来源
+     * @param request
+     * @return
+     */
+    @RequiresUser
+    @RequestMapping("/_index")
+    public ModelAndView indexUI(HttpServletRequest request) {
+        Subject currentUser = SecurityUtils.getSubject();
+        Admin admin = (Admin) currentUser.getPrincipal();
+        // 注入数据:管理员名称、管理员部门
+        List<Menu> list = sysService.listMenuByRule(AdminUtils.getLoginAdmin().getRuleId());
+        return new ModelAndView("home/pc_index")
+                .addObject("adminName", admin.getAdminName())
+                .addObject("deptName", "WaterO微信商城管理")
+                .addObject("menus", list);
+    }
+
+    /**
+     * 查看我的信息
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping("/get/my_info")
+    public ResponseJson getMyInfo() {
+        // 获取当前用户信息
+        Integer adminId = AdminUtils.getLoginAdminId();
+        Admin temp = new Admin();
+        temp.setAdminId(adminId);
+
+        // 查询数据 & 清空敏感数据
+        Admin admin = sysService.get(temp);
+        admin.setAdminId(null);
+        admin.setAdminPassword(null);
+        admin.setAdminSalt(null);
+        admin.setAdminTel(StrUtils.phoneFormat(admin.getAdminTel()));
+        return new ResponseJson(200, "SUCCESS", 200).addResponseKeyValue("admin", admin);
+    }
+
+    /**
+     * 进入修改密码页面
+     * @return
+     */
+    @RequiresPermissions("sys:editMyPwd")
+    @RequestMapping("/edit/_my_pwd")
+    public ModelAndView editMyPasswordUI() {
+        return new ModelAndView("sys/edit_pwd");
+    }
+
+    /**
+     * 执行修改密码
+     * @param pwd
+     * @return
+     */
+    @RequiresPermissions("sys:editMyPwd")
+    @RequestMapping("/edit/my_pwd")
+    @ResponseBody
+    public ResponseJson editMyPassword(@RequestParam("pwd") String pwd) {
+        // 获取当前用户信息
+        Integer adminId = AdminUtils.getLoginAdminId();
+
+        Admin admin = new Admin();
+        admin.setAdminPassword(pwd);
+        admin.setAdminId(adminId);
+
+        Integer res = sysService.editAdmin(admin);
+        if (res == 1) {
+            return new ResponseJson(200, "SUCCESS", 200);
+        }
+
+        return new ResponseJson(200, "SUCCESS", 400);
+    }
+
+    /**
+     * 编辑自己的用户信息页面
+     * @return
+     */
+    @RequiresPermissions("sys:editMyInfo")
+    @RequestMapping("/_edit_myinfo")
+    public ModelAndView editMeInfoUI() {
+        // 获取当前用户信息
+        Integer adminId = AdminUtils.getLoginAdminId();
+        Admin temp = new Admin();
+        temp.setAdminId(adminId);
+        Admin admin = sysService.get(temp);
+
+        // 返回用户信息
+        ModelAndView mv = new ModelAndView("admin/edit");
+        mv.addObject("admin", admin);
+        return mv;
+    }
+
+
+    @RequiresPermissions("sys:listAdmin")
+    @RequestMapping("/_list_admin")
+    public ModelAndView listAdminUI(Admin admin, HttpServletRequest request,
+                                    @RequestParam(value = "pageNO", defaultValue = "1", required = false) int pageNO,
+                                    @RequestParam(value = "pageTotal", required = false) Integer pageTotal,
+                                    @RequestParam(value = "pageSize", defaultValue = "20", required = false) int pageSize) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
+
+        // 封装请求数据
+        PageRequest<Admin> pageRequest = new PageRequest<>(admin, pageNO, pageSize, pageTotal == null);
+
+        // 查询
+        PagedResult<Admin> result = sysService.listAdmin(pageRequest);
+        if (pageTotal != null) {
+            result.setPages(pageTotal);
+        }
+
+        // 返回
+        ModelAndView mv = new ModelAndView("sys/list_admin");
+        mv.addObject("page", result);
+        mv.addObject("url", request.getRequestURI().replace(request.getContextPath(), "") +
+                "?pageTotal=" + result.getPages() + "&pageSize=" + pageSize +
+                "&adminName=" + (admin.getAdminName() == null ? "" : admin.getAdminName()) +
+                "&adminSex=" + (admin.getAdminSex() == null ? "" : admin.getAdminSex()) +
+                "&adminTel=" + (admin.getAdminTel() == null ? "" : admin.getAdminTel()) +
+                "&adminMail=" + (admin.getAdminMail() == null ? "" : admin.getAdminMail()) +
+                "&pageNO=");
+
+        // 向页面传递数据,注意防止XSS
+        mv.addObject("admin", admin);
+        mv.addObject("strUtil", StaticModelUtil.useStaticPacker(StrUtils.class.getName()));
+        return mv;
+    }
+
+    @ResponseBody
+    @RequestMapping("/edit_status")
+    @RequiresPermissions("sys:listAdmin")
+    public ResponseJson editStatus(@RequestParam("adminId") Integer adminId,
+                                   @RequestParam("status") Integer status) {
+
+        Admin admin = new Admin();
+        admin.setAdminId(adminId);
+        admin.setAdminStatus(status);
+        Integer res = sysService.editAdmin(admin);
+        if (res == null || res <= 0) {
+            return new ResponseJson(200, "SUCCESS", 400);
+        }
+        return new ResponseJson(200, "SUCCESS", 200);
+    }
+
+    @RequestMapping("/addAdminUI")
+    @RequiresPermissions("sys:listAdmin")
+    public ModelAndView addAdminUI() {
+        return new ModelAndView("sys/add").addObject("rules", sysService.listRule(AdminUtils.getLoginAdmin().getSupplierId()));
+    }
+
+    @ResponseBody
+    @RequestMapping("/addAdmin")
+    @RequiresPermissions("sys:listAdmin")
+    public ResponseJson addAdmin(Admin admin) {
+        admin.setAdminStatus(2);
+        admin.setSupplierId(AdminUtils.getLoginAdmin().getSupplierId());
+        Integer res = sysService.saveAdmin(admin);
+        return res <= 0 ? ResponseJson.FAILURE : ResponseJson.SUCCESS;
+    }
+
+    @RequestMapping("/editAdminUI")
+    @RequiresPermissions("sys:listAdmin")
+    public ModelAndView editAdminUI(Admin admin) {
+        return new ModelAndView("sys/edit")
+                .addObject("obj", sysService.get(admin))
+                .addObject("rules", sysService.listRule(AdminUtils.getLoginAdmin().getSupplierId()));
+    }
+
+    @ResponseBody
+    @RequestMapping("/editAdmin")
+    @RequiresPermissions("sys:listAdmin")
+    public ResponseJson editAdmin(Admin admin) {
+        Integer res = sysService.editAdmin(admin);
+        return res <= 0 ? ResponseJson.FAILURE : ResponseJson.SUCCESS;
+    }
+
+    @RequestMapping("/listRule")
+    @RequiresPermissions("sys:listRule")
+    public ModelAndView listRule() {
+        return new ModelAndView("sys/list_rule")
+                .addObject("rules", sysService.listRule(AdminUtils.getLoginAdmin().getSupplierId()));
+    }
+
+    @RequestMapping("/addRuleUI")
+    @RequiresPermissions("sys:listRule")
+    public ModelAndView addRuleUI() {
+        return new ModelAndView("sys/add_rule").addObject("menus", sysService.listMenu());
+    }
+
+    @ResponseBody
+    @RequestMapping("/addRule")
+    @RequiresPermissions("sys:listRule")
+    public ResponseJson addRule(@RequestParam("name") String name,
+                                @RequestParam("menuId") Integer[] menuId) {
+        return sysService.addRule(AdminUtils.getLoginAdmin().getSupplierId(), name, menuId) <= 0 ? ResponseJson.FAILURE : ResponseJson.SUCCESS;
+    }
+
+    @RequestMapping("/editRuleUI")
+    @RequiresPermissions("sys:listRule")
+    public ModelAndView editRuleUI(@RequestParam("id") Integer id) {
+        return new ModelAndView("sys/edit_rule")
+                .addObject("obj", sysService.getRule(id))
+                .addObject("menus", sysService.listMenu());
+    }
+
+    @ResponseBody
+    @RequestMapping("/editRule")
+    @RequiresPermissions("sys:listRule")
+    public ResponseJson editRule(@RequestParam("ruleId") Integer ruleId,
+                                 @RequestParam("name") String name,
+                                 @RequestParam("menuId") Integer[] menuId) {
+        return sysService.editRule(ruleId, name, menuId) <= 0 ? ResponseJson.FAILURE : ResponseJson.SUCCESS;
+    }
+
+    @RequestMapping("/accountInfo")
+    @RequiresPermissions("sys:accountInfo")
+    public ModelAndView accountInfo() {
+        return new ModelAndView("sys/edit_pwd")
+                .addObject("obj", AdminUtils.getLoginAdmin())
+                .addObject("rule", sysService.getRule(AdminUtils.getLoginAdmin().getRuleId()));
+    }
+}

+ 1 - 1
watero-wechat-web/src/main/java/com/iamberry/wechat/handles/cart/CartHandlers.java

@@ -59,7 +59,7 @@ import com.iamberry.wechat.tools.StaticInfo;
 @Controller
 @RequestMapping("/wechat/cart")
 public class CartHandlers {
-	Logger logger = LoggerFactory.getLogger(CartHandlers.class);
+	private static final Logger logger = LoggerFactory.getLogger(CartHandlers.class);
 	
 	@Autowired
 	private CartService cartService;

+ 71 - 0
watero-wechat-web/src/main/java/com/iamberry/wechat/realm/IamberryRealm.java

@@ -0,0 +1,71 @@
+package com.iamberry.wechat.realm;
+
+import com.iamberry.sys.Admin;
+import com.iamberry.wechat.face.sys.SysService;
+import org.apache.shiro.authc.*;
+import org.apache.shiro.authz.AuthorizationInfo;
+import org.apache.shiro.authz.SimpleAuthorizationInfo;
+import org.apache.shiro.realm.AuthorizingRealm;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+public class IamberryRealm extends AuthorizingRealm {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(IamberryRealm.class);
+
+    @Autowired
+    private SysService sysService;
+
+    /**
+     * 认证
+     * @param token
+     * @return
+     * @throws AuthenticationException
+     */
+    @Override
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
+        if (LOGGER.isDebugEnabled()) {
+            LOGGER.info(token.getPrincipal() + " - 申请认证...");
+        }
+        UsernamePasswordToken passwordToken = (UsernamePasswordToken) token;
+        // 查找用户信息
+        Admin temp = new Admin();
+        temp.setAdminAccount(passwordToken.getUsername());
+        Admin admin = sysService.get(temp);
+        if (admin == null) {
+            throw new UnknownAccountException("NOT_ADMIN");
+        }
+        if (admin.getAdminStatus() == 2) {
+            throw new LockedAccountException("ADMIN_LOCKED");
+        }
+        // 返回信息
+        return new SimpleAuthenticationInfo(admin, admin.getAdminPassword().toUpperCase(), getName());
+    }
+
+    /**
+     * 授权(权限认证 )
+     * @param principals
+     * @return
+     */
+    @Override
+    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
+        if (LOGGER.isDebugEnabled()) {
+            LOGGER.info(principals.toString() + " - 申请授权...");
+        }
+        // 获取登录时输入的用户名
+        Admin admin = (Admin) principals.getPrimaryPrincipal();
+        // 根据id,查询用户的权限
+        List<String> permissions = sysService.listSymbolByRule(admin.getRuleId());
+        // 封装权限
+        Set<String> perms = new HashSet<>(permissions);
+        //权限信息对象info,用来存放查出的用户的所有的角色(role)及权限(permission)
+        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
+        info.setStringPermissions(perms);
+        return info;
+    }
+}

+ 144 - 0
watero-wechat-web/src/main/java/com/iamberry/wechat/utils/AdminUtils.java

@@ -0,0 +1,144 @@
+package com.iamberry.wechat.utils;
+import com.auth0.jwt.JWTSigner;
+import com.auth0.jwt.JWTVerifier;
+import com.iamberry.jwt.AES;
+import com.iamberry.sys.Admin;
+import com.iamberry.wechat.utils.token.TokenUtil;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.subject.Subject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.util.Assert;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 系统管理员工具类
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/16
+ */
+public class AdminUtils {
+
+    private static final Logger logger = LoggerFactory.getLogger(AdminUtils.class);
+
+    /**
+     * 保存cookie
+     * @param adminId
+     * @param name
+     * @param response
+     */
+    public static void saveAdminToCookie(Integer adminId, String name, String pwd, HttpServletResponse response) {
+        String ticket = TokenUtil.getToken().substring(0, 8);
+        String token = getToken(adminId, name, ticket, pwd);
+        token = ticket + token;
+        Cookie cookie = new Cookie("NEXT_LOGIN", token);
+        cookie.setMaxAge((60 * 60 * 24 * 3) * 30 - 60);
+        cookie.setPath("/");
+        cookie.setHttpOnly(true);
+
+        response.addCookie(cookie);
+    }
+
+    /**
+     * 解析Cookie中的信息
+     * @param request
+     * @return
+     */
+    public static Admin getAdminCookie(HttpServletRequest request) {
+        Cookie [] cookies = request.getCookies();
+        if (cookies == null || cookies.length <= 0) {
+            return null;
+        }
+        for (Cookie cooky : cookies) {
+            if ("NEXT_LOGIN".equals(cooky.getName())) {
+                String token = cooky.getValue();
+                String ticket = token.substring(0, 8);
+                return verifier(token, ticket);
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * return:
+     * 	1:token过期,失效						    <br>
+     * 	2:token正常								<br>
+     * 		可以通过get("userid")获取userid		<br>
+     * 		可以通过get("WC_OPENID")获取openid	<br>
+     * @param userToken
+     * @return
+     */
+    private static Admin verifier(String userToken, String key) {
+        JWTVerifier verifier = new JWTVerifier(key);
+        Map<String, Object> claims = null;
+        try {
+            // 解析TOKEN
+            claims = verifier.verify(userToken.substring(8));
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+        String temp = AES.decrypt(claims.get("userid").toString());
+        Assert.notNull(temp, "校验失败,请确认!");
+        // 解析userid
+        Integer userid = Integer.parseInt(temp);
+        String username = claims.get("WC_OPENID").toString();
+        String password = claims.get("pwd").toString();
+
+        Admin admin = new Admin();
+        admin.setAdminId(userid);
+        admin.setAdminAccount(username);
+        admin.setAdminPassword(password);
+
+        return admin;
+    }
+
+    /**
+     * 根据secretToken加密用户id、openid,生成json web token
+     * @param userid		用户id
+     * @param openId		openid
+     * @param secretToken	token,限制为8位
+     * @return
+     * @author 献
+     * @Time   2016年11月24日
+     */
+    private static String getToken(Integer userid, String openId, String secretToken, String pwd) {
+        JWTSigner signer = new JWTSigner(secretToken);
+        // 当前时间
+        long iat = System.currentTimeMillis() / 1000L;
+        // 过期时间,设置为三月以后,需要重新获取token
+        long exp = iat + (259200L * 10 * 3);
+        // 创建对象
+        HashMap<String, Object> claims = new HashMap<String, Object>();
+        claims.put("exp", exp);
+        claims.put("iat", iat);
+        claims.put("userid", AES.encrypt(userid.toString()));
+        claims.put("WC_OPENID", openId);
+        claims.put("pwd", pwd);
+        return signer.sign(claims);
+    }
+
+    /**
+     * 根据管理员登录账户,获取管理员id
+     * @return
+     */
+    public static Integer getLoginAdminId() {
+        // 获取当前用户信息
+        Subject currentUser = SecurityUtils.getSubject();
+        Admin admin = (Admin) currentUser.getPrincipal();
+        return admin.getAdminId();
+    }
+
+    public static Admin getLoginAdmin() {
+        // 获取当前用户信息
+        Subject currentUser = SecurityUtils.getSubject();
+        return (Admin) currentUser.getPrincipal();
+    }
+}

+ 33 - 0
watero-wechat-web/src/main/java/com/iamberry/wechat/utils/StaticModelUtil.java

@@ -0,0 +1,33 @@
+package com.iamberry.wechat.utils;
+
+import freemarker.template.Version;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import freemarker.ext.beans.BeansWrapper;
+import freemarker.template.TemplateHashModel;
+import freemarker.template.TemplateModelException;
+
+/**
+ * 增加调用静态方法的类
+ * @author 献
+ * @company 深圳爱贝源科技有限公司
+ * @website www.iamberry.com
+ * @tel 18271840547
+ * @date 2017/5/15
+ */
+public class StaticModelUtil {
+
+    private static Logger logger = LoggerFactory.getLogger(StaticModelUtil.class);
+    private final static BeansWrapper wrapper = new BeansWrapper(new Version(2, 3, 25));
+    private final static TemplateHashModel staticModels = wrapper.getStaticModels();
+
+    public static TemplateHashModel useStaticPacker(String className) {
+        TemplateHashModel fileStatics = null;
+        try {
+            fileStatics = (TemplateHashModel) staticModels.get(className);
+        } catch (TemplateModelException e) {
+            logger.error("", e);
+        }
+        return fileStatics;
+    }
+}

+ 3 - 1
watero-wechat-web/src/main/resources/ioc.xml

@@ -37,7 +37,9 @@
     <!-- 将30天后奖励积分的定时任务的xml引入 -->
 
 	<import resource="classpath:db.xml"/>
-	
+
+	<!-- Shiro -->
+	<import resource="classpath:shiro.xml"/>
 	<!-- spring监控
     <bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
 	</bean>

+ 4 - 4
watero-wechat-web/src/main/resources/mvc.xml

@@ -16,8 +16,8 @@
 	<bean id="viewResolverJsp" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
         <property name="contentType" value="text/html; charset=UTF-8"/>
-		<property name="prefix" value="/WEB-INF/views/"></property>
-		<property name="suffix" value=".jsp"></property>
+        <property name="prefix" value="/WEB-INF/views/"/>
+        <property name="suffix" value=".jsp"/>
         <property name="order" value="1"/> 
 	</bean>
 	
@@ -54,9 +54,9 @@
 	<!-- 配置MultipartResolver -->
 	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
 		<!-- 默认的编码 -->
-		<property name="defaultEncoding" value="UTF-8"></property>
+        <property name="defaultEncoding" value="UTF-8"/>
 		<!-- 最大上传大小 -->
-		<property name="maxUploadSize" value="1024000"></property>
+        <property name="maxUploadSize" value="1024000"/>
 	</bean>
 	
 	<!--避免IE执行AJAX时,返回JSON出现下载文件 -->  

+ 11 - 0
watero-wechat-web/src/main/resources/orm.xml

@@ -16,6 +16,14 @@
     </settings>
     <!-- 别名设置 -->
 	<typeAliases>
+		<!-- 新版的后台管理 -->
+		<typeAlias type="com.iamberry.sys.Admin" alias="Admin"/>
+		<typeAlias type="com.iamberry.sys.AdminPocess" alias="AdminPocess"/>
+		<typeAlias type="com.iamberry.sys.Menu" alias="NewMenu"/>
+		<typeAlias type="com.iamberry.sys.SubMenu" alias="SubMenu"/>
+		<typeAlias type="com.iamberry.sys.MenuPermisssion" alias="MenuPermisssion"/>
+		<typeAlias type="com.iamberry.sys.SysRule" alias="SysRule"/>
+
 		<typeAlias type="com.iamberry.wechat.core.entity.admin.AdminChildHavePermission" alias="AdminChildHavePermission"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.admin.AdminChildInfo" alias="AdminChildInfo"/>
 		<typeAlias type="com.iamberry.wechat.core.entity.admin.AdminChildPermissionErmissions" alias="AdminChildPermissionErmissions"/>
@@ -369,5 +377,8 @@
 		<!--赠品-->
 		<mapper resource="com/iamberry/wechat/service/mapper/integralConfigMapper.xml"/>
 		<mapper resource="com/iamberry/wechat/service/mapper/IntegralLogMapper.xml"/>
+
+		<!-- 新版的后台管理 -->
+		<mapper resource="com/iamberry/wechat/service/sys/mapper/sysMapper.xml"/>
 	</mappers>
 </configuration>

+ 39 - 0
watero-wechat-web/src/main/resources/shiro.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:aop="http://www.springframework.org/schema/aop"
+       xsi:schemaLocation="
+        http://www.springframework.org/schema/aop
+        http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
+        http://www.springframework.org/schema/beans
+		http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+    <bean id="iamberryRealm" class="com.iamberry.wechat.realm.IamberryRealm"/>
+
+    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
+        <property name="realm" ref="iamberryRealm"/>
+        <property name="rememberMeManager.cookie.maxAge" value="259200"/>
+        <!-- 使用下面配置的缓存管理器 -->
+        <property name="cacheManager" ref="cacheManager"/>
+    </bean>
+
+    <!-- 用户权限、角色缓存到内存中 -->
+    <bean id="cacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager"/>
+
+    <!-- Lifecycle -->
+    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
+    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>
+
+    <!-- ShiroFilter -->
+    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
+        <property name="securityManager" ref="securityManager"/>
+        <property name="loginUrl" value="/_login"/>
+        <property name="filterChainDefinitions" value="/admin/**=authc"/>
+    </bean>
+
+    <!-- Shiro 注解 -->
+    <aop:config proxy-target-class="true"/>
+    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
+        <property name="securityManager" ref="securityManager"/>
+    </bean>
+</beans>

+ 31 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/base/add_base.ftl

@@ -0,0 +1,31 @@
+<#--
+ 添加页面的基本静态文件
+ -->
+<#assign path="${request.contextPath}"/>
+<!--[if lt IE 9]>
+<script type="text/javascript" src="${path}/common/lib/html5shiv.js"></script>
+<script type="text/javascript" src="${path}/common/lib/respond.min.js"></script>
+<![endif]-->
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/css/H-ui.admin.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/lib/Hui-iconfont/1.0.8/iconfont.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/skin/default/skin.css" id="skin" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/css/style.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/lib/chosen/css/chosen.css" />
+<!--[if IE 6]>
+<script type="text/javascript" src="${path}/common/lib/DD_belatedPNG_0.0.8a-min.js" ></script>
+<script>DD_belatedPNG.fix('*');</script>
+<![endif]-->
+<script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/layer/2.4/layer.js"></script>
+<script type="text/javascript" src="${path}/common/static/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="${path}/common/static/h-ui.admin/js/H-ui.admin.js"></script>
+<script type="text/javascript" src="${path}/common/lib/Validform/5.3.2/Validform.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript" src="${path}/common/lib/chosen/js/chosen.jquery.js"></script>
+<script type="text/javascript">
+    // 判断
+    var root_path = "${path}";
+</script>
+<script type="text/javascript" src="${path}/common/js/base/common.js"></script>
+<script type="text/javascript" src="${path}/common/lib/common/add_common.js"></script>

+ 26 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/base/index_base.ftl

@@ -0,0 +1,26 @@
+<#--
+ index页面的基本静态文件
+ -->
+<#assign path="${request.contextPath}"/>
+<!--[if lt IE 9]>
+    <script type="text/javascript" src="${path}/common/lib/html5shiv.js"></script>
+    <script type="text/javascript" src="${path}/common/lib/respond.min.js"></script>
+    <![endif]-->
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/css/H-ui.admin.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/lib/Hui-iconfont/1.0.8/iconfont.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/skin/default/skin.css" id="skin" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/css/style.css" />
+<!--[if IE 6]>
+<script type="text/javascript" src="${path}/common/lib/DD_belatedPNG_0.0.8a-min.js" ></script>
+<script>DD_belatedPNG.fix('*');</script>
+<![endif]-->
+<script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/layer/2.4/layer.js"></script>
+<script type="text/javascript" src="${path}/common/static/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="${path}/common/static/h-ui.admin/js/H-ui.admin.js"></script>
+<script type="text/javascript" src="${path}/common/lib/jquery.contextmenu/jquery.contextmenu.r2.js"></script>
+<script type="text/javascript">
+    var root_path = "${path}";
+</script>
+<script type="text/javascript" src="${path}/common/js/base/common.js"></script>

+ 33 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/base/list_base.ftl

@@ -0,0 +1,33 @@
+<#--
+ 列表页面的基本静态文件
+ -->
+<#assign path="${request.contextPath}"/>
+<!--[if lt IE 9]>
+<script type="text/javascript" src="${path}/common/lib/html5shiv.js"></script>
+<script type="text/javascript" src="${path}/common/lib/respond.min.js"></script>
+<![endif]-->
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui/css/H-ui.min.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/css/H-ui.admin.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/lib/Hui-iconfont/1.0.8/iconfont.css" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/skin/default/skin.css" id="skin" />
+<link rel="stylesheet" type="text/css" href="${path}/common/static/h-ui.admin/css/style.css" />
+<!--[if IE 6]>
+<script type="text/javascript" src="${path}/common/lib/DD_belatedPNG_0.0.8a-min.js" ></script>
+<script>DD_belatedPNG.fix('*');</script>
+<![endif]-->
+<script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/layer/2.4/layer.js"></script>
+<script type="text/javascript" src="${path}/common/static/h-ui/js/H-ui.min.js"></script>
+<script type="text/javascript" src="${path}/common/static/h-ui.admin/js/H-ui.admin.js"></script>
+<script type="text/javascript" src="${path}/common/lib/My97DatePicker/4.8/WdatePicker.js"></script>
+<script type="text/javascript" src="${path}/common/lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
+<script type="text/javascript" src="${path}/common/lib/laypage/1.2/laypage.js"></script>
+<style type="text/css" rel="stylesheet">
+    .table>tbody>tr>td{
+        text-align:center;
+    }
+</style>
+<script type="text/javascript">
+    var root_path = "${path}";
+</script>
+<script type="text/javascript" src="${path}/common/js/base/common.js"></script>

+ 82 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/base/page_util.ftl

@@ -0,0 +1,82 @@
+
+<script type="text/javascript">
+    function _go() {
+        var pageNO = $("#pageCode").val();
+        /* 获取文本框中的当前页码 */
+        if(!/^[1-9]\d*$/.test(pageNO)) {
+            /* 对当前页码进行整数校验 */
+            alert('请输入正确的页码!');
+            return;
+        }
+        var page = "${page.pages}";
+        page = parseInt(page);
+        if(pageNO > page) {
+            /* 判断当前页码是否大于最大页 */
+            alert('请输入正确的页码!');
+            return;
+        }
+        var pageno = "${page.pageNo}";
+        pageno = parseInt(pageno);
+        if(pageNO == pageno) {
+            alert("您处于" + pageNO + "页!");
+            return;
+        }
+        location = "${path}${url}" + pageNO;
+    }
+</script>
+
+
+<div align="right" style="margin-right: 18px">
+<div class="divBody">
+    <div id="testDIV"></div>
+    <form action="" id="myForm" method="post"></form>
+    <div class="btn-group">
+        <span class="btn btn-lowblue radius">
+            <#if page.pageNo == 1>
+                <a class="active">上一页</a>
+            <#else>
+                <a href="${path}${url}${page.pageNo-1}" class="aBtn bold">上一页</a>
+            </#if>
+        </span>
+        <#if page.pages lte 6>
+            <#assign begin=1/>
+            <#assign end=page.pages/>
+        <#else>
+            <#assign begin=(page.pageNo - 2)/>
+            <#assign end=(page.pageNo + 3)/>
+            <#if begin lt 1>
+                <#assign begin=1/>
+                <#assign end=1/>
+            <#else>
+                <#assign begin=(page.pages - 5)/>
+                <#assign end=(page.pages)/>
+            </#if>
+        </#if>
+
+        <#--<#list begin .. end as pageN>
+            <#if pageN == page.pageNo>
+                <span class="btn btn-lowblue radius"><a  class="active">${pageN}</a></span>
+            <#else>
+                <span class="btn btn-lowblue radius"><a href="${path}${url}${pageN}" class="aBtn">${pageN}</a></span>
+            </#if>
+        </#list>
+
+        <#if end==page.pages><a class="active">...</a></#if>-->
+        <span class="btn btn-lowblue radius">
+            <#if (page.pageNo == page.pages || page.pages == 0)>
+                <a class="active">下一页</a>
+            <#else>
+                <a href="${path }${url}${page.pageNo+1}" class="aBtn bold">下一页</a>
+            </#if>
+		</span>
+        <span class="btn" style="cursor: default;">
+    			您当前位于:${page.pageNo}页
+    	</span>
+
+        <span class="btn" style="cursor: default;">共<a class="active">${page.pages}</a>页</span>
+        <span class="btn" style="cursor: default;">到<a class="active" style="max-height: 36px;min-height: 34px"><input type="text" id="pageCode" value="${page.pageNo}" class="input-text radius" style="width: 36px;height:22px;text-align: center;" maxlength="3"/></a>页</span>
+        <span class="btn btn-lowblue radius"><a href="javascript:_go();" class="active">确定</a></span>
+        <a href="#" style="overflow:hidden" class="active"></a>
+    </div>
+</div>
+</div>

+ 136 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/login.ftl

@@ -0,0 +1,136 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <#assign path="${request.contextPath}"/>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp"/>
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+    <link href="${path}/common/static/h-ui/css/H-ui.min.css" rel="stylesheet" type="text/css" />
+    <link href="${path}/common/static/h-ui.admin/css/H-ui.login.css" rel="stylesheet" type="text/css" />
+    <link href="${path}/common/static/h-ui.admin/css/style.css" rel="stylesheet" type="text/css" />
+    <link href="${path}/common/css/login/login.css" rel="stylesheet" type="text/css" />
+    <link href="${path}/common/lib/Hui-iconfont/1.0.8/iconfont.css" rel="stylesheet" type="text/css" />
+    <!--[if IE 6]>
+    <script type="text/javascript" src="${path}/common/lib/DD_belatedPNG_0.0.8a-min.js" ></script>
+    <script>DD_belatedPNG.fix('*');</script>
+    <![endif]-->
+    <title>WaterO微信商城管理后台</title>
+    <script type="text/javascript">
+        var root_path = "${path}";
+        /*用于判断是否有父级页面,如果有就强制跳转*/
+        function myfun(){
+            var ifmObj = window.parent.PARENT_IS_LOGIN;
+            console.log(window.parent);
+            if(ifmObj != null && ifmObj !== "" && typeof(ifmObj) !=="undefined" && ifmObj !== undefined && ifmObj === 1){
+                parent.location.href = "${path}/";
+            }
+        }
+        window.onload = myfun();
+    </script>
+</head>
+<body>
+<!--<div class="header"></div>-->
+<div class="loginWraper">
+    <div id="loginform" class="loginBox">
+        <form class="form form-horizontal" method="post">
+            <div class="row cl">
+                <div class="formControls col-8 col-offset-3">
+                    <input id="login_name" autocomplete="off" name="login_name" type="text" placeholder="请输入账户" class="input-text size-L user_count">
+                </div>
+            </div>
+            <div class="row cl">
+                <div class="formControls col-8 col-offset-3">
+                    <input id="login_pwd" autocomplete="off" name="login_pwd" type="password" placeholder="请输入密码" class="input-text size-L pass_word">
+                </div>
+            </div>
+            <div class="row cl">
+                <div class="formControls col-8 col-offset-3">
+                    <input autocomplete="off" class="input-text size-L validate" id="login_code" name="login_code" type="text" placeholder="验证码">
+                    <img src="${path}/security_code?len=4" style="width: 100px;" id="next-code-img"> <a id="kanbuq" href="javascript:;">换一张</a> </div>
+            </div>
+            <div class="row">
+                <div class="formControls col-8 col-offset-3">
+                    <label for="remember_me">
+                        <input type="checkbox" name="online" id="remember_me" value="">使我保持登录状态
+                    </label>
+                </div>
+            </div>
+            <div class="row loginbox_btn">
+                <div class="formControls col-8 col-offset-3">
+                    <input style="background-color: #0075b6;border-color: #0075b6;" name="" id="login-btn" type="submit" class="btn btn-block btn-primary radius size-L my-btn-login" value="&nbsp;登&nbsp;&nbsp;&nbsp;&nbsp;录&nbsp;">
+                </div>
+            </div>
+        </form>
+    </div>
+</div>
+<script type="text/javascript" src="${path}/common/lib/jquery/1.9.1/jquery.min.js"></script>
+<script type="text/javascript" src="${path}/common/static/h-ui/js/H-ui.js"></script>
+<script type="text/javascript" src="${path}/common/lib/layer/2.4/layer.js"></script>
+<script type="text/javascript" src="${path}/common/lib/md5/md5.js"></script>
+<script type="text/javascript" src="${path}/common/js/base/common.js"></script>
+<script>
+    // 密码
+    var pwd = null;
+    // 换一张验证码实现
+    $("#kanbuq").click(function() {
+        nextVerifyCode();
+    });
+
+    function nextVerifyCode() {
+        var url = $("#next-code-img").attr("src");
+        $("#next-code-img").attr("src", url.split("?")[0] + "?len=4&v=" + Math.ceil(Math.random()*35));
+    }
+
+    // 执行登录
+    $("#login-btn").click(function(){
+        var login_name = $("#login_name").val();
+        var re = /^[a-zA-z]\w{5,16}$/;
+        if (!(re.test(login_name))) {
+            layer.msg('用户名必须以字母、数字、下划线组成,字母开头,6-16位!',{icon: 5,time:3000});
+            return false;
+        }
+        var login_pwd = $("#login_pwd").val();
+        if (!(re.test(login_pwd))) {
+            layer.msg('密码必须以字母、数字、下划线组成,字母开头,6-16位!',{icon: 5,time:3000});
+            return false;
+        }
+        var login_code = $("#login_code").val();
+        if (login_code.length !== 4) {
+            layer.msg('验证码必须为4位!',{icon: 5,time:2000});
+            return false;
+        }
+
+        // 获取盐值
+        ajax("POST", "/get_salt", {"login_name":login_name}, function(result){
+            if (result.resultCode !== 200 || result.returnCode !== 200) {
+                layer.msg('账户信息有误,请联系管理员!',{icon: 5,time:2000});
+                nextVerifyCode();
+                return false;
+            }
+
+            // 执行登录
+            pwd = hex_md5(login_pwd + result.returnMsg.salt);
+            ajax("POST", "/loginShiro", {"login_name":login_name, "login_pwd":pwd, "login_code":login_code, "remember_me":$("#remember_me")[0].checked + ""}, function(result){
+                if (result.returnCode === 400) {
+                    layer.msg('验证码有误,请重新输入!',{icon: 5,time:3000});
+                    nextVerifyCode();
+                    return false;
+                } else if (result.returnCode !== 200) {
+                    layer.msg('登录有误,请重试!',{icon: 5,time:3000});
+                    nextVerifyCode();
+                    return false;
+                } else {
+                    layer.load(0, {zIndex:300000, isOutAnim:true, shade: [0.8,'#fff']});
+                    window.location.href = root_path + "/admin/sys/_index";
+                }
+            });
+        });
+        return false;
+    });
+</script>
+</body>
+</html>

+ 103 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/sys/add.ftl

@@ -0,0 +1,103 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <#include "/base/add_base.ftl">
+    <!-- 引入文本编辑器 -->
+    <link rel="stylesheet" type="text/css" href="${path}/common/kingedit/themes/default/default.css" />
+    <script type="text/javascript" src="${path}/common/kingedit/kindeditor.js"></script>
+    <script type="text/javascript" src="${path}/common/kingedit/lang/zh_CN.js"></script>
+    <title>添加管理员</title>
+</head>
+<body>
+<div class="pd-20">
+    <form action="/admin/sys/addAdmin" method="post" class="form form-horizontal" id="form-admin-add">
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>所属角色:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <span class="select-box">
+                    <select class="select" id="ruleId" name="ruleId" datatype="*" nullmsg="请选择角色">
+                        <option value="">请选择角色</option>
+                        <#list rules as r>
+                            <option value="${(r.ruleId)!}">${(r.ruleName)!}</option>
+                        </#list>
+                    </select>
+                </span>
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>姓名:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input type="text" placeholder="姓名" name="adminName" id="adminName" class="input-text" datatype="*1-10" nullmsg="姓名不合法">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>性别:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <span class="select-box">
+                    <select class="select" id="adminSex" name="adminSex" datatype="*" nullmsg="请选择性别">
+                        <option value="1">男</option>
+                        <option value="2">女</option>
+                    </select>
+                </span>
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>电话:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input type="text" placeholder="电话" name="adminTel" id="adminTel" class="input-text" datatype="/^((0\d{2,3}-\d{7,8})|(1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}))$/" nullmsg="电话不合法">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>邮箱:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input id="adminMail" placeholder="邮箱" name="adminMail" type="text" datatype="e" class="input-text">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>登陆账户:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input id="adminAccount" placeholder="登陆账户" name="adminAccount" type="text" datatype="/^[a-zA-z]\w{5,16}$/" class="input-text">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>登陆密码:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input id="adminPassword" placeholder="登陆密码" name="adminPassword" type="text" datatype="/^[a-zA-z]\w{5,16}$/" class="input-text">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <span style="margin-left: 19%;color: red">
+                注意:新增的管理员,默认是无法登陆的,请增加后进入管理员列表启用
+            </span>
+        </div>
+
+        <div class="row cl">
+            <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
+                <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
+            </div>
+        </div>
+
+    </form>
+</div>
+</body>
+</html>

+ 74 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/sys/add_rule.ftl

@@ -0,0 +1,74 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <LINK rel="Bookmark" href="/favicon.ico" >
+    <LINK rel="Shortcut Icon" href="/favicon.ico" />
+    <#include "/base/add_base.ftl">
+    <title>添加角色</title>
+</head>
+<body>
+
+<div class="pd-20">
+    <form action="/admin/sys/addRule" method="post" class="form form-horizontal" id="form-admin-add">
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>角色名称:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input type="text" placeholder="角色名称" name="name" id="name" class="input-text" datatype="*1-10" nullmsg="角色名称不合法">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>角色权限:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <ul id ="Huifold1" class ="Huifold">
+                    <#list menus as menu>
+                        <li class ="item">
+                            <h4>${(menu.menuName)!}<b>+</b></h4>
+                            <div class="info">
+                                <table class="table table-border table-bordered">
+                                    <thead><tr><th width="20%">权限</th><th>二级菜单名称</th></tr></thead>
+                                    <tbody>
+                                    <#list menu.subMenus as sub>
+                                        <tr>
+                                            <td><label><input class="menuId" name="menuId" type="checkbox" value="${(sub.subId)!}">选中</label></td>
+                                            <td style="text-align: left;">${(sub.subName)!}</td>
+                                        </tr>
+                                    </#list>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </li>
+                    </#list>
+                </ul>
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3" style="margin-left: 17%;">
+                <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
+            </div>
+        </div>
+    </form>
+</div>
+</body>
+<script type="text/javascript">
+    $(function () {
+        $.Huifold("#Huifold1 .item h4","#Huifold1 .item .info","fast",1,"click");
+    });
+    function user_callback() {
+        var len = $("input[type='checkbox']:checked").length;
+        if (len <= 0) {
+            layer.msg("必须选中至少一个菜单哦",{icon: 1,time:3000});
+            return false;
+        }
+        return true;
+    }
+</script>
+</html>

+ 109 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/sys/edit.ftl

@@ -0,0 +1,109 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <#include "/base/add_base.ftl">
+    <!-- 引入文本编辑器 -->
+    <link rel="stylesheet" type="text/css" href="${path}/common/kingedit/themes/default/default.css" />
+    <script type="text/javascript" src="${path}/common/kingedit/kindeditor.js"></script>
+    <script type="text/javascript" src="${path}/common/kingedit/lang/zh_CN.js"></script>
+    <title>添加管理员</title>
+</head>
+<body>
+<div class="pd-20">
+    <form action="/admin/sys/editAdmin" method="post" class="form form-horizontal" id="form-admin-add">
+
+        <input type="hidden" name="adminId" value="${obj.adminId}">
+
+        <input type="hidden" id="ruleId-hid" value="${obj.ruleId}">
+        <input type="hidden" id="adminSex-hid" value="${obj.adminSex}">
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>所属角色:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <span class="select-box">
+                    <select class="select" id="ruleId" name="ruleId" datatype="*" nullmsg="请选择角色">
+                        <option value="">请选择角色</option>
+                        <#list rules as r>
+                            <option value="${(r.ruleId)!}">${(r.ruleName)!}</option>
+                        </#list>
+                    </select>
+                </span>
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>姓名:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input type="text" placeholder="姓名" value="${(obj.adminName)!}" name="adminName" id="adminName" class="input-text" datatype="*1-10" nullmsg="姓名不合法">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>性别:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <span class="select-box">
+                    <select class="select" id="adminSex" name="adminSex" datatype="*" nullmsg="请选择性别">
+                        <option value="1">男</option>
+                        <option value="2">女</option>
+                    </select>
+                </span>
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>电话:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input type="text" placeholder="电话" value="${(obj.adminTel)!}" name="adminTel" id="adminTel" class="input-text" datatype="/^((0\d{2,3}-\d{7,8})|(1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}))$/" nullmsg="电话不合法">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>邮箱:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input id="adminMail" value="${(obj.adminMail)!}" placeholder="邮箱" name="adminMail" type="text" datatype="e" class="input-text">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>登陆账户:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input id="adminAccount" value="${(obj.adminAccount)!}" placeholder="登陆账户" name="adminAccount" type="text" datatype="/^[a-zA-z]\w{5,16}$/" class="input-text">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red"></span>登陆密码:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input id="adminPassword" ignore="ignore" placeholder="登陆密码" name="adminPassword" type="text" datatype="/^[a-zA-z]\w{5,16}$/" class="input-text">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
+                <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
+            </div>
+        </div>
+
+    </form>
+</div>
+</body>
+<script type="text/javascript">
+    $(function () {
+       $("#ruleId").val($("#ruleId-hid").val());
+       $("#adminSex").val($("#adminSex-hid").val());
+    });
+</script>
+</html>

+ 199 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/sys/edit_permission.ftl

@@ -0,0 +1,199 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <LINK rel="Bookmark" href="/favicon.ico" >
+    <LINK rel="Shortcut Icon" href="/favicon.ico" />
+    <#include "/base/list_base.ftl">
+    <title>管理员权限编辑 - 管理员管理 - 58驾校管理系统</title>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i>首页 <span class="c-gray en">&gt;</span>管理员管理 <span class="c-gray en">&gt;</span> 管理员权限编辑 <a class="btn btn-success radius r mr-20" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" id="re-fresh" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>
+<div class="pd-20">
+    <input type="hidden" id="hidden-adminid-input" value="${adminId}">
+    <form action="${path}/admin/admin/edit_permission" id="form-admin-add">
+        <input type="hidden" value="${adminId}" name="adminId">
+        <div class="cl pd-5 bg-1 bk-gray mt-20">
+            <span class="l"><button id="btn-sub" class="btn btn-primary radius"><i class="Hui-iconfont">&#xe632;</i> 保存</button></span>
+        </div>
+        <ul id="Huifold1" class="Huifold">
+            <#list list as o>
+                <li class="item">
+                    <h4><label class="permission-class"><input type="checkbox" len="${o.subMenus?size}" value="${o.menuId}" id="permission-${o.menuId}">${o.menuName}</label><b>+</b></h4>
+                    <div class="info">
+                        <table class="table table-border table-bordered">
+                            <thead>
+                            <tr><th width="20%">是否拥有操作此菜单的权限</th><th>二级菜单名称</th><th>操作权限集合</th></tr>
+                            </thead>
+                            <tbody>
+                            <#list o.subMenus as subs>
+                                <tr>
+                                    <th>
+                                        <label><input len="${subs.menuPermisssions?size}" id="permission-input-${subs.subId}" class="ermissions ermissions-${o.menuId}" name="haveId" type="checkbox" value="${subs.subId}">选中</label>
+                                    </th>
+                                    <td style="text-align: left;">${subs.subName}</td>
+                                    <td style="text-align: left;">
+                                        <#list subs.menuPermisssions as p>
+                                            <p>
+                                                <label>
+                                                    <input class="check-permission check-permission${subs.subId}" type="checkbox" name="check-perm" val="${o.menuId}-${subs.subId}-${p.permId}-${p.permSymbol}" <#if (p.permSubId)??>checked</#if> />
+                                                ${p.permName}
+                                                </label>
+                                            </p>
+                                        </#list>
+                                    </td>
+                                </tr>
+                            </#list>
+                            </tbody>
+                        </table>
+                    </div>
+                </li>
+            </#list>
+        </ul>
+    </form>
+</div>
+</body>
+<script type="text/javascript">
+    /**
+     * 二级管理员 权限编辑 JS
+     */
+    $(function() {
+        $.Huifold("#Huifold1 .item h4","#Huifold1 .item .info","fast",1,"click"); /*5个参数顺序不可打乱,分别是:相应区,隐藏显示的内容,速度,类型,事件*/
+        defaultSelect();
+
+        // 监听一级分类的事件
+        $(".permission-class").click(function(event) {
+            var $check = $($(this).children("input")[0]);
+            select_state($check.val(), event, $check[0]);
+        });
+
+        // 监听二级分类的事件
+        $(".ermissions").click(function(){
+            select_child_state($(this)[0]);
+        });
+
+        // 监听三级分类事件
+        $(".check-permission").click(function() {
+            select_permission_state($(this)[0]);
+        });
+
+        // 表单提交
+        $("#btn-sub").click(function(){
+            var array = new Array();
+            var ps = $(".check-permission");
+            var j = 0;
+            for (var i = 0; i < ps.length; i++) {
+                if (ps[i].checked) {
+                    array[j] = $(ps[i]).attr("val");
+                    j ++;
+                }
+            }
+
+            if (array.length == 0) {
+                layer.msg('您没有提管理员选择权限,如果想管理员看不见菜单,请禁用管理员用户!',{icon: 5,time:4500});
+                return false;
+            }
+
+            $.post(root_path + "/admin/sys/edit_permission",{"adminId":$("#hidden-adminid-input").val(), "perms":array},function(result){
+                if (result.returnCode != 200 || result.returnCode != 200) {
+                    layer.msg('重置失败,请重试!',{icon: 5,time:3000});
+                } else {
+                    layer.msg('修改成功,即将前往管理员页面!',{icon: 1,time:2000}, function () {
+                        window.history.go(-1);
+                    });
+                }
+            });
+            return false;
+        });
+    });
+
+    /* 默认选中事件 */
+    function defaultSelect() {
+        // 三级菜单
+        var ps = $(".check-permission");
+        for (var j = 0; j < ps.length; j++) {
+            select_permission_state(ps[j]);
+        }
+
+        /*var es = $(".ermissions");
+        for(var i = 0; i < es.length; i++) {
+            select_child_state(es[i]);
+        }*/
+    }
+
+    /* 二级菜单选择事件 */
+    function select_child_state(obj) {
+        var pid = ($(obj).attr("class")).replace("ermissions ermissions-", "");
+        // 已经选择的二级菜单
+        var selectLength = $(".ermissions-" + pid + ":checked").length;
+        // 一级菜单总的二级菜单
+        var total = parseInt($("#permission-" + pid).attr("len"));
+        // 选中
+        if (total == selectLength) {
+            $("#permission-" + pid).prop("checked", "true");
+        } else {
+            $("#permission-" + pid).prop("checked", "");
+        }
+        // 联动三级
+        var ps = $(".check-permission" + ($(obj).val()));
+        if (obj.checked) {
+            for (var i = 0; i < ps.length; i++) {
+                $(ps[i]).prop("checked", "true");
+            }
+        } else {
+            for (var i = 0; i < ps.length; i++) {
+                $(ps[i]).prop("checked", "");
+            }
+        }
+    }
+
+    /* 三级菜单选择时间 */
+    function select_permission_state(obj) {
+        var eid = ($(obj).attr("class")).replace("check-permission check-permission", "");
+        // 获取二级所属二级菜单
+        var $input = $("#permission-input-" + eid);
+        var inputTotal = parseInt($input.attr("len"));
+        // 当前选择的数量
+        var selectLength = $(".check-permission" + eid + ":checked").length;
+        if (inputTotal == selectLength) {
+            $input.prop("checked", "true");
+        } else {
+            $input.prop("checked", "");
+        }
+        // 每一个三级菜单选择完成,联动二级菜单
+        var es = $(".ermissions");
+        for(var i = 0; i < es.length; i++) {
+            var objElement = es[i];
+            var pid = ($(objElement).attr("class")).replace("ermissions ermissions-", "");
+            // 已经选择的二级菜单
+            var selectSubMenuTotal = $(".ermissions-" + pid + ":checked").length;
+            // 一级菜单总的二级菜单
+            var total = parseInt($("#permission-" + pid).attr("len"));
+            // 选中
+            if (total == selectSubMenuTotal) {
+                $("#permission-" + pid).prop("checked", "true");
+            } else {
+                $("#permission-" + pid).prop("checked", "");
+            }
+        }
+    }
+
+    /* 一级菜单权限改变事件 */
+    function select_state(id, event, obj) {
+        if (obj.checked) {
+            // 全选所有
+            $(".ermissions-" + id).prop("checked", "true");
+        } else {
+            // 取消全选所有
+            $(".ermissions-" + id).removeAttr("checked");
+        }
+        // 停止事件冒泡
+        event.stopPropagation();
+    }
+
+</script>
+</html>

+ 71 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/sys/edit_pwd.ftl

@@ -0,0 +1,71 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <#include "/base/add_base.ftl">
+    <title>修改我的信息</title>
+</head>
+<body>
+<article class="page-container">
+    <form action="/admin/sys/editAdmin" method="post" class="form form-horizontal" id="form-admin-add">
+
+        <input type="hidden" name="adminId" value="${(obj.adminId)!}">
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><h4>账户信息</h4></label>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">登录账户:</label>
+            <div class="formControls col-xs-8 col-sm-9">${(obj.adminAccount)!}</div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">角&nbsp;&nbsp;色:</label>
+            <div class="formControls col-xs-8 col-sm-9">${(rule.ruleName)!}</div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">姓&nbsp;&nbsp;名:</label>
+            <div class="formControls col-xs-8 col-sm-9">${(obj.adminName)!}</div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">电&nbsp;&nbsp;话:</label>
+            <div class="formControls col-xs-8 col-sm-9">${(obj.adminTel)!}</div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3">邮&nbsp;&nbsp;箱:</label>
+            <div class="formControls col-xs-8 col-sm-9">${(obj.adminMail)!}</div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><h4>修改密码</h4></label>
+            <span style="float: left;padding-top: 3%;padding-left: 3%;">(字母开头,数组和字母组合,长度位6-16位)</span>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>初始密码:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" autocomplete="off" placeholder="新密码" id="adminPassword" name="adminPassword" datatype="/^[a-zA-z]\w{5,16}$/">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>确认密码:</label>
+            <div class="formControls col-xs-8 col-sm-9">
+                <input type="text" class="input-text" autocomplete="off"  placeholder="确认新密码" recheck="adminPassword" datatype="*">
+            </div>
+        </div>
+        <div class="row cl">
+            <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
+                <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
+            </div>
+        </div>
+    </form>
+</article>
+</body>
+</html>

+ 77 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/sys/edit_rule.ftl

@@ -0,0 +1,77 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <LINK rel="Bookmark" href="/favicon.ico" >
+    <LINK rel="Shortcut Icon" href="/favicon.ico" />
+    <#include "/base/add_base.ftl">
+    <title>编辑角色</title>
+</head>
+<body>
+
+<div class="pd-20">
+    <form action="/admin/sys/editRule" method="post" class="form form-horizontal" id="form-admin-add">
+
+        <input type="hidden" value="${(obj.ruleId)!}" name="ruleId">
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>角色名称:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <input type="text" placeholder="角色名称" value="${(obj.ruleName)!}" name="name" id="name" class="input-text" datatype="*1-10" nullmsg="角色名称不合法">
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label col-xs-4 col-sm-3" style="padding-left: 0;margin-left: 0px;width: 17%;"><span class="c-red">*</span>角色权限:</label>
+            <div class="formControls col-xs-8 col-sm-9" style="padding-top: 3px;">
+                <ul id ="Huifold1" class ="Huifold">
+                    <#list menus as menu>
+                        <li class ="item">
+                            <h4>${(menu.menuName)!}<b>+</b></h4>
+                            <div class="info">
+                                <table class="table table-border table-bordered">
+                                    <thead><tr><th width="20%">权限</th><th>二级菜单名称</th></tr></thead>
+                                    <tbody>
+                                    <#list menu.subMenus as sub>
+                                        <tr>
+                                            <td><label><input class="menuId" name="menuId" type="checkbox" value="${(sub.subId)!}">选中</label></td>
+                                            <td style="text-align: left;">${(sub.subName)!}</td>
+                                        </tr>
+                                    </#list>
+                                    </tbody>
+                                </table>
+                            </div>
+                        </li>
+                    </#list>
+                </ul>
+            </div>
+            <div class="col-4"> </div>
+        </div>
+
+        <div class="row cl">
+            <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3" style="margin-left: 17%;">
+                <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
+            </div>
+        </div>
+    </form>
+</div>
+</body>
+<script type="text/javascript">
+    $(function () {
+        $.Huifold("#Huifold1 .item h4","#Huifold1 .item .info","fast",1,"click");
+    });
+    function user_callback() {
+        var len = $("input[type='checkbox']:checked").length;
+        if (len <= 0) {
+            layer.msg("必须选中至少一个菜单哦",{icon: 1,time:3000});
+            return false;
+        }
+        return true;
+    }
+</script>
+</html>

+ 71 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/sys/list_admin.ftl

@@ -0,0 +1,71 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+    <#include "/base/list_base.ftl">
+    <title>管理员列表</title>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 系统管理 <span class="c-gray en">&gt;</span> 管理员列表 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>
+<div class="page-container">
+    <div class="cl pd-5 bg-1 bk-gray mt-20" style="margin-bottom: 10px;margin-top: 0px">
+        <span class="l"><a href="javascript:;" onclick="layer_show('添加管理员','${path}/admin/sys/addAdminUI','800','500')" class="btn btn-primary radius"><i class="Hui-iconfont">&#xe600;</i> 添加管理员</a></span>
+    </div>
+     <table class="table table-border table-bordered table-hover">
+        <thead>
+        <tr class="text-c">
+            <th width="100">登陆账号</th>
+            <th width="50">姓名</th>
+            <th width="50">角色</th>
+            <th width="40">状态</th>
+            <th width="40">性别</th>
+            <th width="100">电话</th>
+            <th width="120">邮箱</th>
+            <th width="130">创建时间</th>
+            <th width="100">操作</th>
+        </tr>
+        </thead>
+        <tbody>
+        <#if (page.dataList?size <= 0)> {
+            <tr class="text-c"><td colspan="8">暂无数据</td></tr>
+        <#else>
+            <#list page.dataList as o>
+            <tr class="text-c">
+                <td>${o.adminAccount}</td>
+                <td>${o.adminName}</td>
+                <td>${(o.rule.ruleName)!}</td>
+                <#assign isStatus=(o.adminStatus == 1)/>
+                <#if isStatus>
+                    <td class="td-status"><span class="label label-success radius">已启用</span></td>
+                <#else>
+                    <td class="td-status"><span class="label radius">已禁用</span></td>
+                </#if>
+                <#assign isAdminSex=(o.adminSex == 1)/>
+                <td>${isAdminSex?string("男", "女")}</td>
+                <td>${strUtil.phoneFormat(o.adminTel)}</td>
+                <td>${o.adminMail}</td>
+                <td>${o.adminCreateTime?string("yyyy-MM-dd HH:mm:ss")}</td>
+                <td class="td-manage">
+                    <#if isStatus>
+                        <a style="text-decoration:none" onClick="admin_stop(this, ${o.adminId})" href="javascript:;" title="停用"><i class="Hui-iconfont">&#xe631;</i></a>
+                    <#else>
+                        <a style="text-decoration:none" onClick="admin_start(this, ${o.adminId})" href="javascript:;" title="启用"><i class="Hui-iconfont">&#xe615;</i></a>
+                    </#if>
+                    <a title="编辑管理员信息" href="javascript:layer_show('添加管理员','${path}/admin/sys/editAdminUI?adminId=${(o.adminId)}','800','500')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe61d;</i></a>
+                </td>
+            </tr>
+            </#list>
+        </#if>
+        </tbody>
+    </table>
+</div>
+<#include "/base/page_util.ftl">
+<script type="text/javascript" src="${path}/common/js/sys/list_admin.js"></script>
+</body>
+</html>

+ 51 - 0
watero-wechat-web/src/main/webapp/WEB-INF/views/sys/list_rule.ftl

@@ -0,0 +1,51 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <link rel="Bookmark" href="/favicon.ico" >
+    <link rel="Shortcut Icon" href="/favicon.ico" />
+    <#include "/base/list_base.ftl">
+    <title>角色列表</title>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 系统管理 <span class="c-gray en">&gt;</span> 角色列表 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>
+<div class="page-container">
+    <div class="cl pd-5 bg-1 bk-gray mt-20" style="margin-bottom: 10px;margin-top: 0px">
+        <span class="l"><a href="javascript:;" onclick="layer_show('添加角色','${path}/admin/sys/addRuleUI','800','500')" class="btn btn-primary radius"><i class="Hui-iconfont">&#xe600;</i> 添加角色 </a></span>
+    </div>
+     <table class="table table-border table-bordered table-hover">
+        <thead>
+        <tr class="text-c">
+            <th width="100">角色id</th>
+            <th width="50">角色名称</th>
+            <th width="130">修改时间</th>
+            <th width="130">创建时间</th>
+            <th width="100">操作</th>
+        </tr>
+        </thead>
+        <tbody>
+        <#if (rules?size <= 0)> {
+            <tr class="text-c"><td colspan="5">暂无数据</td></tr>
+        <#else>
+            <#list rules as o>
+            <tr class="text-c">
+                <td>${o.ruleId}</td>
+                <td>${o.ruleName}</td>
+                <td>${o.ruleUpdateTime?string("yyyy-MM-dd HH:mm:ss")}</td>
+                <td>${o.ruleCreateTime?string("yyyy-MM-dd HH:mm:ss")}</td>
+                <td class="td-manage">
+                    <a style="text-decoration:none" onClick="admin_stop(this, ${o.ruleId})" href="javascript:;" title="删除"><i class="Hui-iconfont">&#xe631;</i></a>
+                    <a title="编辑角色" href="javascript:layer_show('编辑角色','${path}/admin/sys/editRuleUI?id=${(o.ruleId)}','800','500')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe61d;</i></a>
+                </td>
+            </tr>
+            </#list>
+        </#if>
+        </tbody>
+    </table>
+</div>
+</body>
+</html>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 57
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/WdatePicker.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 5
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/calendar.js


+ 0 - 14
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/lang/en.js

@@ -1,14 +0,0 @@
-var $lang={
-errAlertMsg: "Invalid date or the date out of range,redo or not?",
-aWeekStr: ["wk", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
-aLongWeekStr:["wk","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],
-aMonStr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
-aLongMonStr: ["January","February","March","April","May","June","July","August","September","October","November","December"],
-clearStr: "Clear",
-todayStr: "Today",
-okStr: "OK",
-updateStr: "OK",
-timeStr: "Time",
-quickStr: "Quick Selection",
-err_1: 'MinDate Cannot be bigger than MaxDate!'
-}

+ 0 - 14
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/lang/zh-cn.js

@@ -1,14 +0,0 @@
-var $lang={
-errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u8303\u56F4,\u9700\u8981\u64A4\u9500\u5417?",
-aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
-aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
-aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
-aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
-clearStr: "\u6E05\u7A7A",
-todayStr: "\u4ECA\u5929",
-okStr: "\u786E\u5B9A",
-updateStr: "\u786E\u5B9A",
-timeStr: "\u65F6\u95F4",
-quickStr: "\u5FEB\u901F\u9009\u62E9", 
-err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u65E5\u671F!'
-}

+ 0 - 14
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/lang/zh-tw.js

@@ -1,14 +0,0 @@
-var $lang={
-errAlertMsg: "\u4E0D\u5408\u6CD5\u7684\u65E5\u671F\u683C\u5F0F\u6216\u8005\u65E5\u671F\u8D85\u51FA\u9650\u5B9A\u7BC4\u570D,\u9700\u8981\u64A4\u92B7\u55CE?",
-aWeekStr: ["\u5468","\u65E5","\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D"],
-aLongWeekStr:["\u5468","\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"],
-aMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00","\u5341\u4E8C"],
-aLongMonStr: ["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],
-clearStr: "\u6E05\u7A7A",
-todayStr: "\u4ECA\u5929",
-okStr: "\u78BA\u5B9A",
-updateStr: "\u78BA\u5B9A",
-timeStr: "\u6642\u9593",
-quickStr: "\u5FEB\u901F\u9078\u64C7",
-err_1: '\u6700\u5C0F\u65E5\u671F\u4E0D\u80FD\u5927\u65BC\u6700\u5927\u65E5\u671F!'
-}

+ 0 - 9
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/WdatePicker.css

@@ -1,9 +0,0 @@
-.Wdate{
-	background:#fff url(datePicker.gif) no-repeat right;
-}
-.Wdate::-ms-clear{display:none;}
-
-.WdateFmtErr{
-	font-weight:bold;
-	color:red;
-}

BIN
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/datePicker.gif


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 1
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/default/datepicker.css


BIN
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/default/img.gif


+ 0 - 339
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/twoer/datepicker-dev.css

@@ -1,339 +0,0 @@
-/* 
- * My97 DatePicker 4.8 
- * auther : zhangkun , hejianting(design)
- * email : zhangkun_net@hotmail.com
- * date : 2012-05-25
- */ 
-.WdateDiv
-{
-	position:relative;
-	padding:5px;
-	width:180px;
-	*width:190px;
-	font-size:12px;
-	color:#333;
-	border:solid 1px #DEDEDE;
-	background-color:#F2F0F1;
-}
-
-.WdateDiv2
-{
-	width:360px;
-}
-
-.WdateDiv .NavImg a,.WdateDiv .yminput,.WdateDiv .yminputfocus,.WdateDiv #dpQS 
-{
-	background:url(img.gif) no-repeat;
-}
-
-.WdateDiv .NavImg a
-{
-	float:left;
-	width:16px;
-	height:16px;
-	cursor:pointer;
-}
-.WdateDiv .NavImgll a
-{
-	background-position:0px 5px;
-}
-.WdateDiv .NavImgl a
-{
-	background-position:0px -10px;
-}
-.WdateDiv .NavImgr a
-{
-	background-position:0px -25px;
-	float:right;
-}
-.WdateDiv .NavImgrr a
-{
-	background-position:0px -40px;
-	float:right;
-}
-
-.WdateDiv #dpTitle
-{
-	padding:3px 0px 0px 0px;
-	line-height:0px;
-	height:20px;
-	*height:23;
-}
-
-.WdateDiv .yminput,.WdateDiv .yminputfocus
-{
-	margin-left:3px;
-	width:50px;
-	height:20px;
-	line-height:16px;
-	border:solid 1px #F2F0F1;
-	cursor:pointer;
-	background-position:35px -68px;
-}
-
-.WdateDiv .yminputfocus
-{
-	background-color:#fff;
-	border:solid 1px #D8D8D8;
-}
-
-.WdateDiv .menuSel{
-	z-index:1;
-	position:absolute;
-	background-color:#FFFFFF;
-	border:#A3C6C8 1px solid;
-	display:none;
-}
-
-.WdateDiv .menu
-{
-	background:#fff;
-}
-.WdateDiv .menuOn
-{
-	color:#fff;
-	background:#64A3F3;
-}
-
-.WdateDiv .invalidMenu{
-	color:#aaa;
-}
-
-.WdateDiv .MMenu,.WdateDiv .YMenu
-{
-	padding:2px;
-	margin-top:20px;
-	margin-left:-1px;
-	width:68px;
-	border:solid 1px #D9D9D9;
-}
-.WdateDiv .MMenu table,.WdateDiv .YMenu table
-{
-	width:100%;
-}
-.WdateDiv .MMenu table td,.WdateDiv .YMenu table td
-{
-	padding:0px;
-	line-height:20px;
-	text-align:center;
-	font-size:12px;
-	cursor: pointer;
-}
-
-.WdateDiv .Wweek {
- 	text-align:center;
-	background:#DAF3F5;
-	border-right:#BDEBEE 1px solid;
- }
-
-.WdateDiv td
-{
-	padding:1px;
-	line-height:20px;
-	font-size:12px;
-	color:#999999;
-	background:#fff;
-	cursor:pointer;
-}
-.WdateDiv .MTitle td
-{
-	line-height:24px;
-	color:#7D7D7D;
-	background:#F2F0F1;
-	cursor: default;
-}
-
-.WdateDiv .WdayTable2
-{
-	border-collapse:collapse;
-	border:#808080 1px solid;
-}
-.WdateDiv .WdayTable2 table
-{
-	border:0;
-}
-
-.WdateDiv .WdayTable{
-	line-height:20px;	
-	color:#13777e;
-	background-color:#edfbfb;
-}
-.WdateDiv .WdayTable td{
-	text-align:center;
-}
-
-.WdateDiv .Wday
-{
-	color:#323232;
-}
-
-.WdateDiv .WdayOn
-{
-	color:#fff;
-	background-color:#65A2F3;	
-}
-
-.WdateDiv .Wwday
-{
-	color:#65A4F3;
-}
-
-.WdateDiv .WwdayOn
-{
-	color:#fff;
-	background-color:#65A2F3;	
-}
-.WdateDiv .Wtoday
-{
-	color:#FF6D10;
-	background:#E0EDFE;
-}
-.WdateDiv .Wselday
-{
-	color:#fff;
-	background-color:#65A2F3;	
-}
-.WdateDiv .WspecialDay{
-	background-color:#66F4DF;
-}
-
-.WdateDiv .WotherDay
-{ 
-	color:#D4D4D4;	
-}
-.WdateDiv .WotherDayOn
-{
-	color:#fff;
-	background-color:#65A2F3;	
-}
-
-.WdateDiv .WinvalidDay{
-	color:#aaa;
-}
-
-.WdateDiv #dpTime
-{
-	position:relative;
-	margin-top:5px;
-}
-
-.WdateDiv #dpTime #dpTimeStr
-{
-	display:inline-block;
-	width:28px;
-	*width:30px;
-	color:#7d7d7d;
-}
-
-.WdateDiv #dpTime input
-{
-	padding:0px;
-	margin:0px;
-	width:25px;
-	height:20px;
-	line-height:20px;
-	text-align:center;
-	color:#333;
-	border:#D9D9D9 1px solid;	
-}
-
-.WdateDiv #dpTime .tm
-{
-	width:7px;
-	border:none;
-	background:#F2F0F1;
-}
-
-.WdateDiv #dpTime #dpTimeUp
-{
-	display:none;
-}
-
-.WdateDiv #dpTime #dpTimeDown
-{
-	display:none;
-}
-
-.WdateDiv #dpQS 
- {
- 	float:left;
-	margin-right:3px;
-	margin-top:9px;
-	*margin-top:6px;
-	width:16px;
-	height:16px;
-	cursor:pointer;
-	background-position:0px -90px;
- }
-.WdateDiv #dpControl 
-{
-	text-align:right;
-	margin-top:3px;
-}
-.WdateDiv .dpButton
-{ 
-	margin-left:2px;
-	line-height:18px;
-	*line-height:16px;
-	width:45px;
-	background-color:#C3C3C3;
-	*background-color:#64A3F3;
-	color:#fff;
-	border:none;
-	cursor: pointer;
-}
-.WdateDiv .dpButton:hover
-{ 
-	background-color:#64A3F3;
-}
-
-.WdateDiv .hhMenu,
-.WdateDiv .mmMenu,
-.WdateDiv .ssMenu
-{
-	position:absolute;
-	padding:3px;
-	font-size:12px;
-	color:#333;
-	border:solid 1px #DEDEDE;
-	background-color:#F2F0F1;
-}
-
-.WdateDiv #dpTime .menu,.WdateDiv #dpTime .menuOn
-{
-	width:18px;
-	height:18px;
-	line-height:18px;
-	text-align:center;
-	background:#fff;
-}
-.WdateDiv #dpTime .menuOn
-{
-	background:#65A2F3;
-}
-
-.WdateDiv #dpTime td
-{
-	background:#F2F0F1;
-}
-
-.WdateDiv .hhMenu
-{
-	top:-87px;
-	left:35px;
-	left:32px\9;
-}
-
-.WdateDiv .mmMenu
-{
-	top:-47px;
-	left:35px;
-	left:32px\9;
-}
-
-.WdateDiv .ssMenu
-{
-	top:-27px;
-	left:35px;
-	left:32px\9;
-}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 1
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/twoer/datepicker.css


BIN
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/twoer/img.gif


BIN
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/twoer/img.png


BIN
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/whyGreen/bg.jpg


+ 0 - 256
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/whyGreen/datepicker.css

@@ -1,256 +0,0 @@
-/* 
- * My97 DatePicker 4.8 Skin:whyGreen
- */ 
-.WdateDiv{
-	width:180px;
-	background-color:#fff;
-	border:#C5E1E4 1px solid;
-	padding:2px;
-}
-
-.WdateDiv2{
-	width:360px;
-}
-.WdateDiv *{font-size:9pt;}
-
-.WdateDiv .NavImg a{
-	cursor:pointer;
-	display:block;
-	width:16px;
-	height:16px;
-	margin-top:1px;
-}
-
-.WdateDiv .NavImgll a{
-	float:left;
-	background:url(img.gif) no-repeat;
-}
-.WdateDiv .NavImgl a{
-	float:left;
-	background:url(img.gif) no-repeat -16px 0px;
-}
-.WdateDiv .NavImgr a{
-	float:right;
-	background:url(img.gif) no-repeat -32px 0px;
-}
-.WdateDiv .NavImgrr a{
-	float:right;
-	background:url(img.gif) no-repeat -48px 0px;
-}
-
-.WdateDiv #dpTitle{
-	height:24px;
-	padding:1px;
-	border:#c5d9e8 1px solid;
-	background:url(bg.jpg);
-	margin-bottom:2px;
-}
-
-.WdateDiv .yminput{
-	margin-top:2px;
-	text-align:center;
-	border:0px;
-	height:20px;
-	width:50px;
-	color:#034c50;
-	background-color:transparent;
-	cursor:pointer;
-}
-
-.WdateDiv .yminputfocus{
-	margin-top:2px;
-	text-align:center;
-	border:#939393 1px solid;
-	font-weight:bold;
-	color:#034c50;	
-	height:20px;
-	width:50px;
-}
-
-.WdateDiv .menuSel{
-	z-index:1;
-	position:absolute;
-	background-color:#FFFFFF;
-	border:#A3C6C8 1px solid;
-	display:none;
-}
-
-.WdateDiv .menu{
-	cursor:pointer;
-	background-color:#fff;
-	color:#11777C;
-}
-
-.WdateDiv .menuOn{
-	cursor:pointer;
-	background-color:#BEEBEE;
-}
-
-.WdateDiv .invalidMenu{
-	color:#aaa;
-}
-
-.WdateDiv .YMenu{
-	margin-top:20px;
-}
-
-.WdateDiv .MMenu{
-	margin-top:20px;
-	*width:62px;
-}
-
-.WdateDiv .hhMenu{
-	margin-top:-90px; 
-	margin-left:26px;
-}
-
-.WdateDiv .mmMenu{
-	margin-top:-46px; 
-	margin-left:26px;
-}
-
-.WdateDiv .ssMenu{
-	margin-top:-24px; 
-	margin-left:26px;
-}
-
- .WdateDiv .Wweek {
- 	text-align:center;
-	background:#DAF3F5;
-	border-right:#BDEBEE 1px solid;
- }
-
-.WdateDiv .MTitle{
-	color:#13777e;
-	background-color:#bdebee;
-}
-.WdateDiv .WdayTable2{
-	border-collapse:collapse;
-	border:#BEE9F0 1px solid;
-}
-.WdateDiv .WdayTable2 table{
-	border:0;
-}
-
-.WdateDiv .WdayTable{
-	line-height:20px;	
-	color:#13777e;
-	background-color:#edfbfb;
-	border:#BEE9F0 1px solid;
-}
-.WdateDiv .WdayTable td{
-	text-align:center;
-}
-
-.WdateDiv .Wday{
-	cursor:pointer;
-}
-
-.WdateDiv .WdayOn{
-	cursor:pointer;
-	background-color:#74d2d9 ;
-}
-
-.WdateDiv .Wwday{
-	cursor:pointer;
-	color:#ab1e1e;
-}
-
-.WdateDiv .WwdayOn{
-	cursor:pointer;
-	background-color:#74d2d9;
-}
-.WdateDiv .Wtoday{
-	cursor:pointer;
-	color:blue;
-}
-.WdateDiv .Wselday{
-	background-color:#A7E2E7;
-}
-.WdateDiv .WspecialDay{
-	background-color:#66F4DF;
-}
-
-.WdateDiv .WotherDay{ 
-	cursor:pointer;
-	color:#0099CC;	
-}
-
-.WdateDiv .WotherDayOn{ 
-	cursor:pointer;
-	background-color:#C0EBEF;	
-}
-
-.WdateDiv .WinvalidDay{
-	color:#aaa;
-}
-
-.WdateDiv #dpTime{
-	float:left;
-	margin-top:3px;
-	margin-right:30px;
-}
-
-.WdateDiv #dpTime #dpTimeStr{
-	margin-left:1px;
-	color:#497F7F;
-}
-
-.WdateDiv #dpTime input{
-	height:20px;
-	width:18px;
-	text-align:center;
-	color:#333;
-	border:#61CAD0 1px solid;	
-}
-
-.WdateDiv #dpTime .tB{
-	border-right:0px;
-}
-
-.WdateDiv #dpTime .tE{
-	border-left:0;
-	border-right:0;
-}
-
-.WdateDiv #dpTime .tm{
-	width:7px;
-	border-left:0;
-	border-right:0;
-}
-
-.WdateDiv #dpTime #dpTimeUp{
-	height:10px;
-	width:13px;
-	border:0px;
-	background:url(img.gif) no-repeat -32px -16px;
-}
-
-.WdateDiv #dpTime #dpTimeDown{
-	height:10px;
-	width:13px;
-	border:0px;
-	background:url(img.gif) no-repeat -48px -16px;
-}
-
- .WdateDiv #dpQS {
- 	float:left;
-	margin-right:3px;
-	margin-top:3px;
-	background:url(img.gif) no-repeat 0px -16px;
-	width:20px;
-	height:20px;
-	cursor:pointer;
- }
-.WdateDiv #dpControl {
-	text-align:right;
-	margin-top:3px;
-}
-.WdateDiv .dpButton{ 
-	height:20px;
-	width:45px;
-	margin-top:2px;
-	border:#38B1B9 1px solid;
-	background-color:#CFEBEE;
-	color:#08575B;
-}

BIN
watero-wechat-web/src/main/webapp/common/admin/My97DatePicker/skin/whyGreen/img.gif


+ 0 - 141
watero-wechat-web/src/main/webapp/common/admin/css/H-ui.admin.css

@@ -1,141 +0,0 @@
-@charset "utf-8";
-/* -----------H-ui前端框架-----------------------
-H-ui.admin.css v2.3
-Copyright H-ui Inc.
-http://www.H-ui.net
-date:2015.7.18
-Created & Modified by guojunhui.
-----------------------------------------------*/
-html{height:100%}
-body{min-height: 100%;position: relative;font-size:14px;color:#333; background-color:#fff}
-a{color:#333}a:hover,a:focus,.maincolor,.maincolor a{color:#06c}
-.bg-1{ background-color:#f5fafe}
-h4{line-height:30px}
-/*页面框架*/
-.Hui-header{position:absolute;top:0; right:0; left:0;height:44px;z-index:999;}
-.Hui-aside{position: absolute;top:44px;bottom:0;left:0;padding-top:10px;width:199px;z-index:99;overflow:auto; background-color:rgba(238,238,238,0.98);border-right: 1px solid #e5e5e5}
-.Hui-article-box{position: absolute;top:44px;right:0;bottom: 0;left:199px; overflow:hidden; z-index:1; background-color:#fff}
-	.Hui-article{position: absolute;top:35px;bottom:0;left:0; right:0;overflow:auto;z-index:1}
-.Hui-container{ padding:45px 0 0}
-.Hui-aside,.Hui-article-box,.dislpayArrow{-moz-transition: all 0.2s ease 0s;-webkit-transition: all 0.2s ease 0s;-ms-transition: all 0.2s ease 0s;-o-transition: all 0.2s ease 0s;transition: all 0.2s ease 0s}
-.big-page .Hui-article-box,.big-page .dislpayArrow,.big-page .breadcrumb{left:0px}
-.big-page .Hui-aside{ left:-200px}
-
-/*组件*/
-	/*logo*/
-	.Hui-logo,.Hui-logo-m{height:44px; margin-left:20px;cursor:pointer;font-size:16px; font-weight:bold; line-height:44px}
-	.Hui-logo{display:inline-block;padding-right:5px}
-	.Hui-logo:hover,.Hui-logo-m:hover{text-decoration:none; color:#0C0}
-	.Hui-logo-m{display:none;width:45px;margin-left:10px}
-	.Hui-subtitle{ font-size:12px; color:#eee; padding-top:15px}
-	.viewhome{ line-height:44px; padding-right:15px}
-	.viewhome a{ color:#FFF; padding-left:20px; background:url(../images/icon_link.png) no-repeat 0 center}
-	
-	/*导航*/
-	#Hui-nav{ margin-left:200px; margin-right:260px; background-color:transparent}
-	#Hui-nav > ul > li{ font-weight:normal}
-	#Hui-nav > ul > li > a{padding:0 20px}
-	#Hui-nav > ul > li,#Hui-nav > ul > li > a{height:44px; line-height:44px}
-	#Hui-nav > ul > li > a:hover,#Hui-nav > ul > li.current > a{ background-color:rgba(255,255,255,0.2)}
-	.Hui-userbar{ position:absolute; top:0px; right:20px}
-	.Hui-userbar > li{ float:left; display:inline-block; position:relative;line-height:44px}
-	.Hui-userbar > li > a{ display:inline-block; padding:0 10px;height:44px; line-height:44px}
-	.Hui-userbar > li > a:hover,Hui-userbar > li.current > a{ text-decoration:none;background-color:rgba(255,255,255,0.2)}
-	#Hui-msg .badge{ position:absolute; left:19px; top:4px; font-size:12px; font-weight:normal; padding:1px 5px}
-	#Hui-skin{}
-	/*左侧菜单*/
-	.Hui-aside .menu_dropdown dl{ margin-bottom:0}
-	.Hui-aside .menu_dropdown dt{display:block;line-height:35px;padding-left:15px;cursor:pointer;position:relative;border-bottom: 1px solid #e5e5e5;font-weight:normal}
-	.Hui-aside .menu_dropdown dt .menu_dropdown-arrow{ position:absolute;overflow: hidden; top:0; right:15px;transition-duration:0.3s ;transition-property:all}
-	.Hui-aside .menu_dropdown dd{ display:none}
-	.Hui-aside .menu_dropdown dt.selected .menu_dropdown-arrow{transform: rotate(180deg)}
-	.Hui-aside .menu_dropdown dd.selected{display:block; margin-left:0px}
-	.Hui-aside .menu_dropdown ul{padding:0px}
-	.Hui-aside .menu_dropdown li{line-height:35px;overflow:hidden;zoom:1}
-	.Hui-aside .menu_dropdown li a{padding-left:15px; display:block;font-weight: bold; margin:0}
-	.Hui-aside .menu_dropdown li a i{ font-weight: normal}
-	.Hui-aside .menu_dropdown dd ul{padding:3px 8px}
-	.Hui-aside .menu_dropdown dd li{line-height:32px}
-	.Hui-aside .menu_dropdown dd li a{line-height:32px;padding-left:26px; border-bottom:none; font-weight:normal}
-	.Hui-aside .menu_dropdown li a:hover{text-decoration:none}
-	.Hui-aside .menu_dropdown li.current a,.menu_dropdown li.current a:hover{background-color:rgba(255,255,255,0.2)}
-	/*菜单收缩切换*/
-	.dislpayArrow{position: absolute;top: 0;bottom: 0;left:200px;width:0px; height:100%;z-index:10}
-	.dislpayArrow a{ position:absolute; display:block; width:17px; height:61px;top:50%; margin-top:-30px;outline:none}
-	.dislpayArrow a.open{ background-position:0 -61px}
-	.dislpayArrow a:hover{ text-decoration:none; background-position:right 0}
-	.dislpayArrow a.open:hover{background-position:right -61px}
-
-	/*选项卡导航*/
-	.Hui-tabNav{height:35px; padding-right:75px;overflow:hidden; position:relative;background:#efeef0 url(../images/acrossTab-2.png) repeat-x 0 -175px;}
-	.Hui-tabNav-wp{position:relative; height:35px;overflow:hidden}
-	.Hui-tabNav .acrossTab{ position:absolute; height:26px; line-height:26px; background:none; top:8px; left:0;padding-top:0}
-	.Hui-tabNav .acrossTab li,.Hui-tabNav .acrossTab li em{background-image:url(../images/acrossTab-2.png)}
-	.Hui-tabNav .acrossTab li{height:26px;line-height:26px;}
-	.Hui-tabNav .acrossTab li em{ right:-16px; height: 26px; width: 16px}
-	.loading {background:url(../images/loading.gif) no-repeat center; height:100px}
-	.show_iframe iframe {position: absolute;bottom: 0;height: 100%;width: 100%}
-	.Hui-tabNav-more {position: absolute;right:0px;width:70px;top:4px;display: none}
-
-	/*面包屑导航*/
-	.breadcrumb{background-color:#F5F5F5}
-
-	/*页脚
-		Name:			mod_footer
-		Level:			Global
-		Sample:			<footer class="footer"><p><a target="_blank" href="/feedback.html">意见反馈</a><cite>|</cite><a target="_blank" href="/about">关于XX</a><cite>|</cite><a target="_blank" href="/jobs.html">诚聘英才</a><br/>Copyright &copy;2012 guojunhui.com 郭俊辉版权所有 京ICP备10046298-4号</p></footer>
-		Explain:页脚
-		Last Modify:	jackying
-	*/
-	.footer{border-top:1px solid #E8E8E8;margin-top:20px;font-family:tahoma,Arial;font-size:12px;color:#999;line-height:22px;text-align:center}
-	.footer p{padding-top:15px}
-	.footer a,.footer a:hover{color:#999}
-/*横向手机 竖向平板*/
-@media (max-width: 767px) {
-	html{ overflow-y:auto}	
-	#Hui-nav{margin-left:130px!important; margin-right:60px}
-	#Hui-nav > ul > li{width:24%;font-weight:bold;font-size:16px}
-	#Hui-nav > ul > li a{ display:block}
-	.Hui-aside{ display:none;float:none; width:100%; height:auto; margin-top:0;padding-top:0;bottom:auto}
-	.big-page .Hui-aside{ left:0!important}
-	.Hui-subtitle,.dislpayArrow,.Hui-userbar,.Hui-tabNav{ display:none}
-		.menu_dropdown dt{line-height:44px}
-		.menu_dropdown li,.menu_dropdown dd li,.menu_dropdown dd li a{ line-height:44px}
-  .Hui-tabNav{ position:fixed; z-index:998}
-  .Hui-article{ top:44px}
-  .Hui-article-box{ position:static; left:0}
-  .Hui-article-box .pd-20{padding:20px 10px}
-		.Hui-article{left:0}
-		.Hui-container .bk-gray{ border:none}
-		.Hui-container .pd-10{ padding:0}
-}
-/*竖向手机*/
-@media (max-width: 480px) {
-	#Hui-nav{margin-left:50px!important;margin-right:60px}
-		.Hui-logo{ display:none}
-		.Hui-logo-m{ display:inline-block; padding-right:5px}
-		.Hui-subtitle,.dislpayArrow,.Hui-userbar{ display:none} 
-}
-
-/*==============以下是业务相关的样式====================*/
-/*权限*/
-.permission-list{ border:solid 1px #eee;}
-.permission-list > dt{ background-color:#efefef;padding:5px 10px}
-.permission-list > dd{ padding:10px; padding-left:30px}
-.permission-list > dd > dl{ border-bottom:solid 1px #eee; padding:5px 0}
-.permission-list > dd > dl > dt{ display:inline-block;float:left;white-space:nowrap;width:100px}
-.permission-list > dd > dl > dd{ margin-left:100px;}
-.permission-list > dd > dl > dd > label{ padding-right:10px}
-
-/*图片预览*/
-.portfolio-area{ margin-right: -20px;}
-.portfolio-area li{position: relative; float: left; margin-right: 20px; width:162px; height:162px;margin-top: 20px;}
-.portfolio-area li.hover{ z-index:9}
-.portfolio-area li .portfoliobox{ position: absolute; top: 0; left: 0; width: 152px; height: 152px;padding:5px;border: solid 1px #eee; background-color: #fff;}
-.portfolio-area li .checkbox{position: absolute; top: 10px; right: 5px; cursor:pointer}
-.portfolio-area li.hover .portfoliobox{ height:auto;padding-bottom:10px;box-shadow:0 1px 3px rgba(68, 68, 68,0.3);-moz-box-shadow:0 1px 3px rgba(68, 68, 68,0.3);-webkit-box-shadow:0 1px 3px rgba(68, 68, 68,0.3)}
-.portfolio-area li .picbox{width: 150px; height: 150px;overflow: hidden;text-align: center;vertical-align:middle;display:table-cell; line-height:150px;}
-.portfolio-area li .picbox img{max-width:150px; max-height:150px;vertical-align:middle;_margin-top: expression_r(( 150 - this.height ) / 2);}
-.portfolio-area li .textbox{ display: none; margin-top: 5px;}
-.portfolio-area li.hover .textbox{ display: block;}
-.portfolio-area li label{ display:block; cursor:pointer}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 3075
watero-wechat-web/src/main/webapp/common/admin/css/H-ui.css


+ 0 - 47
watero-wechat-web/src/main/webapp/common/admin/css/H-ui.login.css

@@ -1,47 +0,0 @@
-@charset "utf-8";
-/* -----------H-ui前端框架-----------------------
-H-ui.login.css v2.2.1
-Copyright H-ui Inc.
-http://www.H-ui.net
-date:2015.6.5
-Created & Modified by guojunhui.
-----------------------------------------------*/
-body{font-size:14px}
-
-.header,.footer{ position:absolute; left:0; right:0; width:100%; z-index:99}
-.header{top:0; height:60px; background:#e9004c url(../images/logo.png) no-repeat 0 center}
-.btn-iamberry{background:#e9004c;color:#fff;border:0;border-radius: 25px;padding: 6px 12px;width: 150px;height:35px;}
-.btn-iamberry:hover{background:#cf0044;}
-.loginWraper{ position:absolute;width:100%; left:0; top:0; bottom:0; right:0; z-index:1; background:#3283AC url(../images/admin-login-bg.jpg) no-repeat center;}
-.loginBox{ position:absolute; width:617px; height:374px; background-color: rgba(255,255,255,0.8);border:1px solid #e9004c\9;border:1px solid rgba(230,0,76,.3); left:50%; top:50%; margin-left:-309px; margin-top:-184px; padding-top:38px;border-radius:10px;-webkit-box-shadow: 0 0 4px rgba(230,0,76,0.3);
-    box-shadow: 0 0 4px rgba(230,0,76,0.3);}
-@media (max-width:617px) {
-	.loginbox{ width:100%; position:static; margin-top:0; margin-left:0;}
-}
-.loginBox .row{margin-top:20px;}
-.loginBox .row .form-label .Hui-iconfont{ font-size:24px}
-.loginBox .input-text{ width:360px;border-radius: 25px;border:1px solid rgba(230,0,76,.3);}
-@media (max-width:617px) {
-	.loginBox .input-text{ width:80%}
-}
-	.yzm a{ color:#426374; font-size:12px}
-
-#span_msg{ font-size:14px; color:Red; line-height:40px; height:40px; margin-left:10px; width:160px;; float:left}
-
-.hd_msg{font-size:12px; color:#fff; height:30px; z-index:100;position: absolute; padding-left:50px; padding-top:5px}
-.hd_msg a{ color:#fff}
-.hd_msg a:hover{ color:#fff; text-decoration:underline}
-
-.footer{ height:46px; line-height:46px; bottom:0; text-align:center; color:#666; font-size:12px; background-color:#fff}
-
-#ie6-warning{background:#fff url(/jscss/demoimg/201006/warning.gif) no-repeat 3px center;position:absolute;top:0;left:0;font-size:12px;color:#333;width:97%;padding: 2px 15px 2px 23px;text-align:left}
-#ie6-warning a {text-decoration:none}
-@media screen and (orientation:portrait) {
-	.loginBox {width: 280px; margin-left: -140px;padding-top: 10px;}
-	.header {background-size:320px auto;}
-	#kanbuq{display:block;}
-	.form-horizontal .formControls{padding-right:0;}
-	.col-3 {width: 20%;}
-	.loginBox .input-text {width: 100%;}
-	.col-offset-3 {margin-left: 20%;}
-}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 12
watero-wechat-web/src/main/webapp/common/admin/css/H-ui.min.css


+ 0 - 60
watero-wechat-web/src/main/webapp/common/admin/css/H-ui.reset.css

@@ -1,60 +0,0 @@
-@charset "utf-8";
-/* -----------H-ui前端框架-----------------------
-H-ui.reset.css v1.2
-重定义浏览器默认样式
-H-ui.reser CSS file for H-ui
-Copyright H-ui Inc.
-http://www.H-ui.net
-date:2014.10.09
-Created & Modified by guojunhui.
-----------------------------------------------*/
-/*1 重定义浏览器默认样式
-	Name:			style_reset
-	Level:			Global
-	Explain:		重定义浏览器默认样式
-	Last Modify:	jackying
-*/
-*{word-wrap:break-word}
-html,body,h1,h2,h3,h4,h5,h6,hr,p,iframe,dl,dt,dd,ul,ol,li,pre,form,button,input,textarea,th,td,fieldset{margin:0;padding:0}
-ul,ol,dl{list-style-type:none}
-html,body{*position:static}
-html{font-family: sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}
-address,caption,cite,code,dfn,em,th,var{font-style:normal;font-weight:400}
-input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit}
-input,button{overflow: visible;vertical-align:middle;outline:none}
-body,th,td,button,input,select,textarea{font-family:"Microsoft Yahei","Hiragino Sans GB","Helvetica Neue",Helvetica,tahoma,arial,Verdana,sans-serif,"WenQuanYi Micro Hei","\5B8B\4F53";font-size:12px;color: #333;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing:grayscale}
-body{line-height:1.6}
-h1,h2,h3,h4,h5,h6{font-size:100%}
-a,area{outline:none;blr:expression(this.onFocus=this.blur())}
-a{text-decoration:none;cursor: pointer}
-a:hover{text-decoration:underline;outline:none}
-a.ie6:hover{zoom:1}
-a:focus{outline:none}
-a:hover,a:active{outline:none}:focus{outline:none}
-sub,sup{vertical-align:baseline}
-button,input[type="button"], input[type="submit"] {line-height:normal !important;}
-/*img*/
-img{border:0;vertical-align:middle}
-a img,img{-ms-interpolation-mode:bicubic}
-.img-responsive{max-width: 100%;height: auto}
-
-/*IE下a:hover 背景闪烁*/
-*html{overflow:-moz-scrollbars-vertical;zoom:expression(function(ele){ele.style.zoom = "1";document.execCommand("BackgroundImageCache",false,true)}(this))}
-
-/*HTML5 reset*/
-header,footer,section,aside,details,menu,article,section,nav,address,hgroup,figure,figcaption,legend{display:block;margin:0;padding:0}time{display:inline}
-audio,canvas,video{display:inline-block;*display:inline;*zoom:1}
-audio:not([controls]){display:none}
-legend{width:100%;margin-bottom:20px;font-size:21px;line-height:40px;border:0;border-bottom:1px solid #e5e5e5}
-legend small{font-size:15px;color:#999}
-svg:not(:root) {overflow: hidden}
-fieldset {border-width:0;padding: 0.35em 0.625em 0.75em;margin: 0 2px;border: 1px solid #c0c0c0}
-input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button {height: auto}
-input[type="search"] {-webkit-appearance: textfield; /* 1 */-moz-box-sizing: content-box;-webkit-box-sizing: content-box; /* 2 */box-sizing: content-box}
-input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration {-webkit-appearance: none}
-/*
-	Name:			style_clearfix
-	Example:		class="clearfix|cl"
-	Explain:		Clearfix(简写cl)避免因子元素浮动而导致的父元素高度缺失能问题
-*/
-.cl:after,.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.cl,.clearfix{zoom:1}

+ 0 - 182
watero-wechat-web/src/main/webapp/common/admin/css/icheck.css

@@ -1,182 +0,0 @@
-/* iCheck.js Minimal skin
------------------------------------ */
-.icheckbox,.iradio{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(minimal.png) no-repeat;border: none;cursor: pointer}
-.icheckbox,.icheckbox.static:hover{background-position: 0 0}
-.icheckbox.hover,.icheckbox:hover{background-position: -20px 0}
-.icheckbox.checked{background-position: -40px 0}
-.icheckbox.disabled{background-position: -60px 0;cursor: default}
-.icheckbox.checked.disabled{background-position: -80px 0}
-.iradio,.iradio.static:hover{background-position: -100px 0}
-.iradio.hover,.iradio:hover{background-position: -120px 0}
-.iradio.checked{background-position: -140px 0}
-.iradio.disabled{background-position: -160px 0;cursor: default}
-.iradio.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox,.iradio{background-image: url(minimal@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* red */
-.icheckbox-red,.iradio-red{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(red.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-red,.icheckbox-red.static:hover{background-position: 0 0}
-.icheckbox-red.hover,.icheckbox-red:hover{background-position: -20px 0}
-.icheckbox-red.checked{background-position: -40px 0}
-.icheckbox-red.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-red.checked.disabled{background-position: -80px 0}
-.iradio-red,.iradio-red.static:hover{background-position: -100px 0}
-.iradio-red.hover,.iradio-red:hover{background-position: -120px 0}
-.iradio-red.checked{background-position: -140px 0}
-.iradio-red.disabled{background-position: -160px 0;cursor: default}
-.iradio-red.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-red,.iradio-red{background-image: url(red@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* green */
-.icheckbox-green,.iradio-green{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(green.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-green,.icheckbox-green.static:hover{background-position: 0 0}
-.icheckbox-green.hover,.icheckbox-green:hover{background-position: -20px 0}
-.icheckbox-green.checked{background-position: -40px 0}
-.icheckbox-green.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-green.checked.disabled{background-position: -80px 0}
-.iradio-green,.iradio-green.static:hover{background-position: -100px 0}
-.iradio-green.hover,.iradio-green:hover{background-position: -120px 0}
-.iradio-green.checked{background-position: -140px 0}
-.iradio-green.disabled{background-position: -160px 0;cursor: default}
-.iradio-green.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-green,.iradio-green{background-image: url(green@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* blue */
-.icheckbox-blue,.iradio-blue{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(blue.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-blue,.icheckbox-blue.static:hover{background-position: 0 0}
-.icheckbox-blue.hover,.icheckbox-blue:hover{background-position: -20px 0}
-.icheckbox-blue.checked{background-position: -40px 0}
-.icheckbox-blue.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-blue.checked.disabled{background-position: -80px 0}
-.iradio-blue,.iradio-blue.static:hover{background-position: -100px 0}
-.iradio-blue.hover,.iradio-blue:hover{background-position: -120px 0}
-.iradio-blue.checked{background-position: -140px 0}
-.iradio-blue.disabled{background-position: -160px 0;cursor: default}
-.iradio-blue.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-blue,.iradio-blue{background-image: url(blue@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* aero */
-.icheckbox-aero,.iradio-aero{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(aero.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-aero,.icheckbox-aero.static:hover{background-position: 0 0}
-.icheckbox-aero.hover,.icheckbox-aero:hover{background-position: -20px 0}
-.icheckbox-aero.checked{background-position: -40px 0}
-.icheckbox-aero.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-aero.checked.disabled{background-position: -80px 0}
-.iradio-aero,.iradio-aero.static:hover{background-position: -100px 0}
-.iradio-aero.hover,.iradio-aero:hover{background-position: -120px 0}
-.iradio-aero.checked{background-position: -140px 0}
-.iradio-aero.disabled{background-position: -160px 0;cursor: default}
-.iradio-aero.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-aero,.iradio-aero{background-image: url(aero@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* grey */
-.icheckbox-grey,.iradio-grey{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(grey.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-grey,.icheckbox-grey.static:hover{background-position: 0 0}
-.icheckbox-grey.hover,.icheckbox-grey:hover{background-position: -20px 0}
-.icheckbox-grey.checked{background-position: -40px 0}
-.icheckbox-grey.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-grey.checked.disabled{background-position: -80px 0}
-.iradio-grey,.iradio-grey.static:hover{background-position: -100px 0}
-.iradio-grey.hover,.iradio-grey:hover{background-position: -120px 0}
-.iradio-grey.checked{background-position: -140px 0}
-.iradio-grey.disabled{background-position: -160px 0;cursor: default}
-.iradio-grey.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-grey,.iradio-grey{background-image: url(grey@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* orange */
-.icheckbox-orange,.iradio-orange{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(orange.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-orange,.icheckbox-orange.static:hover{background-position: 0 0}
-.icheckbox-orange.hover,.icheckbox-orange:hover{background-position: -20px 0}
-.icheckbox-orange.checked{background-position: -40px 0}
-.icheckbox-orange.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-orange.checked.disabled{background-position: -80px 0}
-.iradio-orange,.iradio-orange.static:hover{background-position: -100px 0}
-.iradio-orange.hover,.iradio-orange:hover{background-position: -120px 0}
-.iradio-orange.checked{background-position: -140px 0}
-.iradio-orange.disabled{background-position: -160px 0;cursor: default}
-.iradio-orange.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-orange,.iradio-orange{background-image: url(orange@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* yellow */
-.icheckbox-yellow,.iradio-yellow{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(yellow.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-yellow,.icheckbox-yellow.static:hover{background-position: 0 0}
-.icheckbox-yellow.hover,.icheckbox-yellow:hover{background-position: -20px 0}
-.icheckbox-yellow.checked{background-position: -40px 0}
-.icheckbox-yellow.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-yellow.checked.disabled{background-position: -80px 0}
-.iradio-yellow,.iradio-yellow.static:hover{background-position: -100px 0}
-.iradio-yellow.hover,.iradio-yellow:hover{background-position: -120px 0}
-.iradio-yellow.checked{background-position: -140px 0}
-.iradio-yellow.disabled{background-position: -160px 0;cursor: default}
-.iradio-yellow.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-yellow,.iradio-yellow{background-image: url(yellow@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* pink */
-.icheckbox-pink,.iradio-pink{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(pink.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-pink,.icheckbox-pink.static:hover{background-position: 0 0}
-.icheckbox-pink.hover,.icheckbox-pink:hover{background-position: -20px 0}
-.icheckbox-pink.checked{background-position: -40px 0}
-.icheckbox-pink.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-pink.checked.disabled{background-position: -80px 0}
-.iradio-pink,.iradio-pink.static:hover{background-position: -100px 0}
-.iradio-pink.hover,.iradio-pink:hover{background-position: -120px 0}
-.iradio-pink.checked{background-position: -140px 0}
-.iradio-pink.disabled{background-position: -160px 0;cursor: default}
-.iradio-pink.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-pink,.iradio-pink{background-image: url(pink@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-/* purple */
-.icheckbox-purple,.iradio-purple{display: block;margin: 0;padding: 0;width: 18px;height: 18px;background: url(purple.png) no-repeat;border: none;cursor: pointer}
-.icheckbox-purple,.icheckbox-purple.static:hover{background-position: 0 0}
-.icheckbox-purple.hover,.icheckbox-purple:hover{background-position: -20px 0}
-.icheckbox-purple.checked{background-position: -40px 0}
-.icheckbox-purple.disabled{background-position: -60px 0;cursor: default}
-.icheckbox-purple.checked.disabled{background-position: -80px 0}
-.iradio-purple,.iradio-purple.static:hover{background-position: -100px 0}
-.iradio-purple.hover,.iradio-purple:hover{background-position: -120px 0}
-.iradio-purple.checked{background-position: -140px 0}
-.iradio-purple.disabled{background-position: -160px 0;cursor: default}
-.iradio-purple.checked.disabled{background-position: -180px 0}
-
-/* Retina support */
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),  only screen and (-moz-min-device-pixel-ratio: 1.5),  only screen and (-o-min-device-pixel-ratio: 1.5),  only screen and (min-device-pixel-ratio: 1.5){.icheckbox-purple,.iradio-purple{background-image: url(purple@2x.png);
-	-webkit-background-size: 200px 20px;
-	background-size: 200px 20px}
-}
-

+ 0 - 242
watero-wechat-web/src/main/webapp/common/admin/css/iconfont.css

@@ -1,242 +0,0 @@
-
-@font-face {font-family: "Hui-iconfont";
-  src: url('iconfont.eot'); /* IE9*/
-  src: url('iconfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
-  url('iconfont.woff') format('woff'), /* chrome、firefox */
-  url('iconfont.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
-  url('iconfont.svg#Hui-iconfont') format('svg'); /* iOS 4.1- */
-}
-
-.Hui-iconfont {
-  font-family:"Hui-iconfont" !important;
-
-  font-style:normal;
-  -webkit-font-smoothing: antialiased;
-  -webkit-text-stroke-width: 0.2px;
-  -moz-osx-font-smoothing: grayscale;
-}
-.Hui-iconfont-gotop:before { content: "\e684"; }
-.Hui-iconfont-music:before { content: "\e60f"; }
-.Hui-iconfont-tags:before { content: "\e64b"; }
-.Hui-iconfont-pad:before { content: "\e64c"; }
-.Hui-iconfont-lunzi:before { content: "\e64d"; }
-.Hui-iconfont-jiandao:before { content: "\e64e"; }
-.Hui-iconfont-xianshiqi:before { content: "\e64f"; }
-.Hui-iconfont-zhaoxiangji:before { content: "\e650"; }
-.Hui-iconfont-danfanxiangji:before { content: "\e651"; }
-.Hui-iconfont-dayinji:before { content: "\e652"; }
-.Hui-iconfont-user-zhanzhang:before { content: "\e653"; }
-.Hui-iconfont-chajian:before { content: "\e654"; }
-.Hui-iconfont-arrow1-bottom:before { content: "\e674"; }
-.Hui-iconfont-arrow1-left:before { content: "\e678"; }
-.Hui-iconfont-arrow1-top:before { content: "\e679"; }
-.Hui-iconfont-arrow1-right:before { content: "\e67a"; }
-.Hui-iconfont-jieri:before { content: "\e655"; }
-.Hui-iconfont-face-weixiao:before { content: "\e656"; }
-.Hui-iconfont-face-chijing:before { content: "\e657"; }
-.Hui-iconfont-face-dai:before { content: "\e658"; }
-.Hui-iconfont-face-shuaku:before { content: "\e659"; }
-.Hui-iconfont-face-mogui:before { content: "\e65a"; }
-.Hui-iconfont-face-ganga:before { content: "\e65b"; }
-.Hui-iconfont-face-qin:before { content: "\e65c"; }
-.Hui-iconfont-face-nu:before { content: "\e65d"; }
-.Hui-iconfont-face-zhayan:before { content: "\e65e"; }
-.Hui-iconfont-face-shengqi:before { content: "\e65f"; }
-.Hui-iconfont-face-ma:before { content: "\e660"; }
-.Hui-iconfont-face-bishi:before { content: "\e661"; }
-.Hui-iconfont-face-maimeng:before { content: "\e662"; }
-.Hui-iconfont-face-jingdai:before { content: "\e663"; }
-.Hui-iconfont-face-yun:before { content: "\e664"; }
-.Hui-iconfont-home2:before { content: "\e67f"; }
-.Hui-iconfont-search2:before { content: "\e665"; }
-.Hui-iconfont-share2:before { content: "\e666"; }
-.Hui-iconfont-face:before { content: "\e668"; }
-.Hui-iconfont-wuliu:before { content: "\e669"; }
-.Hui-iconfont-dianpu:before { content: "\e66a"; }
-.Hui-iconfont-chexiao:before { content: "\e66b"; }
-.Hui-iconfont-zhongzuo:before { content: "\e66c"; }
-.Hui-iconfont-zan:before { content: "\e66d"; }
-.Hui-iconfont-cai:before { content: "\e66e"; }
-.Hui-iconfont-yuyin3:before { content: "\e66f"; }
-.Hui-iconfont-cart2-selected:before { content: "\e670"; }
-.Hui-iconfont-weizhi:before { content: "\e671"; }
-.Hui-iconfont-face-ku:before { content: "\e688"; }
-.Hui-iconfont-down:before { content: "\e640"; }
-.Hui-iconfont-cart2-man:before { content: "\e672"; }
-.Hui-iconfont-card2-kong:before { content: "\e673"; }
-.Hui-iconfont-luyin:before { content: "\e619"; }
-.Hui-iconfont-html:before { content: "\e69f"; }
-.Hui-iconfont-css:before { content: "\e6a0"; }
-.Hui-iconfont-android:before { content: "\e6a2"; }
-.Hui-iconfont-github:before { content: "\e6d1"; }
-.Hui-iconfont-html5:before { content: "\e6d2"; }
-.Hui-iconfont-huangguan:before { content: "\e6d3"; }
-.Hui-iconfont-news:before { content: "\e616"; }
-.Hui-iconfont-slider-right:before { content: "\e63d"; }
-.Hui-iconfont-slider-left:before { content: "\e67d"; }
-.Hui-iconfont-tuku:before { content: "\e613"; }
-.Hui-iconfont-shuru:before { content: "\e647"; }
-.Hui-iconfont-sanjiao:before { content: "\e67e"; }
-.Hui-iconfont-share-renren:before { content: "\e6d8"; }
-.Hui-iconfont-share-tweibo:before { content: "\e6d9"; }
-.Hui-iconfont-arrow2-left:before { content: "\e6d4"; }
-.Hui-iconfont-paixu:before { content: "\e675"; }
-.Hui-iconfont-niming:before { content: "\e624"; }
-.Hui-iconfont-add:before { content: "\e600"; }
-.Hui-iconfont-root:before { content: "\e62d"; }
-.Hui-iconfont-xuanzhong:before { content: "\e676"; }
-.Hui-iconfont-weixuanzhong:before { content: "\e677"; }
-.Hui-iconfont-arrow2-bottom:before { content: "\e6d5"; }
-.Hui-iconfont-arrow2-top:before { content: "\e6d6"; }
-.Hui-iconfont-like2:before { content: "\e648"; }
-.Hui-iconfont-arrow2-right:before { content: "\e6d7"; }
-.Hui-iconfont-share-weixin:before { content: "\e694"; }
-.Hui-iconfont-shenhe-tingyong:before { content: "\e631"; }
-.Hui-iconfont-gouxuan2:before { content: "\e601"; }
-.Hui-iconfont-selected:before { content: "\e617"; }
-.Hui-iconfont-jianhao:before { content: "\e6a1"; }
-.Hui-iconfont-user-group:before { content: "\e62b"; }
-.Hui-iconfont-yiguanzhu:before { content: "\e680"; }
-.Hui-iconfont-comment:before { content: "\e622"; }
-.Hui-iconfont-tongji-zhu:before { content: "\e618"; }
-.Hui-iconfont-like:before { content: "\e649"; }
-.Hui-iconfont-shangjia:before { content: "\e6dc"; }
-.Hui-iconfont-save:before { content: "\e632"; }
-.Hui-iconfont-gongsi:before { content: "\e643"; }
-.Hui-iconfont-system:before { content: "\e62e"; }
-.Hui-iconfont-pifu:before { content: "\e62a"; }
-.Hui-iconfont-msg:before { content: "\e62f"; }
-.Hui-iconfont-userid:before { content: "\e602"; }
-.Hui-iconfont-cang-selected:before { content: "\e630"; }
-.Hui-iconfont-yundown:before { content: "\e641"; }
-.Hui-iconfont-help:before { content: "\e633"; }
-.Hui-iconfont-chuku:before { content: "\e634"; }
-.Hui-iconfont-picture:before { content: "\e646"; }
-.Hui-iconfont-ad:before { content: "\e635"; }
-.Hui-iconfont-fenlei:before { content: "\e681"; }
-.Hui-iconfont-saoyisao:before { content: "\e682"; }
-.Hui-iconfont-search:before { content: "\e683"; }
-.Hui-iconfont-tuwenxiangqing:before { content: "\e685"; }
-.Hui-iconfont-leijipingjia:before { content: "\e686"; }
-.Hui-iconfont-hetong:before { content: "\e636"; }
-.Hui-iconfont-tongji:before { content: "\e61a"; }
-.Hui-iconfont-quanbudingdan:before { content: "\e687"; }
-.Hui-iconfont-cang:before { content: "\e61b"; }
-.Hui-iconfont-xiaoxi:before { content: "\e68a"; }
-.Hui-iconfont-renwu:before { content: "\e637"; }
-.Hui-iconfont-more:before { content: "\e68b"; }
-.Hui-iconfont-zhizhao:before { content: "\e638"; }
-.Hui-iconfont-fabu:before { content: "\e603"; }
-.Hui-iconfont-shenhe-butongguo2:before { content: "\e6dd"; }
-.Hui-iconfont-share-qq:before { content: "\e67b"; }
-.Hui-iconfont-upload:before { content: "\e642"; }
-.Hui-iconfont-add2:before { content: "\e604"; }
-.Hui-iconfont-jiesuo:before { content: "\e605"; }
-.Hui-iconfont-zhongtumoshi:before { content: "\e68c"; }
-.Hui-iconfont-datumoshi:before { content: "\e68d"; }
-.Hui-iconfont-face2:before { content: "\e68e"; }
-.Hui-iconfont-huanyipi:before { content: "\e68f"; }
-.Hui-iconfont-shijian:before { content: "\e690"; }
-.Hui-iconfont-feedback:before { content: "\e691"; }
-.Hui-iconfont-feedback2:before { content: "\e692"; }
-.Hui-iconfont-share-pengyouquan:before { content: "\e693"; }
-.Hui-iconfont-zan2:before { content: "\e697"; }
-.Hui-iconfont-arrow3-bottom:before { content: "\e698"; }
-.Hui-iconfont-arrow3-top:before { content: "\e699"; }
-.Hui-iconfont-arrow3-right:before { content: "\e69a"; }
-.Hui-iconfont-arrow3-left:before { content: "\e69b"; }
-.Hui-iconfont-more2:before { content: "\e69c"; }
-.Hui-iconfont-cang2-selected:before { content: "\e69d"; }
-.Hui-iconfont-cang2:before { content: "\e69e"; }
-.Hui-iconfont-dangan:before { content: "\e639"; }
-.Hui-iconfont-money:before { content: "\e63a"; }
-.Hui-iconfont-share-weibo:before { content: "\e6da"; }
-.Hui-iconfont-email:before { content: "\e63b"; }
-.Hui-iconfont-tongji-xian:before { content: "\e61c"; }
-.Hui-iconfont-bank:before { content: "\e628"; }
-.Hui-iconfont-home:before { content: "\e625"; }
-.Hui-iconfont-user:before { content: "\e62c"; }
-.Hui-iconfont-log:before { content: "\e623"; }
-.Hui-iconfont-pages:before { content: "\e626"; }
-.Hui-iconfont-sim:before { content: "\e629"; }
-.Hui-iconfont-dengdai:before { content: "\e606"; }
-.Hui-iconfont-user-add:before { content: "\e607"; }
-.Hui-iconfont-file:before { content: "\e63e"; }
-.Hui-iconfont-share-douban:before { content: "\e67c"; }
-.Hui-iconfont-share-zhihu:before { content: "\e689"; }
-.Hui-iconfont-daochu:before { content: "\e644"; }
-.Hui-iconfont-daoru:before { content: "\e645"; }
-.Hui-iconfont-weigouxuan2:before { content: "\e608"; }
-.Hui-iconfont-phone:before { content: "\e696"; }
-.Hui-iconfont-manage2:before { content: "\e63c"; }
-.Hui-iconfont-edit:before { content: "\e6df"; }
-.Hui-iconfont-del2:before { content: "\e609"; }
-.Hui-iconfont-avatar:before { content: "\e60a"; }
-.Hui-iconfont-del:before { content: "\e60b"; }
-.Hui-iconfont-edit1:before { content: "\e60c"; }
-.Hui-iconfont-apple:before { content: "\e64a"; }
-.Hui-iconfont-xiajia:before { content: "\e6de"; }
-.Hui-iconfont-manage:before { content: "\e61d"; }
-.Hui-iconfont-user2:before { content: "\e60d"; }
-.Hui-iconfont-share-qzone:before { content: "\e6c8"; }
-.Hui-iconfont-suoding:before { content: "\e60e"; }
-.Hui-iconfont-tel2:before { content: "\e6a3"; }
-.Hui-iconfont-order:before { content: "\e627"; }
-.Hui-iconfont-shujutongji:before { content: "\e61e"; }
-.Hui-iconfont-del3:before { content: "\e6e2"; }
-.Hui-iconfont-add3:before { content: "\e610"; }
-.Hui-iconfont-add4:before { content: "\e61f"; }
-.Hui-iconfont-key:before { content: "\e63f"; }
-.Hui-iconfont-yuyin2:before { content: "\e6a4"; }
-.Hui-iconfont-yuyin:before { content: "\e6a5"; }
-.Hui-iconfont-close:before { content: "\e6a6"; }
-.Hui-iconfont-xuanze:before { content: "\e6a7"; }
-.Hui-iconfont-xuanzhong1:before { content: "\e6a8"; }
-.Hui-iconfont-yiguanzhu1:before { content: "\e6a9"; }
-.Hui-iconfont-share:before { content: "\e6aa"; }
-.Hui-iconfont-zhuanfa:before { content: "\e6ab"; }
-.Hui-iconfont-tianqi-duoyun:before { content: "\e6ac"; }
-.Hui-iconfont-tianqi-mai:before { content: "\e6ad"; }
-.Hui-iconfont-tianqi-qing:before { content: "\e6ae"; }
-.Hui-iconfont-tianqi-wu:before { content: "\e6af"; }
-.Hui-iconfont-tianqi-xue:before { content: "\e6b0"; }
-.Hui-iconfont-tianqi-yin:before { content: "\e6b1"; }
-.Hui-iconfont-tianqi-yu:before { content: "\e6b2"; }
-.Hui-iconfont-daipingjia:before { content: "\e6b3"; }
-.Hui-iconfont-vip-card2:before { content: "\e6b4"; }
-.Hui-iconfont-jifen:before { content: "\e6b5"; }
-.Hui-iconfont-youhuiquan:before { content: "\e6b6"; }
-.Hui-iconfont-hongbao:before { content: "\e6b7"; }
-.Hui-iconfont-cart-selected:before { content: "\e6b8"; }
-.Hui-iconfont-cart-kong:before { content: "\e6b9"; }
-.Hui-iconfont-jiangjia:before { content: "\e6ba"; }
-.Hui-iconfont-liwu:before { content: "\e6bb"; }
-.Hui-iconfont-caiqie:before { content: "\e6bc"; }
-.Hui-iconfont-xuanzhuan:before { content: "\e6bd"; }
-.Hui-iconfont-bigpic:before { content: "\e6be"; }
-.Hui-iconfont-list:before { content: "\e6bf"; }
-.Hui-iconfont-middle:before { content: "\e6c0"; }
-.Hui-iconfont-hot:before { content: "\e6c1"; }
-.Hui-iconfont-paishe:before { content: "\e6c2"; }
-.Hui-iconfont-hot1:before { content: "\e6c3"; }
-.Hui-iconfont-new:before { content: "\e6c4"; }
-.Hui-iconfont-xiaoxi1:before { content: "\e6c5"; }
-.Hui-iconfont-canshu:before { content: "\e6c6"; }
-.Hui-iconfont-tel:before { content: "\e6c7"; }
-.Hui-iconfont-dingwei:before { content: "\e6c9"; }
-.Hui-iconfont-hongbao2:before { content: "\e6ca"; }
-.Hui-iconfont-2code:before { content: "\e6cb"; }
-.Hui-iconfont-vip:before { content: "\e6cc"; }
-.Hui-iconfont-tishi:before { content: "\e6cd"; }
-.Hui-iconfont-dingyue:before { content: "\e6ce"; }
-.Hui-iconfont-yulan:before { content: "\e695"; }
-.Hui-iconfont-usergroup2:before { content: "\e611"; }
-.Hui-iconfont-goods:before { content: "\e620"; }
-.Hui-iconfont-paixingbang:before { content: "\e6cf"; }
-.Hui-iconfont-kefu:before { content: "\e6d0"; }
-.Hui-iconfont-picture1:before { content: "\e612"; }
-.Hui-iconfont-weigouxuan:before { content: "\e614"; }
-.Hui-iconfont-shenhe-weitongguo:before { content: "\e6e0"; }
-.Hui-iconfont-shenhe-tongguo:before { content: "\e6e1"; }
-.Hui-iconfont-tongji-bing:before { content: "\e621"; }
-.Hui-iconfont-gouxuan:before { content: "\e615"; }

+ 0 - 7
watero-wechat-web/src/main/webapp/common/admin/css/style.css

@@ -1,7 +0,0 @@
-@charset "utf-8";
-/* 你自己的样式 */
-.f-60{font-size:60px}
-.f-100{font-size:80px}
-.mn-20{mn:20px}
-.mn-10{mn:10px}
-.btn-lowblue{color:#fff;background-color:#E8F5FF; border-color:#E8F5FF}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 95
watero-wechat-web/src/main/webapp/common/admin/css/webuploader.css


BIN
watero-wechat-web/src/main/webapp/common/admin/images/acrossTab-2.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/acrossTab-2bak.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/acrossTab-bg.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/acrossTab-close.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/acrossTab.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/admin-login-bg.jpg


BIN
watero-wechat-web/src/main/webapp/common/admin/images/admin-loginform-bg.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/gq/cn.gif


BIN
watero-wechat-web/src/main/webapp/common/admin/images/gq/gj.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/gq/us.gif


BIN
watero-wechat-web/src/main/webapp/common/admin/images/hamburger-retina.gif


BIN
watero-wechat-web/src/main/webapp/common/admin/images/hamburger.gif


BIN
watero-wechat-web/src/main/webapp/common/admin/images/icon-add.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/icon_error_s.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/icon_jt2.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/icon_right_s.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/icon_warning_s.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/loading.gif


BIN
watero-wechat-web/src/main/webapp/common/admin/images/loading_072.gif


BIN
watero-wechat-web/src/main/webapp/common/admin/images/logo.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/sort_asc.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/sort_both.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/sort_desc.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/totop.png


BIN
watero-wechat-web/src/main/webapp/common/admin/images/user.png


+ 0 - 194
watero-wechat-web/src/main/webapp/common/admin/js/H-ui.admin.js

@@ -1,194 +0,0 @@
-/*H-ui.admin.js v2.3.1 date:15:42 2015.08.19 by:guojunhui*/
-/*获取顶部选项卡总长度*/
-function tabNavallwidth(){
-	var taballwidth=0,
-		$tabNav = $(".acrossTab"),
-		$tabNavWp = $(".Hui-tabNav-wp"),
-		$tabNavitem = $(".acrossTab li"),
-		$tabNavmore =$(".Hui-tabNav-more");
-	if (!$tabNav[0]){return}
-	$tabNavitem.each(function(index, element) {
-        taballwidth+=Number(parseFloat($(this).width()+60))});
-	$tabNav.width(taballwidth+25);
-	var w = $tabNavWp.width();
-	if(taballwidth+25>w){
-		$tabNavmore.show()}
-	else{
-		$tabNavmore.hide();
-		$tabNav.css({left:0})}
-}
-
-/*左侧菜单响应式*/
-function Huiasidedisplay(){
-	if($(window).width()>=768){
-		$(".Hui-aside").show()
-	} 
-}
-function getskincookie(){
-	var v = getCookie("Huiskin");
-	if(v==null||v==""){
-		v="default";
-	}
-	$("#skin").attr("href","/watero/common/admin/skin/"+v+"/skin.css");
-}
-$(function(){
-	getskincookie();
-	//layer.config({extend: 'extend/layer.ext.js'});
-	Huiasidedisplay();
-	var resizeID;
-	$(window).resize(function(){
-		clearTimeout(resizeID);
-		resizeID = setTimeout(function(){
-			Huiasidedisplay();
-		},500);
-	});
-	
-	$(".Hui-nav-toggle").click(function(){
-		$(".Hui-aside").slideToggle();
-	});
-	$(".Hui-aside").on("click",".menu_dropdown dd li a",function(){
-		if($(window).width()<768){
-			$(".Hui-aside").slideToggle();
-		}
-	});
-	/*左侧菜单*/
-	$.Huifold(".menu_dropdown dl dt",".menu_dropdown dl dd","fast",1,"click");
-	/*选项卡导航*/
-	
-	$(".Hui-aside").on("click",".menu_dropdown a",function(){
-		if($(this).attr('_href')){
-			var bStop=false;
-			var bStopIndex=0;
-			var _href=$(this).attr('_href');
-			var _titleName=$(this).html();
-			var topWindow=$(window.parent.document);
-			var show_navLi=topWindow.find("#min_title_list li");
-			show_navLi.each(function() {
-				if($(this).find('span').attr("data-href")==_href){
-					bStop=true;
-					bStopIndex=show_navLi.index($(this));
-					return false;
-				}
-			});
-			if(!bStop){
-				creatIframe(_href,_titleName);
-				min_titleList();
-			}
-			else{
-				show_navLi.removeClass("active").eq(bStopIndex).addClass("active");
-				var iframe_box=topWindow.find("#iframe_box");
-				iframe_box.find(".show_iframe").hide().eq(bStopIndex).show().find("iframe").attr("src",_href);
-			}
-		}
-	});
-	
-	function min_titleList(){
-		var topWindow=$(window.parent.document);
-		var show_nav=topWindow.find("#min_title_list");
-		var aLi=show_nav.find("li");
-	};
-	function creatIframe(href,titleName){
-		var topWindow=$(window.parent.document);
-		var show_nav=topWindow.find('#min_title_list');
-		show_nav.find('li').removeClass("active");
-		var iframe_box=topWindow.find('#iframe_box');
-		show_nav.append('<li class="active"><span data-href="'+href+'">'+titleName+'</span><i></i><em></em></li>');
-		tabNavallwidth();
-		var iframeBox=iframe_box.find('.show_iframe');
-		iframeBox.hide();
-		iframe_box.append('<div class="show_iframe"><div class="loading"></div><iframe frameborder="0" src='+href+'></iframe></div>');
-		var showBox=iframe_box.find('.show_iframe:visible');
-		showBox.find('iframe').attr("src",href).load(function(){
-			showBox.find('.loading').hide();
-		});
-	}
-
-	var num=0;
-	var oUl=$("#min_title_list");
-	var hide_nav=$("#Hui-tabNav");
-	$(document).on("click","#min_title_list li",function(){
-		var bStopIndex=$(this).index();
-		var iframe_box=$("#iframe_box");
-		$("#min_title_list li").removeClass("active").eq(bStopIndex).addClass("active");
-		iframe_box.find(".show_iframe").hide().eq(bStopIndex).show();
-	});
-	$(document).on("click","#min_title_list li i",function(){
-		var aCloseIndex=$(this).parents("li").index();
-		$(this).parent().remove();
-		$('#iframe_box').find('.show_iframe').eq(aCloseIndex).remove();	
-		num==0?num=0:num--;
-		tabNavallwidth();
-	});
-	$(document).on("dblclick","#min_title_list li",function(){
-		var aCloseIndex=$(this).index();
-		var iframe_box=$("#iframe_box");
-		if(aCloseIndex>0){
-			$(this).remove();
-			$('#iframe_box').find('.show_iframe').eq(aCloseIndex).remove();	
-			num==0?num=0:num--;
-			$("#min_title_list li").removeClass("active").eq(aCloseIndex-1).addClass("active");
-			iframe_box.find(".show_iframe").hide().eq(aCloseIndex-1).show();
-			tabNavallwidth();
-		}else{
-			return false;
-		}
-	});
-	tabNavallwidth();
-	
-	$('#js-tabNav-next').click(function(){
-		num==oUl.find('li').length-1?num=oUl.find('li').length-1:num++;
-		toNavPos();
-	});
-	$('#js-tabNav-prev').click(function(){
-		num==0?num=0:num--;
-		toNavPos();
-	});
-	
-	function toNavPos(){
-		oUl.stop().animate({'left':-num*100},100);
-	}
-	
-	/*换肤*/
-	$("#Hui-skin .dropDown-menu a").click(function(){
-		var v = $(this).attr("data-val");
-		setCookie("Huiskin", v);
-		$("#skin").attr("href","/watero/common/admin/skin/"+v+"/skin.css");
-	});
-}); 
-/*弹出层*/
-/*
-	参数解释:
-	title	标题
-	url		请求的url
-	id		需要操作的数据id
-	w		弹出层宽度(缺省调默认值)
-	h		弹出层高度(缺省调默认值)
-*/
-function layer_show(title,url,w,h){
-	if (title == null || title == '') {
-		title=false;
-	};
-	if (url == null || url == '') {
-		url="404.html";
-	};
-	if (w == null || w == '') {
-		w=800;
-	};
-	if (h == null || h == '') {
-		h=($(window).height() - 50);
-	};
-	layer.open({
-		type: 2,
-		area: [w+'px', h +'px'],
-		fix: false, //不固定
-		maxmin: true,
-		shade:0.4,
-		title: title,
-		content: url
-	});
-}
-/*关闭弹出框口*/
-function layer_close(){
-	var index = parent.layer.getFrameIndex(window.name);
-	parent.layer.close(index);
-}

+ 0 - 664
watero-wechat-web/src/main/webapp/common/admin/js/H-ui.js

@@ -1,664 +0,0 @@
-/*H-ui.js v2.3 date:9:53 2015-07-17 by:guojunhui*/
-if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
-  var msViewportStyle = document.createElement("style")
-  msViewportStyle.appendChild(
-    document.createTextNode(
-      "@-ms-viewport{width:auto!important}"
-    )
-  )
-  document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
-}
-
-
-/*添加收藏
-<a title="收藏本站" href="javascript:;" onClick="addFavoritepage('H-ui前端框架','http://www.h-ui.net/');">收藏本站</a>
-*/
-/*收藏主站*/
-function addFavorite(name,site){
-	try{window.external.addFavorite(site,name);}
-	catch(e){
-		try{window.sidebar.addPanel(name,site,"");}
-			catch(e){alert("加入收藏失败,请使用Ctrl+D进行添加");}
-	}
-}
-/*收藏页面
-<a title="收藏本页" href="javascript:addFavoritepage(0);">收藏本页</a>
-*/
-function addFavoritepage(){var sURL=window.location.href;var sTitle=document.title;try{window.external.addFavorite(sURL,sTitle);}catch(e){try{window.sidebar.addPanel(sTitle,sURL,"");}catch(e){alert("加入收藏失败,请使用Ctrl+D进行添加");}}}
-
-/*设为首页*/
-function setHome(obj){
-  try{obj.style.behavior="url(#default#homepage)";obj.setHomePage(webSite);}
-  catch(e){if(window.netscape){
-	  try {netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");}
-	  catch(e){alert("此操作被浏览器拒绝!\n请在浏览器地址栏输入\"about:config\"并回车\n然后将 [signed.applets.codebase_principal_support]的值设置为'true',双击即可。");}
-	  var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
-	  prefs.setCharPref('browser.startup.homepage',url);}}
-}
-/*滚动*/
-function marquee(height,speed,delay){
-	var scrollT;
-	var pause = false;
-	var ScrollBox = document.getElementById("marquee");
-	if(document.getElementById("holder").offsetHeight <= height) return;
-	var _tmp = ScrollBox.innerHTML.replace('holder', 'holder2')
-	ScrollBox.innerHTML += _tmp;
-	ScrollBox.onmouseover = function(){pause = true}
-	ScrollBox.onmouseout = function(){pause = false}
-	ScrollBox.scrollTop = 0;
-	function start(){
-	    scrollT = setInterval(scrolling,speed);
-	    if(!pause) ScrollBox.scrollTop += 2;
-	}
-	function scrolling(){
-	    if(ScrollBox.scrollTop % height != 0){
-	        ScrollBox.scrollTop += 2;
-	        if(ScrollBox.scrollTop >= ScrollBox.scrollHeight/2) ScrollBox.scrollTop = 0;
-	    }
-		else{
-	        clearInterval(scrollT);
-	        setTimeout(start,delay);
-	    }
-	}
-	setTimeout(start,delay);
-}
-
-/*隐藏显示密码*/
-(function ( $ ) {
-    $.fn.togglePassword = function( options ) {
-        var s = $.extend( $.fn.togglePassword.defaults, options ),
-        input = $( this );
-
-        $( s.el ).on( s.ev, function() {
-            "password" == $( input ).attr( "type" ) ?
-                $( input ).attr( "type", "text" ) :
-                $( input ).attr( "type", "password" );
-        });
-    };
-
-    $.fn.togglePassword.defaults = {
-        ev: "click"
-    };
-}( jQuery ));
-!function ($) {
-	"use strict";
-	$(function () {
-		$.support.transition = (function () {
-			var transitionEnd = (function () {
-				var el = document.createElement('bootstrap'),
-				transEndEventNames = {
-					'WebkitTransition' : 'webkitTransitionEnd',
-					'MozTransition'    : 'transitionend',
-					'OTransition'      : 'oTransitionEnd otransitionend',
-					'transition'       : 'transitionend'
-				},
-				name
-				for (name in transEndEventNames){
-					if (el.style[name] !== undefined) {
-						return transEndEventNames[name]
-					}
-				}
-			}())
-			return transitionEnd && {
-				end: transitionEnd
-			}
-		})()
-	});
-}(window.jQuery);
-
-/*左侧菜单-隐藏显示*/
-function displaynavbar(obj){
-	if($(obj).hasClass("open")){
-		$(obj).removeClass("open");
-		$("body").removeClass("big-page");
-	}else{
-		$(obj).addClass("open");
-		$("body").addClass("big-page");
-					
-	}
-}
-
-/*模拟下拉菜单*/
-jQuery.Huiselect = function(divselectid,inputselectid) {
-	var inputselect = $(inputselectid);
-	$(divselectid+" cite").click(function(){
-		var ul = $(divselectid+" ul");
-		ul.slideToggle();
-	});
-	$(divselectid+" ul li a").click(function(){
-		var txt = $(this).text();
-		$(divselectid+" cite").html(txt);
-		var value = $(this).attr("selectid");
-		inputselect.val(value);
-		$(divselectid+" ul").hide();
-	});
-	$(document).click(function(){$(divselectid+" ul").hide();});
-};
-
-/*hover*/
-jQuery.Huihover =function(obj) {
-	$(obj).hover(function(){$(this).addClass("hover");},function(){$(this).removeClass("hover");});
-};
-/*得到失去焦点*/
-jQuery.Huifocusblur = function(obj) {
-	$(obj).focus(function() {$(this).addClass("focus").removeClass("inputError");});
-	$(obj).blur(function() {$(this).removeClass("focus");});
-};
-/*tab选项卡*/
-jQuery.Huitab =function(tabBar,tabCon,class_name,tabEvent,i){
-  	var $tab_menu=$(tabBar);
-	// 初始化操作
-	$tab_menu.removeClass(class_name);
-	$(tabBar).eq(i).addClass(class_name);
-	$(tabCon).hide();
-	$(tabCon).eq(i).show();
-	
-	$tab_menu.on(tabEvent,function(){
-		$tab_menu.removeClass(class_name);
-		$(this).addClass(class_name);
-		var index=$tab_menu.index(this);
-		$(tabCon).hide();
-		$(tabCon).eq(index).show();
-	});
-}
-
-/*折叠*/
-jQuery.Huifold = function(obj,obj_c,speed,obj_type,Event){
-	if(obj_type == 2){
-		$(obj+":first").find("b").html("-");
-		$(obj_c+":first").show();
-	}			
-	$(obj).on(Event,function(){
-		if($(this).next().is(":visible")){
-			if(obj_type == 2){
-				return false;
-			}else{
-				$(this).next().slideUp(speed).end().removeClass("selected");
-				if($(this).find("b")){
-					$(this).find("b").html("+");
-				}
-			}
-		}
-		else{
-			if(obj_type == 3){
-				$(this).next().slideDown(speed).end().addClass("selected");
-				if($(this).find("b")){
-					$(this).find("b").html("-");
-				}
-			}else{
-				$(obj_c).slideUp(speed);
-				$(obj).removeClass("selected");
-				if($(this).find("b")){
-					$(obj).find("b").html("+");
-				}
-				$(this).next().slideDown(speed).end().addClass("selected");
-				if($(this).find("b")){
-					$(this).find("b").html("-");
-				}
-			}
-		}
-	});
-}
-/*返回顶部*/
-var $backToTopEle=$('<a href="javascript:void(0)" class="Hui-iconfont toTop" title="返回顶部" alt="返回顶部" style="display:none">&#xf0023;</a>').appendTo($("body")).click(function(){
-	$("html, body").animate({ scrollTop: 0 }, 120);
-});
-var $backToTopFun = function() {
-	var st = $(document).scrollTop(), winh = $(window).height();
-	(st > 0)? $backToTopEle.show(): $backToTopEle.hide();
-	/*IE6下的定位*/
-	if(!window.XMLHttpRequest){
-		$backToTopEle.css("top", st + winh - 166);
-	}
-};
-/*textarea 字数限制*/
-function textarealength(obj,maxlength){
-	var v = $(obj).val();
-	var l = v.length;
-	if( l > maxlength){
-		v = v.substring(0,maxlength);
-	}
-	$(obj).parent().find(".textarea-length").text(v.length);
-}
-/*Huimodalalert*/
-function Huimodal_alert(info,speed){
-	$(document.body).append(
-	'<div id="modal-alert" class="modal hide modal-alert">'+
-	  '<div class="modal-alert-info">'+info+'</div>'+
-	'</div>'
-	);
-	$("#modal-alert").fadeIn();
-	
-	setTimeout("Huimodal_alert_hide()",speed);
-}
-function Huimodal_alert_hide() {
-	$("#modal-alert").fadeOut("normal",function(){
-		$("#modal-alert").remove();
-	});
-}
-/*设置cookie*/
-function setCookie(name, value, Days){
-	if(Days == null || Days == ''){
-		Days = 300;
-	}
-	var exp  = new Date();
-	exp.setTime(exp.getTime() + Days*24*60*60*1000);
-	document.cookie = name + "="+ escape (value) + "; path=/;expires=" + exp.toGMTString();
-}
-
-/*获取cookie*/
-function getCookie(name) {
-    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
-    if(arr=document.cookie.match(reg))
-        return unescape(arr[2]); 
-    else 
-        return null; 
-}
-$(function(){
-	/*****表单*****/
-    $.Huifocusblur(".input-text,.textarea");
-	/*按钮loading*/
-	$('.btn-loading').click(function () {
-		var $btn = $(this);
-		var btnval = $btn.val();
-		$btn.addClass("disabled").val("loading").attr("disabled","disabled");
-		setTimeout(function(){
-			$btn.removeClass("disabled").val(btnval).removeAttr("disabled");
-		}, 3000);
-	});	
-	/**/
-	$.Huiselect("#divselect","#inputselect");
-
-	/*全选*/
-	$("table thead th input:checkbox").on("click" , function(){
-		$(this).closest("table").find("tr > td:first-child input:checkbox").prop("checked",$("table thead th input:checkbox").prop("checked"));
-    });
-	
-    /*上传*/
-    $(document).on("change",".input-file",function(){
-		var uploadVal=$(this).val();
-		$(this).parent().find(".upload-url").val(uploadVal).focus().blur();
-	});
-	
-	/*下拉菜单*/
-	$(document).on("mouseenter",".dropDown",function(){
-		$(this).addClass("hover");
-	});
-	$(document).on("mouseleave",".dropDown",function(){
-		$(this).removeClass("hover");
-	});
-	$(document).on("mouseenter",".dropDown_hover",function(){
-		$(this).addClass("open");
-	});
-	$(document).on("mouseleave",".dropDown_hover",function(){
-		$(this).removeClass("open");
-	});
-	$(document).on("click",".dropDown-menu li a",function(){
-		$(".dropDown").removeClass('open');
-	});
-	$(document).on('click', function(event){
-		var e_t = $(event.target).parents('.dropDown_click');
-		if($(".dropDown_click").hasClass('open')){
-			if(e_t.hasClass('open')){
-				e_t.removeClass('open');
-				return;
-			}
-			$(".dropDown_click").removeClass('open');
-			e_t.toggleClass('open');
-		}else{
-			e_t.toggleClass('open');
-		}
-	});
-
-	/*搜索框*/
-	$.Huifocusblur('.searchTxt');
-	$.Huihover('.ac_results li');
-	$(".ac_results li").click(function (event){
-		$(".searchTxt").addClass("focus").val($(this).find("p").text());
-		$(".ac_results").hide();
-		//$(".form-search").submit();/*提交表单*/
-		b_onclick();/*临时测试*/
-		return false;
-	});
-	$(".searchTxt").focus(function(){$(".ac_results").show();return false;});
-	$(".ac_results").blur(function(){$(this).hide();});
-	$("body").click(function(){$(".ac_results").hide();});
-	$(".searchTxt").click(function(){$(".ac_results").show();return false;});
-	function BindEnter(obj){
-    	var searchBtn = $("#searchBtn");
-    	if(obj.keyCode == 13){searchBtn.click();obj.returnValue = false;}
-	}
-	
-	/*tag标签*/
-	var tags_a = $(".tags a");
-	tags_a.each(function(){
-		var x = 9;
-		var y = 0;
-		var rand = parseInt(Math.random() * (x - y + 1) + y);
-		$(this).addClass("tags"+rand);
-	});
-		
-	/*对联广告*/
-	var dual = $(".dual");
-	var dual_close = $("a.dual_close");	
-	var screen_w = screen.width;
-	if(screen_w>1024){dual.show();}
-	$(window).scroll(function(){
-		var scrollTop = $(window).scrollTop();
-		dual.stop().animate({top:scrollTop+260});
-	});
-	dual_close.click(function(){
-		$(this).parent().hide();
-		return false;
-	});
-
-	/*顶部展开定时自动关闭广告*/ 
-	$("#banner").slideDown("slow");
-	
-	/*图片预览*/
-	$("a.preview").hover(
-		function(){
-			$(this).addClass("active");
-			$("#tooltip-preview").remove();
-			var winW=$(window).width();
-			var winW5=winW/2;
-			this.myTitle = this.title;
-			this.title = "";
-			var midimg = $(this).attr('data-preview');
-			if(midimg ==''){return false;}
-			else{
-				var imgT=$(this).parents(".imgItem").offset().top;
-				var imgL=$(this).parents(".imgItem").offset().left;	
-				var imgW=$(this).parents(".imgItem").width();
-				var imgH=$(this).parents(".imgItem").height();
-				var ww=(imgL+imgW/2);
-				if(ww < winW5){
-					var tooltipLeft=(imgW+imgL)+"px";	
-				}
-				else{
-					var tooltipRight=(winW-imgL)+"px";
-				}
-				var tooltip_keleyi_com = "<div id='tooltip-preview' style='top:"+ imgT +"px;right:"+ tooltipRight +";left:"+ tooltipLeft +"'><span id='tooltip-keleyi-div' class='loading' style='width:50px; height:50px'></span></div>";
-				$("body").append(tooltip_keleyi_com);
-				var midimgW = $(this).attr('data-width');
-				var midimgH = $(this).attr('data-height');
-				var imgTitle = this.myTitle ? "<br />" + this.myTitle + " 产品预览图" : "";
-				/*图片预加载*/
-				var image = new Image();/*创建一个Image对象*/
-				image.onload = function () {
-					if($('a.preview.active').attr('data-preview') == midimg){
-						var midingW2 = this.width;
-						var midingH2 = this.height;
-						$("#tooltip-keleyi-div").css({"width":midingW2+"px","height":midingH2+"px"});
-						$('#tooltip-keleyi-div').append(this);	
-					}
-				};
-				image.src = midimg;
-			}
-		},
-		function(){
-			$(this).removeClass("active");
-			this.title = this.myTitle;
-			$("#tooltip-preview").remove();
-		}
-	);
-	
-	/*Huialert*/
-	$.Huihover('.Huialert i');
-	$(".Huialert i").on("click",function(){
-		var Huialert = $(this).parents(".Huialert");
-		Huialert.fadeOut("normal",function(){
-		  Huialert.remove();
-		});
-	});
-
-	/*tag标签*/
-	var time1;
-	$(".Hui-tags-lable").show();
-	$(".Hui-tags-input").val("");
-	$(document).on("blur",".Hui-tags-input",function(){
-		time1 = setTimeout(function(){
-			$(this).parents(".Hui-tags").find(".Hui-tags-list").slideUp();
-		}, 400);
-	});
-	$(document).on("focus",".Hui-tags-input",function(){
-		clearTimeout(time1);
-	});
-	$(document).on("click",".Hui-tags-input",function(){
-		$(this).find(".Hui-tags-input").focus();
-		$(this).find(".Hui-tags-list").slideDown();
-	});
-	function gettagval(obj){
-		var str ="";
-		var token =$(obj).parents(".Hui-tags").find(".Hui-tags-token");
-		//alert(token.length)
-		if(token.length<1){
-			$(obj).parents(".Hui-tags").find(".Hui-tags-val").val("");
-			return false;
-		}
-		for(var i = 0;i< token.length;i++){
-			str += token.eq(i).text() + ",";
-			$(obj).parents(".Hui-tags").find(".Hui-tags-val").val(str);
-		}
-	}
-	$(document).on("keydown",".Hui-tags-input",function(event){
-		$(this).next().hide();
-		var v = $(this).val().replace(/\s+/g, "");
-		var reg=/^,|,$/gi;
-		v=v.replace(reg,"");
-		v=$.trim(v);
-		var token =$(this).parents(".Hui-tags").find(".Hui-tags-token");
-		if(v!=''){
-			if(event.keyCode==13||event.keyCode==108||event.keyCode==32){
-				$('<span class="Hui-tags-token">'+v+'</span>').insertBefore($(this).parents(".Hui-tags").find(".Hui-tags-iptwrap"));
-				$(this).val("");
-				gettagval(this);
-			}
-		}else{
-			if(event.keyCode==8){
-				if(token.length>=1){
-					$(this).parents(".Hui-tags").find(".Hui-tags-token:last").remove();
-					gettagval(this);
-				}
-				else{
-					$(this).parents(".Hui-tags").find(".Hui-tags-lable").show();
-					return false;
-				}
-				
-			}
-		}	
-	});
-	
-	$(document).on("click",".Hui-tags-has span",function(){
-		var taghasV = $(this).text();
-		taghasV=taghasV.replace(/(^\s*)|(\s*$)/g,"");
-		$('<span class="Hui-tags-token">'+taghasV+'</span>').insertBefore($(this).parents(".Hui-tags").find(".Hui-tags-iptwrap"));
-		gettagval(this);
-		$(this).parents(".Hui-tags").find(".Hui-tags-input").focus();
-	});
-	$(document).on("click",".Hui-tags-token",function(){
-		var token =$(this).parents(".Hui-tags").find(".Hui-tags-token");
-		var it = $(this).parents(".Hui-tags");
-		$(this).remove();
-		switch(token.length){
-			case 1 : it.find(".Hui-tags-lable").show();
-			break;
-		}
-		var str ="";
-		var token =it.find(".Hui-tags-token");
-		//alert(token.length)
-		if(token.length<1){
-			it.find(".Hui-tags-val").val("");
-			return false;
-		}
-		for(var i = 0;i< token.length;i++){
-			str += token.eq(i).text() + ",";
-			it.find(".Hui-tags-val").val(str);
-		}		
-	});
-});
-
-function displayimg(){
-	$("#banner").slideUp(1000,function(){
-		$("#top").slideDown(1000);
-	});
-}
-setTimeout("displayimg()",4000);
-/*placeholder兼容性处理*/
-(function(window, document, $) {
-	var isInputSupported = 'placeholder' in document.createElement('input');
-	var isTextareaSupported = 'placeholder' in document.createElement('textarea');
-	var prototype = $.fn;
-	var valHooks = $.valHooks;
-	var propHooks = $.propHooks;
-	var hooks;
-	var placeholder;
-
-	if (isInputSupported && isTextareaSupported) {
-		placeholder = prototype.placeholder = function() {
-			return this;
-		};
-		placeholder.input = placeholder.textarea = true;
-	} else {
-		placeholder = prototype.placeholder = function() {
-			var $this = this;
-			$this
-				.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
-				.not('.placeholder')
-				.bind({
-					'focus.placeholder': clearPlaceholder,
-					'blur.placeholder': setPlaceholder
-				})
-				.data('placeholder-enabled', true)
-				.trigger('blur.placeholder');
-			return $this;
-		};
-		placeholder.input = isInputSupported;
-		placeholder.textarea = isTextareaSupported;
-		hooks = {
-			'get': function(element) {
-				var $element = $(element);
-				var $passwordInput = $element.data('placeholder-password');
-				if ($passwordInput) {
-					return $passwordInput[0].value;
-				}
-				return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
-			},
-			'set': function(element, value) {
-				var $element = $(element);
-				var $passwordInput = $element.data('placeholder-password');
-				if ($passwordInput) {
-					return $passwordInput[0].value = value;
-				}
-				if (!$element.data('placeholder-enabled')) {
-					return element.value = value;
-				}
-				if (value == '') {
-					element.value = value;
-					if (element != safeActiveElement()) {
-						setPlaceholder.call(element);
-					}
-				} else if ($element.hasClass('placeholder')) {
-					clearPlaceholder.call(element, true, value) || (element.value = value);
-				} else {
-					element.value = value;
-				}
-				return $element;
-			}
-		};
-
-		if (!isInputSupported) {
-			valHooks.input = hooks;
-			propHooks.value = hooks;
-		}
-		if (!isTextareaSupported) {
-			valHooks.textarea = hooks;
-			propHooks.value = hooks;
-		}
-
-		$(function() {
-			$(document).delegate('form', 'submit.placeholder', function() {
-				var $inputs = $('.placeholder', this).each(clearPlaceholder);
-				setTimeout(function() {
-					$inputs.each(setPlaceholder);
-				}, 10);
-			});
-		});
-
-		$(window).bind('beforeunload.placeholder', function() {
-			$('.placeholder').each(function() {
-				this.value = '';
-			});
-		});
-	}
-
-	function args(elem) {
-		var newAttrs = {};
-		var rinlinejQuery = /^jQuery\d+$/;
-		$.each(elem.attributes, function(i, attr) {
-			if (attr.specified && !rinlinejQuery.test(attr.name)) {
-				newAttrs[attr.name] = attr.value;
-			}
-		});
-		return newAttrs;
-	}
-
-	function clearPlaceholder(event, value) {
-		var input = this;
-		var $input = $(input);
-		if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
-			if ($input.data('placeholder-password')) {
-				$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
-				if (event === true) {
-					return $input[0].value = value;
-				}
-				$input.focus();
-			} else {
-				input.value = '';
-				$input.removeClass('placeholder');
-				input == safeActiveElement() && input.select();
-			}
-		}
-	}
-
-	function setPlaceholder() {
-		var $replacement;
-		var input = this;
-		var $input = $(input);
-		var id = this.id;
-		if (input.value == '') {
-			if (input.type == 'password') {
-				if (!$input.data('placeholder-textinput')) {
-					try {
-						$replacement = $input.clone().prop('type','text');
-					} catch(e) {
-						$replacement = $('<input>').prop($.extend(args(this), { 'type': 'text' }));
-					}
-					$replacement
-						.removeAttr('name')
-						.data({
-							'placeholder-password': $input,
-							'placeholder-id': id
-						})
-						.bind('focus.placeholder', clearPlaceholder);
-					$input
-						.data({
-							'placeholder-textinput': $replacement,
-							'placeholder-id': id
-						})
-						.before($replacement);
-				}
-				$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
-			}
-			$input.addClass('placeholder');
-			$input[0].value = $input.attr('placeholder');
-		} else {
-			$input.removeClass('placeholder');
-		}
-	}
-	function safeActiveElement() {
-		try {
-			return document.activeElement;
-		} catch (exception) {}
-	}
-}(this, document, jQuery));

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 57
watero-wechat-web/src/main/webapp/common/admin/js/WdatePicker.js


+ 0 - 18
watero-wechat-web/src/main/webapp/common/admin/js/de_DE.txt

@@ -1,18 +0,0 @@
-{
-	"processing": "处理中...",
-	"lengthMenu": "每页显示 _MENU_ 条",
-	"zeroRecords": "没有找到匹配的记录",
-	"sProcessing": "&lt;img src=’./loading.gif’ /&gt;",
-	"info": "显示 _START_ 到 _END_ ,共 _TOTAL_ 条",
-	"infoEmpty": "0条",
-	"infoFiltered": "(从 _MAX_ 条中过滤)",
-	"infoPostFix": "",
-	"search": "当前检索",
-	"url": "",
-	"paginate": {
-		"first":    "第一页",
-		"previous": "上一页",
-		"next":     "下一页",
-		"last":     "最后一页"
-	}
-}

+ 0 - 229
watero-wechat-web/src/main/webapp/common/admin/js/tips.js

@@ -1,229 +0,0 @@
-/*字符串去空格*/
-function trimStrOT(str){
-    return str==null||str==''?'':str.replace(/\s+/g,'');
-}
-/*字符串类型验证*/
-function strTypeJdg(str,jdgType){
-    if (trimStrOT(str)!=''){
-        var jdgStr='';
-        switch(jdgType){
-            case null:
-                jdgStr='required';/*非空*/
-                break;
-            case 'digital':/*数字*/
-                jdgStr=/^[0-9]+([.]\d{1,4})?$/;
-                break;
-            case 'pInteger':/*非0正整数*/
-                jdgStr=/^\+?[1-9][0-9]*$/;
-                break;
-            case 'money':/*金钱*/
-                jdgStr=/^[0-9]*(\.[0-9]{1,7})?$/;
-                break;
-            case 'username':/*数字、26个英文字母或者下划线组成*/
-                jdgStr=/[\u4E00-\u9FA5\w]{2,}$/;
-                break;
-            case 'password':/*密码组成判断,字母开头,长度在6~20之间,只能包含字符、数字和下划线*/
-                jdgStr=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){5,19}$/;
-                break;
-            case 'chn':/*汉字*/
-                jdgStr=/^[\u4e00-\u9fa5]{0,}$/;
-                break;
-            case 'tel':/*座机、传真号码*/
-                jdgStr=/^[0-9]{3,4}(\-)[0-9]{7,8}(\-[0-9]{1,4})?$/;
-                break;
-            case 'mobile':/*手机号码*/
-                jdgStr=/^(13[0-9]|14[0-9]|15[0-9]|18[0-9])\d{8}$/;
-                break;
-            case 'mail':/*邮箱*/
-                jdgStr=/^[a-zA-Z0-9_\-]{1,}@[a-zA-Z0-9_\-]{1,}\.[a-zA-Z0-9_\-.]{1,}$/;
-                break;
-            case 'postal':/*邮政编码*/
-                jdgStr=/^[0-9]{6}$/;
-                break;
-            case 'date':/*中文日期*/
-                jdgStr=/^(\d{4})-(0\d{1}|1[0-2])-(0\d{1}|[12]\d{1}|3[01])$/;
-                break;
-            case 'ID':/*身份证*/
-                jdgStr=/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
-                break;
-            default:
-                break;
-        }
-        return jdgStr!=''?jdgStr!='required'?jdgStr.test(str):trimStrOT(str)!='':false;
-    }else{
-        return false;
-    }
-}
-/*提示组件显示隐藏*/
-function tipsEleOperation(obj,tipsText,isValidatePass){
-    /*判断组件是否存在*/
-    var eleContainer=obj.parents('.eleContainer:first');/*提示组件的元素容器*/
-    /*寻找提示组件*/
-    var tipsEle=eleContainer.find('.tipsEle');
-    if(tipsEle.size()==0){/*提示不存在,插入组件*/
-        /*组件拼装*/
-        var tipsEleStr='<span class="tipsEle eleVAlignM">'
-            +'<div class="tipsContent eleShadow eleRadius">'
-            +'<div class="tipsArrow"><div></div></div>'
-            +'<div class="tipsTitle">'
-            +'<span class="commonIcon icon-warning eleVAlignM"></span>'
-            +'<span class="titleText textS12 eleVAlignM"></span>'
-            +'</div>'
-            +'</div>'
-            +'</span>';
-        /*组件插入*/
-        eleContainer.append(tipsEleStr);
-        /*插入完毕后先隐藏*/
-        tipsEle=eleContainer.find('.tipsEle');/*刷新获取的组件*/
-        tipsEle.hide();
-    }
-    /*改变文本*/
-    tipsEle.find('.titleText').html(tipsText);
-    /*判断是否验证通过*/
-    if(isValidatePass){/*验证通过*/
-        /*操作提示组件,若显示则隐藏,若隐藏则不做操作*/
-        if(!tipsEle.is(":hidden")){
-            tipsEle.hide();
-        }
-    }else{/*验证不通过*/
-        /*操作提示组件,若隐藏则显示,若显示则不做操作*/
-        if(tipsEle.is(":hidden")){
-            tipsEle.show();
-        }
-    }
-}
-/*
-* 清除区域内提示组件
-* areaID:区域ID
-*/
-function clearAreaTipsEle(areaID){
-    $('#'+areaID).find('.tipsEle').hide();
-}
-/*
-* 控件值类型验证
-* jdgType:验证类型,值如下:
-* 数字(digital),非0正整数(pInteger),金钱(money),用户名(username)
-* 密码(password),汉字(chn),固定电话、传真(tel),手机(mobile)
-* 邮箱(mail),日期(date),身份证(ID),非空验证(null)
-* tipsText:提示文本
-* required:是否必填项,值:true/false
-* */
-function commonTypeJdg(id,jdgType,tipsText,required){
-    var obj = $("#" + id);
-    var str=obj.val();
-    var validateResult=required?strTypeJdg(str,jdgType):trimStrOT(str)!=''?strTypeJdg(str,jdgType):true;
-    tipsEleOperation(obj,tipsText,validateResult);
-    return validateResult;
-}
-/*
- * 金钱、长度验证
- * jdgType:验证类型,值如下:
- * 数字(digital),非0正整数(pInteger),金钱(money),用户名(username)
- * 密码(password),汉字(chn),固定电话、传真(tel),手机(mobile)
- * 邮箱(mail),日期(date),身份证(ID),非空验证(null)
- * startLen:开始日期
- * endLen:结束日期
- * tipsText:提示文本
- * required:是否必填项,值:true/false
- * */
-function moneyAndLengthJdg(id, jdgType, startLen, endLen, tipsText, required){
-    var obj = $('#' + id);
-    var str = obj.val();    /*获取该对象的值*/
-    var validateResult = false;
-    if(trimStrOT(str) != ''){/*对当前对象去空格之后判断不为空*/
-        if(startLen!=null&&endLen!=null&&startLen<endLen){
-            /*开始 结束长度均不为空 且 开始值小于结束值*/
-            if(typeof str!='string')str += '';
-            var length = str.replace(/[^x00-xff]/g,'01').length;
-            validateResult=(startLen<=length&&length<=endLen)&&strTypeJdg(str,jdgType);
-        }else{
-            validateResult=false;
-        }
-    }else {/*对其是否必填*/
-        validateResult=required?false:true;
-    }
-    tipsEleOperation(obj,tipsText,validateResult);
-    return validateResult;
-}
-/*
-*字符串长度验证
-* startLen:最小长度
-* endLen:最大长度
-* tipsText:提示文本
-* required:是否必填项,值:true/false
-* */
-function commonLengthJdg(id,startLen,endLen,tipsText,required){
-    var obj = $("#" + id);
-    var str=obj.val();
-    var validateResult=false;
-    if (trimStrOT(str)!=''){
-        if(startLen!=null&&endLen!=null&&startLen<endLen){
-            if (typeof str != 'string')str += '';
-            var length=str.replace(/[^x00-xff]/g,'01').length;
-            validateResult=startLen<=length&&length<=endLen;
-        }else{
-            validateResult=false;
-        }
-    }else{
-        validateResult=required?false:true;
-    }
-    tipsEleOperation(obj,tipsText,validateResult);
-    return validateResult;
-}
-/*
-*2个日期前后验证
-* startID:开始日期控件id
-* endID:结束日期控件id
-* tipsText:提示文本
-* required:是否必填项
-* */
-function doubleDateJdg(startID, endID, tipsText,required) {
-    var startDateObj = $("#" + startID);
-    var endDateObj = $("#" + endID);
-    var startDate=trimStrOT(startDateObj.val());
-    var endDate=trimStrOT(endDateObj.val());
-    var validateResult=false;
-    if(startDate!=''&&endDate!=''){
-        var d1 = new Date(startDate.replace(/\-/g, "\/"));
-        var d2 = new Date(endDate.replace(/\-/g, "\/"));
-        validateResult=startDate!=''&&endDate!=''&&d1<d2;
-        tipsEleOperation(startDateObj,tipsText,validateResult);
-    }else{
-        validateResult=required?false:true;
-    }
-    return validateResult;
-}
-/*
- * 重复密码验证
- * pwdID:密码控件id
- * rePwdID:重复密码控件id
- * tipsText:提示文本
- * required:是否必填项
- * */
-function passwordJdg(pwdID,rePwdID,tipsText,required) {
-    var passwordObj = $("#" + pwdID);
-    var rePasswordObj = $("#" + rePwdID);
-    var password=trimStrOT(passwordObj.val());
-    var rePassword=trimStrOT(rePasswordObj.val());
-    var validateResult=false;
-    if(password!=''&&rePassword!=''){
-        validateResult=password===rePassword;
-        tipsEleOperation(rePasswordObj,tipsText,validateResult);
-    }else{
-        validateResult=required?false:true;
-    }
-    return validateResult;
-}
-
-/*对比前后两个值*/
-function compareValJdg(beforeID, afterID){
-    var beforeObj = $("#" + beforeID);
-    var afterObj = $("#" + afterID);
-    var beforeVal = trimStrOT(beforeObj.val());
-    var afterVal = trimStrOT(afterObj.val());
-    if(beforeVal == afterVal){
-        beforeObj.hide();
-    }else{
-        beforeObj.show();
-    }
-}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 709
watero-wechat-web/src/main/webapp/common/admin/js/ueditor.all.min.js


+ 0 - 413
watero-wechat-web/src/main/webapp/common/admin/js/ueditor.config.js

@@ -1,413 +0,0 @@
-/**
- * ueditor完整配置项
- * 可以在这里配置整个编辑器的特性
- */
-/**************************提示********************************
- * 所有被注释的配置项均为UEditor默认值。
- * 修改默认配置请首先确保已经完全明确该参数的真实用途。
- * 主要有两种修改方案,一种是取消此处注释,然后修改成对应参数;另一种是在实例化编辑器时传入对应参数。
- * 当升级编辑器时,可直接使用旧版配置文件替换新版配置文件,不用担心旧版配置文件中因缺少新功能所需的参数而导致脚本报错。
- **************************提示********************************/
-
-(function () {
-
-    /**
-     * 编辑器资源文件根路径。它所表示的含义是:以编辑器实例化页面为当前路径,指向编辑器资源文件(即dialog等文件夹)的路径。
-     * 鉴于很多同学在使用编辑器的时候出现的种种路径问题,此处强烈建议大家使用"相对于网站根目录的相对路径"进行配置。
-     * "相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。
-     * 如果站点中有多个不在同一层级的页面需要实例化编辑器,且引用了同一UEditor的时候,此处的URL可能不适用于每个页面的编辑器。
-     * 因此,UEditor提供了针对不同页面的编辑器可单独配置的根路径,具体来说,在需要实例化编辑器的页面最顶部写上如下代码即可。当然,需要令此处的URL等于对应的配置。
-     * window.UEDITOR_HOME_URL = "/xxxx/xxxx/";
-     */
-    var URL = window.UEDITOR_HOME_URL || getUEBasePath();
-
-    /**
-     * 配置项主体。注意,此处所有涉及到路径的配置别遗漏URL变量。
-     */
-    window.UEDITOR_CONFIG = {
-
-        //为编辑器实例添加一个路径,这个不能被注释
-        UEDITOR_HOME_URL: URL
-
-        // 服务器统一请求接口路径
-        , serverUrl: URL + "php/controller.php"
-
-        //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的从新定义
-        , toolbars: [[
-            'fullscreen', 'source', '|', 'undo', 'redo', '|',
-            'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',
-            'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
-            'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',
-            'directionalityltr', 'directionalityrtl', 'indent', '|',
-            'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',
-            'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',
-            'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|',
-            'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|',
-            'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',
-            'print', 'preview', 'searchreplace', 'help', 'drafts'
-        ]]
-        //当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准
-        //,labelMap:{
-        //    'anchor':'', 'undo':''
-        //}
-
-        //语言配置项,默认是zh-cn。有需要的话也可以使用如下这样的方式来自动多语言切换,当然,前提条件是lang文件夹下存在对应的语言文件:
-        //lang值也可以通过自动获取 (navigator.language||navigator.browserLanguage ||navigator.userLanguage).toLowerCase()
-        //,lang:"zh-cn"
-        //,langPath:URL +"lang/"
-
-        //主题配置项,默认是default。有需要的话也可以使用如下这样的方式来自动多主题切换,当然,前提条件是themes文件夹下存在对应的主题文件:
-        //现有如下皮肤:default
-        //,theme:'default'
-        //,themePath:URL +"themes/"
-
-        //,zIndex : 900     //编辑器层级的基数,默认是900
-
-        //针对getAllHtml方法,会在对应的head标签中增加该编码设置。
-        //,charset:"utf-8"
-
-        //若实例化编辑器的页面手动修改的domain,此处需要设置为true
-        //,customDomain:false
-
-        //常用配置项目
-        //,isShow : true    //默认显示编辑器
-
-        //,textarea:'editorValue' // 提交表单时,服务器获取编辑器提交内容的所用的参数,多实例时可以给容器name属性,会将name给定的值最为每个实例的键值,不用每次实例化的时候都设置这个值
-
-        //,initialContent:'欢迎使用ueditor!'    //初始化编辑器的内容,也可以通过textarea/script给值,看官网例子
-
-        //,autoClearinitialContent:true //是否自动清除编辑器初始内容,注意:如果focus属性设置为true,这个也为真,那么编辑器一上来就会触发导致初始化的内容看不到了
-
-        //,focus:false //初始化时,是否让编辑器获得焦点true或false
-
-        //如果自定义,最好给p标签如下的行高,要不输入中文时,会有跳动感
-        //,initialStyle:'p{line-height:1em}'//编辑器层级的基数,可以用来改变字体等
-
-        //,iframeCssUrl: URL + '/themes/iframe.css' //给编辑器内部引入一个css文件
-
-        //indentValue
-        //首行缩进距离,默认是2em
-        //,indentValue:'2em'
-
-        //,initialFrameWidth:1000  //初始化编辑器宽度,默认1000
-        //,initialFrameHeight:320  //初始化编辑器高度,默认320
-
-        //,readonly : false //编辑器初始化结束后,编辑区域是否是只读的,默认是false
-
-        //,autoClearEmptyNode : true //getContent时,是否删除空的inlineElement节点(包括嵌套的情况)
-
-        //启用自动保存
-        //,enableAutoSave: true
-        //自动保存间隔时间, 单位ms
-        //,saveInterval: 500
-
-        //,fullscreen : false //是否开启初始化时即全屏,默认关闭
-
-        //,imagePopup:true      //图片操作的浮层开关,默认打开
-
-        //,autoSyncData:true //自动同步编辑器要提交的数据
-        //,emotionLocalization:false //是否开启表情本地化,默认关闭。若要开启请确保emotion文件夹下包含官网提供的images表情文件夹
-
-        //粘贴只保留标签,去除标签所有属性
-        //,retainOnlyLabelPasted: false
-
-        //,pasteplain:false  //是否默认为纯文本粘贴。false为不使用纯文本粘贴,true为使用纯文本粘贴
-        //纯文本粘贴模式下的过滤规则
-        //'filterTxtRules' : function(){
-        //    function transP(node){
-        //        node.tagName = 'p';
-        //        node.setStyle();
-        //    }
-        //    return {
-        //        //直接删除及其字节点内容
-        //        '-' : 'script style object iframe embed input select',
-        //        'p': {$:{}},
-        //        'br':{$:{}},
-        //        'div':{'$':{}},
-        //        'li':{'$':{}},
-        //        'caption':transP,
-        //        'th':transP,
-        //        'tr':transP,
-        //        'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP,
-        //        'td':function(node){
-        //            //没有内容的td直接删掉
-        //            var txt = !!node.innerText();
-        //            if(txt){
-        //                node.parentNode.insertAfter(UE.uNode.createText(' &nbsp; &nbsp;'),node);
-        //            }
-        //            node.parentNode.removeChild(node,node.innerText())
-        //        }
-        //    }
-        //}()
-
-        //,allHtmlEnabled:false //提交到后台的数据是否包含整个html字符串
-
-        //insertorderedlist
-        //有序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准
-        //,'insertorderedlist':{
-        //      //自定的样式
-        //        'num':'1,2,3...',
-        //        'num1':'1),2),3)...',
-        //        'num2':'(1),(2),(3)...',
-        //        'cn':'一,二,三....',
-        //        'cn1':'一),二),三)....',
-        //        'cn2':'(一),(二),(三)....',
-        //     //系统自带
-        //     'decimal' : '' ,         //'1,2,3...'
-        //     'lower-alpha' : '' ,    // 'a,b,c...'
-        //     'lower-roman' : '' ,    //'i,ii,iii...'
-        //     'upper-alpha' : '' , lang   //'A,B,C'
-        //     'upper-roman' : ''      //'I,II,III...'
-        //}
-
-        //insertunorderedlist
-        //无序列表的下拉配置,值留空时支持多语言自动识别,若配置值,则以此值为准
-        //,insertunorderedlist : { //自定的样式
-        //    'dash' :'— 破折号', //-破折号
-        //    'dot':' 。 小圆圈', //系统自带
-        //    'circle' : '',  // '○ 小圆圈'
-        //    'disc' : '',    // '● 小圆点'
-        //    'square' : ''   //'■ 小方块'
-        //}
-        //,listDefaultPaddingLeft : '30'//默认的左边缩进的基数倍
-        //,listiconpath : 'http://bs.baidu.com/listicon/'//自定义标号的路径
-        //,maxListLevel : 3 //限制可以tab的级数, 设置-1为不限制
-
-        //,autoTransWordToList:false  //禁止word中粘贴进来的列表自动变成列表标签
-
-        //fontfamily
-        //字体设置 label留空支持多语言自动切换,若配置,则以配置值为准
-        //,'fontfamily':[
-        //    { label:'',name:'songti',val:'宋体,SimSun'},
-        //    { label:'',name:'kaiti',val:'楷体,楷体_GB2312, SimKai'},
-        //    { label:'',name:'yahei',val:'微软雅黑,Microsoft YaHei'},
-        //    { label:'',name:'heiti',val:'黑体, SimHei'},
-        //    { label:'',name:'lishu',val:'隶书, SimLi'},
-        //    { label:'',name:'andaleMono',val:'andale mono'},
-        //    { label:'',name:'arial',val:'arial, helvetica,sans-serif'},
-        //    { label:'',name:'arialBlack',val:'arial black,avant garde'},
-        //    { label:'',name:'comicSansMs',val:'comic sans ms'},
-        //    { label:'',name:'impact',val:'impact,chicago'},
-        //    { label:'',name:'timesNewRoman',val:'times new roman'}
-        //]
-
-        //fontsize
-        //字号
-        //,'fontsize':[10, 11, 12, 14, 16, 18, 20, 24, 36]
-
-        //paragraph
-        //段落格式 值留空时支持多语言自动识别,若配置,则以配置值为准
-        //,'paragraph':{'p':'', 'h1':'', 'h2':'', 'h3':'', 'h4':'', 'h5':'', 'h6':''}
-
-        //rowspacingtop
-        //段间距 值和显示的名字相同
-        //,'rowspacingtop':['5', '10', '15', '20', '25']
-
-        //rowspacingBottom
-        //段间距 值和显示的名字相同
-        //,'rowspacingbottom':['5', '10', '15', '20', '25']
-
-        //lineheight
-        //行内间距 值和显示的名字相同
-        //,'lineheight':['1', '1.5','1.75','2', '3', '4', '5']
-
-        //customstyle
-        //自定义样式,不支持国际化,此处配置值即可最后显示值
-        //block的元素是依据设置段落的逻辑设置的,inline的元素依据BIU的逻辑设置
-        //尽量使用一些常用的标签
-        //参数说明
-        //tag 使用的标签名字
-        //label 显示的名字也是用来标识不同类型的标识符,注意这个值每个要不同,
-        //style 添加的样式
-        //每一个对象就是一个自定义的样式
-        //,'customstyle':[
-        //    {tag:'h1', name:'tc', label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'},
-        //    {tag:'h1', name:'tl',label:'', style:'border-bottom:#ccc 2px solid;padding:0 4px 0 0;margin:0 0 10px 0;'},
-        //    {tag:'span',name:'im', label:'', style:'font-style:italic;font-weight:bold'},
-        //    {tag:'span',name:'hi', label:'', style:'font-style:italic;font-weight:bold;color:rgb(51, 153, 204)'}
-        //]
-
-        //打开右键菜单功能
-        //,enableContextMenu: true
-        //右键菜单的内容,可以参考plugins/contextmenu.js里边的默认菜单的例子,label留空支持国际化,否则以此配置为准
-        //,contextMenu:[
-        //    {
-        //        label:'',       //显示的名称
-        //        cmdName:'selectall',//执行的command命令,当点击这个右键菜单时
-        //        //exec可选,有了exec就会在点击时执行这个function,优先级高于cmdName
-        //        exec:function () {
-        //            //this是当前编辑器的实例
-        //            //this.ui._dialogs['inserttableDialog'].open();
-        //        }
-        //    }
-        //]
-
-        //快捷菜单
-        //,shortcutMenu:["fontfamily", "fontsize", "bold", "italic", "underline", "forecolor", "backcolor", "insertorderedlist", "insertunorderedlist"]
-
-        //elementPathEnabled
-        //是否启用元素路径,默认是显示
-        //,elementPathEnabled : true
-
-        //wordCount
-        //,wordCount:true          //是否开启字数统计
-        //,maximumWords:10000       //允许的最大字符数
-        //字数统计提示,{#count}代表当前字数,{#leave}代表还可以输入多少字符数,留空支持多语言自动切换,否则按此配置显示
-        //,wordCountMsg:''   //当前已输入 {#count} 个字符,您还可以输入{#leave} 个字符
-        //超出字数限制提示  留空支持多语言自动切换,否则按此配置显示
-        //,wordOverFlowMsg:''    //<span style="color:red;">你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存!</span>
-
-        //tab
-        //点击tab键时移动的距离,tabSize倍数,tabNode什么字符做为单位
-        //,tabSize:4
-        //,tabNode:'&nbsp;'
-
-        //removeFormat
-        //清除格式时可以删除的标签和属性
-        //removeForamtTags标签
-        //,removeFormatTags:'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var'
-        //removeFormatAttributes属性
-        //,removeFormatAttributes:'class,style,lang,width,height,align,hspace,valign'
-
-        //undo
-        //可以最多回退的次数,默认20
-        //,maxUndoCount:20
-        //当输入的字符数超过该值时,保存一次现场
-        //,maxInputCount:1
-
-        //autoHeightEnabled
-        // 是否自动长高,默认true
-        //,autoHeightEnabled:true
-
-        //scaleEnabled
-        //是否可以拉伸长高,默认true(当开启时,自动长高失效)
-        //,scaleEnabled:false
-        //,minFrameWidth:800    //编辑器拖动时最小宽度,默认800
-        //,minFrameHeight:220  //编辑器拖动时最小高度,默认220
-
-        //autoFloatEnabled
-        //是否保持toolbar的位置不动,默认true
-        //,autoFloatEnabled:true
-        //浮动时工具栏距离浏览器顶部的高度,用于某些具有固定头部的页面
-        //,topOffset:30
-        //编辑器底部距离工具栏高度(如果参数大于等于编辑器高度,则设置无效)
-        //,toolbarTopOffset:400
-
-        //pageBreakTag
-        //分页标识符,默认是_ueditor_page_break_tag_
-        //,pageBreakTag:'_ueditor_page_break_tag_'
-
-        //autotypeset
-        //自动排版参数
-        //,autotypeset: {
-        //    mergeEmptyline: true,           //合并空行
-        //    removeClass: true,              //去掉冗余的class
-        //    removeEmptyline: false,         //去掉空行
-        //    textAlign:"left",               //段落的排版方式,可以是 left,right,center,justify 去掉这个属性表示不执行排版
-        //    imageBlockLine: 'center',       //图片的浮动方式,独占一行剧中,左右浮动,默认: center,left,right,none 去掉这个属性表示不执行排版
-        //    pasteFilter: false,             //根据规则过滤没事粘贴进来的内容
-        //    clearFontSize: false,           //去掉所有的内嵌字号,使用编辑器默认的字号
-        //    clearFontFamily: false,         //去掉所有的内嵌字体,使用编辑器默认的字体
-        //    removeEmptyNode: false,         // 去掉空节点
-        //    //可以去掉的标签
-        //    removeTagNames: {标签名字:1},
-        //    indent: false,                  // 行首缩进
-        //    indentValue : '2em',            //行首缩进的大小
-        //    bdc2sb: false,
-        //    tobdc: false
-        //}
-
-        //tableDragable
-        //表格是否可以拖拽
-        //,tableDragable: true
-
-        //,disabledTableInTable:true  //禁止表格嵌套
-
-        //sourceEditor
-        //源码的查看方式,codemirror 是代码高亮,textarea是文本框,默认是codemirror
-        //注意默认codemirror只能在ie8+和非ie中使用
-        //,sourceEditor:"codemirror"
-        //如果sourceEditor是codemirror,还用配置一下两个参数
-        //codeMirrorJsUrl js加载的路径,默认是 URL + "third-party/codemirror/codemirror.js"
-        //,codeMirrorJsUrl:URL + "third-party/codemirror/codemirror.js"
-        //codeMirrorCssUrl css加载的路径,默认是 URL + "third-party/codemirror/codemirror.css"
-        //,codeMirrorCssUrl:URL + "third-party/codemirror/codemirror.css"
-        //编辑器初始化完成后是否进入源码模式,默认为否。
-        //,sourceEditorFirst:false
-
-        //iframeUrlMap
-        //dialog内容的路径 ~会被替换成URL,垓属性一旦打开,将覆盖所有的dialog的默认路径
-        //,iframeUrlMap:{
-        //    'anchor':'~/dialogs/anchor/anchor.html',
-        //}
-
-        //webAppKey 百度应用的APIkey,每个站长必须首先去百度官网注册一个key后方能正常使用app功能,注册介绍,http://app.baidu.com/static/cms/getapikey.html
-        //, webAppKey: ""
-    };
-
-    function getUEBasePath(docUrl, confUrl) {
-
-        return getBasePath(docUrl || self.document.URL || self.location.href, confUrl || getConfigFilePath());
-
-    }
-
-    function getConfigFilePath() {
-
-        var configPath = document.getElementsByTagName('script');
-
-        return configPath[ configPath.length - 1 ].src;
-
-    }
-
-    function getBasePath(docUrl, confUrl) {
-
-        var basePath = confUrl;
-
-
-        if (/^(\/|\\\\)/.test(confUrl)) {
-
-            basePath = /^.+?\w(\/|\\\\)/.exec(docUrl)[0] + confUrl.replace(/^(\/|\\\\)/, '');
-
-        } else if (!/^[a-z]+:/i.test(confUrl)) {
-
-            docUrl = docUrl.split("#")[0].split("?")[0].replace(/[^\\\/]+$/, '');
-
-            basePath = docUrl + "" + confUrl;
-
-        }
-
-        return optimizationPath(basePath);
-
-    }
-
-    function optimizationPath(path) {
-
-        var protocol = /^[a-z]+:\/\//.exec(path)[ 0 ],
-            tmp = null,
-            res = [];
-
-        path = path.replace(protocol, "").split("?")[0].split("#")[0];
-
-        path = path.replace(/\\/g, '/').split(/\//);
-
-        path[ path.length - 1 ] = "";
-
-        while (path.length) {
-
-            if (( tmp = path.shift() ) === "..") {
-                res.pop();
-            } else if (tmp !== ".") {
-                res.push(tmp);
-            }
-
-        }
-
-        return protocol + res.join("/");
-
-    }
-
-    window.UE = {
-        getUEBasePath: getUEBasePath
-    };
-
-})();

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 13
watero-wechat-web/src/main/webapp/common/admin/lib/DD_belatedPNG_0.0.8a-min.js


BIN
watero-wechat-web/src/main/webapp/common/admin/lib/Highcharts/4.1.7/gfx/vml-radial-gradient.png


BIN
watero-wechat-web/src/main/webapp/common/admin/lib/Highcharts/4.1.7/graphics/meteogram-symbols-30px.png


BIN
watero-wechat-web/src/main/webapp/common/admin/lib/Highcharts/4.1.7/graphics/skies.jpg


+ 0 - 0
watero-wechat-web/src/main/webapp/common/admin/lib/Highcharts/4.1.7/graphics/snow.png


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels