sysRegister.jsp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <%@ page contentType="text/html;charset=UTF-8" %>
  2. <%@ page import="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"%>
  3. <%@ include file="/webpage/include/taglib.jsp"%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta name="decorator" content="ani"/>
  8. <title>${fns:getConfig('productName')} 登录</title>
  9. <script>
  10. if (window.top !== window.self) {
  11. window.top.location = window.location;
  12. }
  13. </script>
  14. <script type="text/javascript">
  15. $(document).ready(function() {
  16. $("#loginForm").validate({
  17. rules: {
  18. validateCode: {remote: "${pageContext.request.contextPath}/servlet/validateCodeServlet"}
  19. },
  20. messages: {
  21. username: {required: "请填写用户名."},password: {required: "请填写密码."},
  22. validateCode: {remote: "验证码不正确.", required: "请填写验证码."}
  23. },
  24. errorLabelContainer: "#messageBox",
  25. errorPlacement: function(error, element) {
  26. error.appendTo($("#loginError").parent());
  27. }
  28. });
  29. });
  30. // 如果在框架或在对话框中,则弹出提示并跳转到首页
  31. if(self.frameElement && self.frameElement.tagName == "IFRAME" || $('#left').length > 0 || $('.jbox').length > 0){
  32. alert('未登录或登录超时。请重新登录,谢谢!');
  33. top.location = "${ctx}";
  34. }
  35. </script>
  36. <script type="text/javascript">
  37. $(document).ready(function() {
  38. $("#inputForm").validate({
  39. rules: {
  40. loginName: {remote: "${ctx}/sys/user/validateLoginName"},
  41. mobile: {remote: "${ctx}/sys/user/validateMobile"},
  42. randomCode: {
  43. remote:{
  44. url:"${ctx}/sys/register/validateMobileCode",
  45. data:{
  46. mobile:function(){
  47. return $("#tel").val();
  48. }
  49. }
  50. }
  51. }
  52. },
  53. messages: {
  54. confirmNewPassword: {equalTo: "输入与上面相同的密码"},
  55. ck1: {required: "必须接受用户协议."},
  56. loginName: {remote: "此用户名已经被注册!", required: "用户名不能为空."},
  57. mobile:{remote: "此手机号已经被注册!", required: "手机号不能为空."},
  58. randomCode:{remote: "验证码不正确!", required: "验证码不能为空."}
  59. },
  60. submitHandler: function(form){
  61. jp.loading();
  62. form.submit();
  63. },
  64. errorContainer: "#messageBox",
  65. errorPlacement: function(error, element) {
  66. $("#messageBox").text("输入有误,请先更正。");
  67. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  68. error.appendTo(element.parent().parent());
  69. } else {
  70. error.insertAfter(element);
  71. }
  72. }
  73. });
  74. $("#resetForm").validate({
  75. rules: {
  76. mobile: {remote: "${ctx}/sys/user/validateMobileExist"}
  77. },
  78. messages: {
  79. mobile:{remote: "此手机号未注册!", required: "手机号不能为空."}
  80. },
  81. submitHandler: function(form){
  82. jp.loading();
  83. form.submit();
  84. },
  85. errorContainer: "#messageBox",
  86. errorPlacement: function(error, element) {
  87. $("#messageBox").text("输入有误,请先更正。");
  88. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  89. error.appendTo(element.parent().parent());
  90. } else {
  91. error.insertAfter(element);
  92. }
  93. }
  94. });
  95. // 手机号码验证
  96. jQuery.validator.addMethod("isMobile", function(value, element) {
  97. var length = value.length;
  98. var mobile = /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})$/;
  99. return (length == 11 && mobile.test(value));
  100. }, "请正确填写您的手机号码");
  101. $('#sendPassBtn').click(function () {
  102. if($("#tel_resetpass").val()=="" || $("#tel_resetpass-error").text()!=""){
  103. top.layer.alert("请输入有效的注册手机号码!", {icon: 0});//讨厌的白色字体问题
  104. return;
  105. }
  106. $("#sendPassBtn").attr("disabled", true);
  107. $.get("${ctx}/sys/user/resetPassword?mobile="+$("#tel_resetpass").val(),function(data){
  108. if(data.success == false){
  109. top.layer.alert(data.msg, {icon: 0});//讨厌的白色字体问题
  110. //alert(data.msg);
  111. $("#sendPassBtn").html("重新发送").removeAttr("disabled");
  112. clearInterval(countdown);
  113. }
  114. });
  115. var count = 60;
  116. var countdown = setInterval(CountDown, 1000);
  117. function CountDown() {
  118. $("#sendPassBtn").attr("disabled", true);
  119. $("#sendPassBtn").html("等待 " + count + "秒!");
  120. if (count == 0) {
  121. $("#sendPassBtn").html("重新发送").removeAttr("disabled");
  122. clearInterval(countdown);
  123. }
  124. count--;
  125. }
  126. }) ;
  127. $('#sendCodeBtn').click(function () {
  128. if($("#tel").val()=="" || $("#tel-error").text()!=""){
  129. top.layer.alert("请输入有效的注册手机号码!", {icon: 0});//讨厌的白色字体问题
  130. return;
  131. }
  132. $("#sendCodeBtn").attr("disabled", true);
  133. $.get("${ctx}/sys/register/getRegisterCode?mobile="+$("#tel").val(),function(data){
  134. if(data.success == false){
  135. //top.layer.alert(data.msg, {icon: 0});讨厌的白色字体问题
  136. alert(data.msg);
  137. $("#sendCodeBtn").html("重新发送").removeAttr("disabled");
  138. clearInterval(countdown);
  139. }
  140. });
  141. var count = 60;
  142. var countdown = setInterval(CountDown, 1000);
  143. function CountDown() {
  144. $("#sendCodeBtn").attr("disabled", true);
  145. $("#sendCodeBtn").html("等待 " + count + "秒!");
  146. if (count == 0) {
  147. $("#sendCodeBtn").html("重新发送").removeAttr("disabled");
  148. clearInterval(countdown);
  149. }
  150. count--;
  151. }
  152. }) ;
  153. });
  154. </script>
  155. </head>
  156. <body>
  157. <div class="login-page">
  158. <div class="row">
  159. <div class="col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4">
  160. <img class="img-circle" src="${ctxStatic}/common/images/flat-avatar.png" class="user-avatar" />
  161. <h1>Jeeplus</h1>
  162. <sys:message content="${message}" showType="1"/>
  163. <form:form id="inputForm" modelAttribute="user" action="${ctx}/sys/register/registerUser" method="post" class="form-group form-horizontal">
  164. <input type="hidden" value="wangba" name="roleName"><!-- 默认注册用户都是网吧管理员 -->
  165. <div class="form-content">
  166. <div class="form-group">
  167. <input id="tel" name="mobile" type="text" value="" maxlength="11" minlength="11" class="form-control input-underline input-lg required isMobile" placeholder="手机号"/>
  168. </div>
  169. <div class=" form-group">
  170. <div class="col-sm-9">
  171. <input id="code" name="randomCode" type="text" value="" maxlength="4" minlength="4" class="form-control input-underline input-lg required" placeholder="验证码"/>
  172. </div>
  173. <div class="col-sm-3">
  174. <button type="submit" class="btn btn-default" id="sendCodeBtn">获取验证码!</button>
  175. </div>
  176. </div>
  177. <div class="form-group">
  178. <input id="userId" name="loginName" type="text" value="${user.loginName }" maxlength="20" minlength="3" class="form-control input-underline input-lg required" placeholder="用户名" />
  179. </div>
  180. <div class="form-group">
  181. <input id="newPassword" name="password" type="password" value="" maxlength="20" minlength="3" class="form-control input-underline input-lg required" placeholder="密码" />
  182. </div>
  183. <div class="form-group">
  184. <input id="confirmNewPassword" name="confirmNewPassword" type="password" value="" maxlength="20" minlength="3" class="form-control input-underline input-lg required" equalTo="#newPassword" placeholder="重复密码" />
  185. </div>
  186. <div class="form-group">
  187. <label class="block">
  188. <input name="ck1" type="checkbox" />
  189. <span class="lbl">
  190. 我接受
  191. <a href="#"><font color="white">《JeePlus用户注册协议》</font></a>
  192. </span>
  193. <label id="ck1-error" class="error" for="ck1" style="display: none;">必须接受用户协议</label>
  194. </label>
  195. <ul class="pull-right btn btn-info btn-circle" style="background-color:white;height:45px;width:46px">
  196. <li class="dropdown color-picker" >
  197. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
  198. <span><i class="fa fa-circle"></i></span>
  199. </a>
  200. <ul class="dropdown-menu pull-right animated fadeIn" role="menu">
  201. <li class="padder-h-xs">
  202. <table class="table color-swatches-table text-center no-m-b">
  203. <tr>
  204. <td class="text-center colorr">
  205. <a href="#" data-theme="blue" class="theme-picker">
  206. <i class="fa fa-circle blue-base"></i>
  207. </a>
  208. </td>
  209. <td class="text-center colorr">
  210. <a href="#" data-theme="green" class="theme-picker">
  211. <i class="fa fa-circle green-base"></i>
  212. </a>
  213. </td>
  214. <td class="text-center colorr">
  215. <a href="#" data-theme="red" class="theme-picker">
  216. <i class="fa fa-circle red-base"></i>
  217. </a>
  218. </td>
  219. </tr>
  220. <tr>
  221. <td class="text-center colorr">
  222. <a href="#" data-theme="purple" class="theme-picker">
  223. <i class="fa fa-circle purple-base"></i>
  224. </a>
  225. </td>
  226. <td class="text-center color">
  227. <a href="#" data-theme="midnight-blue" class="theme-picker">
  228. <i class="fa fa-circle midnight-blue-base"></i>
  229. </a>
  230. </td>
  231. <td class="text-center colorr">
  232. <a href="#" data-theme="lynch" class="theme-picker">
  233. <i class="fa fa-circle lynch-base"></i>
  234. </a>
  235. </td>
  236. </tr>
  237. </table>
  238. </li>
  239. </ul>
  240. </li>
  241. </ul>
  242. </div>
  243. <input type="reset" class="btn btn-white btn-outline btn-lg btn-rounded progress-login" value="重置">
  244. &nbsp;
  245. <input type="submit" class="btn btn-white btn-outline btn-lg btn-rounded progress-login" value="注册">
  246. </div>
  247. </form:form>
  248. <div class="form-values center">
  249. <a href="${ctx }/login" data-target="#login-box" class="">
  250. <font color=" #A73438"><i class="ace-icon fa fa-arrow-left"></i>
  251. 返回登录
  252. </font>
  253. </a>
  254. </div>
  255. </div>
  256. </div>
  257. </div>
  258. <script>
  259. $(function(){
  260. $('.theme-picker').click(function() {
  261. changeTheme($(this).attr('data-theme'));
  262. });
  263. });
  264. function changeTheme(theme) {
  265. $('<link>')
  266. .appendTo('head')
  267. .attr({type : 'text/css', rel : 'stylesheet'})
  268. .attr('href', '${ctxStatic}/common/css/app-'+theme+'.css');
  269. //$.get('api/change-theme?theme='+theme);
  270. $.get('${pageContext.request.contextPath}/theme/'+theme+'?url='+window.top.location.href,function(result){ });
  271. }
  272. </script>
  273. <style>
  274. li.color-picker i {
  275. font-size: 24px;
  276. line-height: 30px;
  277. }
  278. .red-base {
  279. color: #D24D57;
  280. }
  281. .blue-base {
  282. color: #3CA2E0;
  283. }
  284. .green-base {
  285. color: #27ae60;
  286. }
  287. .purple-base {
  288. color: #957BBD;
  289. }
  290. .midnight-blue-base {
  291. color: #2c3e50;
  292. }
  293. .lynch-base {
  294. color: #6C7A89;
  295. }
  296. </style>
  297. </body>
  298. </html>