login.jsp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  4. <%
  5. String path = request.getContextPath();
  6. %>
  7. <!DOCTYPE html>
  8. <html lang="en">
  9. <head>
  10. <title>${pd.SYSNAME}</title>
  11. <meta charset="UTF-8" />
  12. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  13. <meta http-equiv="Access-Control-Allow-Origin" content="*" />
  14. <link rel="stylesheet" href="static/login/bootstrap.min.css" />
  15. <link rel="stylesheet" href="static/login/css/camera.css" />
  16. <link rel="stylesheet" href="static/login/bootstrap-responsive.min.css" />
  17. <link rel="stylesheet" href="static/login/matrix-login.css" />
  18. <link href="static/login/font-awesome.css" rel="stylesheet" />
  19. <script type="text/javascript" src="static/login/js/jquery-1.5.1.min.js"></script>
  20. <script src="static/js/myjs/getTop.js"></script>
  21. <!-- 软键盘控件start -->
  22. <link href="static/login/keypad/css/framework/form.css" rel="stylesheet" type="text/css"/>
  23. <!-- 软键盘控件end -->
  24. <style type="text/css">
  25. /*
  26. body{
  27. -webkit-transform: rotate(-3deg);
  28. -moz-transform: rotate(-3deg);
  29. -o-transform: rotate(-3deg);
  30. padding-top:20px;
  31. }
  32. */
  33. .cavs{
  34. z-index:1;
  35. position: fixed;
  36. width:95%;
  37. margin-left: 20px;
  38. margin-right: 20px;
  39. }
  40. </style>
  41. <script>
  42. //window.setTimeout(showfh,3000);
  43. var timer;
  44. function showfh(){
  45. fhi = 1;
  46. //关闭提示晃动屏幕,注释掉这句话即可
  47. //timer = setInterval(xzfh2, 10);
  48. };
  49. var current = 0;
  50. function xzfh(){
  51. current = (current)%360;
  52. document.body.style.transform = 'rotate('+current+'deg)';
  53. current ++;
  54. if(current>360){current = 0;}
  55. };
  56. var fhi = 1;
  57. var current2 = 1;
  58. function xzfh2(){
  59. if(fhi>50){
  60. document.body.style.transform = 'rotate(0deg)';
  61. clearInterval(timer);
  62. return;
  63. }
  64. current = (current2)%360;
  65. document.body.style.transform = 'rotate('+current+'deg)';
  66. current ++;
  67. if(current2 == 1){current2 = -1;}else{current2 = 1;}
  68. fhi++;
  69. };
  70. </script>
  71. </head>
  72. <body>
  73. <c:if test="${pd.isMusic == 'yes' }">
  74. <div style="display: none">
  75. <audio src="static/login/music/fh1.mp3" autoplay=""></audio>
  76. </div>
  77. </c:if>
  78. <canvas class="cavs"></canvas>
  79. <div style="width:100%;text-align: center;margin: 0 auto;position: absolute;background-image:url('static/login/bg.jpg');
  80. height:100%;background-repeat: no-repeat;background-position: center;background-size: cover;">
  81. <!-- 登录 -->
  82. <div id="windows1">
  83. <div id="loginbox" >
  84. <form action="" method="post" name="loginForm" id="loginForm">
  85. <div class="control-group normal_text">
  86. <h3>
  87. <font face="微软雅黑" color="white"><span id="sysname">养 护 计 划 管 理 系 统</span></font>
  88. <img src="static/login/line.png" alt="Logo" />
  89. </h3>
  90. </div>
  91. <div class="control-group">
  92. <div class="controls">
  93. <div class="main_input_box">
  94. <span class="add-on bg_lg">
  95. <i><img height="37" src="static/login/user.png" /></i>
  96. </span><input type="text" name="loginname" id="loginname" value="" placeholder="请输入用户名" />
  97. </div>
  98. </div>
  99. </div>
  100. <div class="control-group">
  101. <div class="controls">
  102. <div class="main_input_box">
  103. <span class="add-on bg_ly">
  104. <i><img height="37" src="static/login/suo.png" /></i>
  105. </span><input type="password" name="password" id="password" placeholder="请输入密码" class="keypad" keypadMode="full" allowKeyboard="true" value=""/>
  106. </div>
  107. </div>
  108. </div>
  109. <div style="float:right;padding-right:10%;">
  110. <div style="float: left;margin-top:3px;margin-right:2px;">
  111. <font color="white">记住密码</font>
  112. </div>
  113. <div style="float: left;">
  114. <input name="form-field-checkbox" id="saveid" type="checkbox"
  115. onclick="savePaw();" style="padding-top:0px;" />
  116. </div>
  117. </div>
  118. <div class="form-actions">
  119. <div style="width:86%;padding-left:8%;">
  120. <div style="float: left;padding-top:2px;">
  121. <i><img src="static/login/yan.png" /></i>
  122. </div>
  123. <div style="float: left;" class="codediv">
  124. <input type="text" name="code" id="code" class="login_code"
  125. style="height:16px; padding-top:4px;" />
  126. </div>
  127. <div style="float: left;">
  128. <i><img style="height:22px;" id="codeImg" alt="点击更换" title="点击更换" src="" /></i>
  129. </div>
  130. <%-- <c:if test="${pd.isZhuce == 'yes' }"> --%>
  131. <!-- <span class="pull-right" style="padding-right:3%;"><a href="javascript:changepage(1);" class="btn btn-success">注册</a></span> -->
  132. <%-- </c:if> --%>
  133. <span class="pull-right"><a onclick="severCheck();" class="flip-link btn btn-info" id="to-recover">登录</a></span>
  134. </div>
  135. </div>
  136. </form>
  137. <div class="controls">
  138. <div class="main_input_box">
  139. <!--<font color="white"><span id="nameerr">Copyright © </span></font>-->
  140. </div>
  141. </div>
  142. </div>
  143. </div>
  144. <!-- 注册 -->
  145. <div id="windows2" style="display: none;">
  146. <div id="loginbox">
  147. <form action="" method="post" name="loginForm" id="loginForm">
  148. <div class="control-group normal_text">
  149. <h3>
  150. <p style="font-size:18px;">养护计划管理系统</p>
  151. <img src="static/login/line.png" alt="Logo" />
  152. </h3>
  153. </div>
  154. <div class="control-group">
  155. <div class="controls">
  156. <div class="main_input_box">
  157. <span class="add-on bg_lg">
  158. <i>用户</i>
  159. </span><input type="text" name="USERNAME" id="USERNAME" value="" placeholder="请输入用户名" />
  160. </div>
  161. </div>
  162. </div>
  163. <div class="control-group">
  164. <div class="controls">
  165. <div class="main_input_box">
  166. <span class="add-on bg_ly">
  167. <i>密码</i>
  168. </span><input type="password" name="PASSWORD" id="PASSWORD" placeholder="请输入密码" class="keypad" keypadMode="full" allowKeyboard="true" value=""/>
  169. </div>
  170. </div>
  171. </div>
  172. <div class="control-group">
  173. <div class="controls">
  174. <div class="main_input_box">
  175. <span class="add-on bg_ly">
  176. <i>重输</i>
  177. </span><input type="password" name="chkpwd" id="chkpwd" placeholder="请重新输入密码" class="keypad" keypadMode="full" allowKeyboard="true" value=""/>
  178. </div>
  179. </div>
  180. </div>
  181. <div class="control-group">
  182. <div class="controls">
  183. <div class="main_input_box">
  184. <span class="add-on bg_lg">
  185. <i>姓名</i>
  186. </span><input type="text" name="NAME" id="name" value="" placeholder="请输入姓名" />
  187. </div>
  188. </div>
  189. </div>
  190. <div class="control-group">
  191. <div class="controls">
  192. <div class="main_input_box">
  193. <span class="add-on bg_lg">
  194. <i>邮箱</i>
  195. </span><input type="text" name="EMAIL" id="EMAIL" value="" placeholder="请输入邮箱" />
  196. </div>
  197. </div>
  198. </div>
  199. <div class="form-actions">
  200. <div style="width:86%;padding-left:8%;">
  201. <div style="float: left;padding-top:2px;">
  202. <i><img src="static/login/yan.png" /></i>
  203. </div>
  204. <div style="float: left;" class="codediv">
  205. <input type="text" name="rcode" id="rcode" class="login_code"
  206. style="height:16px; padding-top:4px;" />
  207. </div>
  208. <div style="float: left;">
  209. <i><img style="height:22px;" id="zcodeImg" alt="点击更换" title="点击更换" src="" /></i>
  210. </div>
  211. <span class="pull-right" style="padding-right:3%;"><a href="javascript:changepage(2);" class="btn btn-success">取消</a></span>
  212. <span class="pull-right"><a onclick="register();" class="flip-link btn btn-info" id="to-recover">提交</a></span>
  213. </div>
  214. </div>
  215. </form>
  216. <div class="controls">
  217. <div class="main_input_box">
  218. <!--<font color="white"><span id="nameerr">Copyright © </span></font>-->
  219. </div>
  220. </div>
  221. </div>
  222. </div>
  223. </div>
  224. <!-- <div id="templatemo_banner_slide" class="container_wapper">
  225. <div class="camera_wrap camera_emboss" id="camera_slide">
  226. 背景图片
  227. <c:choose>
  228. <c:when test="${not empty pd.listImg}">
  229. <c:forEach items="${pd.listImg}" var="var" varStatus="vs">
  230. <div data-src="static/login/images/${var.FILEPATH }"></div>
  231. </c:forEach>
  232. </c:when>
  233. <c:otherwise>
  234. <div data-src="static/login/images/banner_slide_01.jpg"></div>
  235. <div data-src="static/login/images/banner_slide_02.jpg"></div>
  236. <div data-src="static/login/images/banner_slide_03.jpg"></div>
  237. <div data-src="static/login/images/banner_slide_04.jpg"></div>
  238. <div data-src="static/login/images/banner_slide_05.jpg"></div>
  239. </c:otherwise>
  240. </c:choose>
  241. </div>
  242. </div>
  243. -->
  244. <script type="text/javascript">
  245. //服务器校验
  246. function severCheck(){
  247. if(check()){
  248. var loginname = $("#loginname").val();
  249. var password = $("#password").val();
  250. var code = "qq313596790fh"+loginname+",fh,"+password+"QQ978336446fh"+",fh,"+$("#code").val();
  251. $.ajax({
  252. type: "POST",
  253. url: 'login_login',
  254. data: {KEYDATA:code,tm:new Date().getTime()},
  255. dataType:'json',
  256. cache: false,
  257. success: function(data){
  258. if("success" == data.result){
  259. saveCookie();
  260. window.location.href="main/index";
  261. }else if("usererror" == data.result){
  262. $("#loginname").tips({
  263. side : 1,
  264. msg : "用户名或密码有误",
  265. bg : '#FF5080',
  266. time : 15
  267. });
  268. showfh();
  269. $("#loginname").focus();
  270. }else if("codeerror" == data.result){
  271. $("#code").tips({
  272. side : 1,
  273. msg : "验证码输入有误",
  274. bg : '#FF5080',
  275. time : 15
  276. });
  277. showfh();
  278. $("#code").focus();
  279. }else{
  280. $("#loginname").tips({
  281. side : 1,
  282. msg : "缺少参数",
  283. bg : '#FF5080',
  284. time : 15
  285. });
  286. showfh();
  287. $("#loginname").focus();
  288. }
  289. }
  290. });
  291. }
  292. }
  293. $(document).ready(function() {
  294. changeCode1();
  295. $("#codeImg").bind("click", changeCode1);
  296. $("#zcodeImg").bind("click", changeCode2);
  297. });
  298. //键盘回车事件,执行登录
  299. $(document).keyup(function(event) {
  300. if (event.keyCode == 13) {
  301. $("#to-recover").trigger("click");
  302. }
  303. });
  304. function genTimestamp() {
  305. var time = new Date();
  306. return time.getTime();
  307. }
  308. function changeCode1() {
  309. $("#codeImg").attr("src", "code.do?t=" + genTimestamp());
  310. }
  311. function changeCode2() {
  312. $("#zcodeImg").attr("src", "code.do?t=" + genTimestamp());
  313. }
  314. //客户端校验
  315. function check() {
  316. if ($("#loginname").val() == "") {
  317. $("#loginname").tips({
  318. side : 2,
  319. msg : '用户名不得为空',
  320. bg : '#AE81FF',
  321. time : 3
  322. });
  323. showfh();
  324. $("#loginname").focus();
  325. return false;
  326. } else {
  327. $("#loginname").val(jQuery.trim($('#loginname').val()));
  328. }
  329. if ($("#password").val() == "") {
  330. $("#password").tips({
  331. side : 2,
  332. msg : '密码不得为空',
  333. bg : '#AE81FF',
  334. time : 3
  335. });
  336. showfh();
  337. $("#password").focus();
  338. return false;
  339. }
  340. if ($("#code").val() == "") {
  341. $("#code").tips({
  342. side : 1,
  343. msg : '验证码不得为空',
  344. bg : '#AE81FF',
  345. time : 3
  346. });
  347. showfh();
  348. $("#code").focus();
  349. return false;
  350. }
  351. $("#loginbox").tips({
  352. side : 1,
  353. msg : '正在登录 , 请稍后 ...',
  354. bg : '#68B500',
  355. time : 10
  356. });
  357. return true;
  358. }
  359. function savePaw() {
  360. if (!$("#saveid").attr("checked")) {
  361. $.cookie('loginname', '', {
  362. expires : -1
  363. });
  364. $.cookie('password', '', {
  365. expires : -1
  366. });
  367. $("#loginname").val('');
  368. $("#password").val('');
  369. }
  370. }
  371. function saveCookie() {
  372. if ($("#saveid").attr("checked")) {
  373. $.cookie('loginname', $("#loginname").val(), {
  374. expires : 7
  375. });
  376. $.cookie('password', $("#password").val(), {
  377. expires : 7
  378. });
  379. }
  380. }
  381. jQuery(function() {
  382. var loginname = $.cookie('loginname');
  383. var password = $.cookie('password');
  384. if (typeof(loginname) != "undefined"
  385. && typeof(password) != "undefined") {
  386. $("#loginname").val(loginname);
  387. $("#password").val(password);
  388. $("#saveid").attr("checked", true);
  389. $("#code").focus();
  390. }
  391. });
  392. //登录注册页面切换
  393. function changepage(value) {
  394. if(value == 1){
  395. $("#windows1").hide();
  396. $("#windows2").show();
  397. changeCode2();
  398. }else{
  399. $("#windows2").hide();
  400. $("#windows1").show();
  401. changeCode1();
  402. }
  403. }
  404. //注册
  405. function rcheck(){
  406. if($("#USERNAME").val()==""){
  407. $("#USERNAME").tips({
  408. side:3,
  409. msg:'输入用户名',
  410. bg:'#AE81FF',
  411. time:2
  412. });
  413. $("#USERNAME").focus();
  414. $("#USERNAME").val('');
  415. return false;
  416. }else{
  417. $("#USERNAME").val(jQuery.trim($('#USERNAME').val()));
  418. }
  419. if($("#PASSWORD").val()==""){
  420. $("#PASSWORD").tips({
  421. side:3,
  422. msg:'输入密码',
  423. bg:'#AE81FF',
  424. time:2
  425. });
  426. $("#PASSWORD").focus();
  427. return false;
  428. }
  429. if($("#PASSWORD").val()!=$("#chkpwd").val()){
  430. $("#chkpwd").tips({
  431. side:3,
  432. msg:'两次密码不相同',
  433. bg:'#AE81FF',
  434. time:3
  435. });
  436. $("#chkpwd").focus();
  437. return false;
  438. }
  439. if($("#name").val()==""){
  440. $("#name").tips({
  441. side:3,
  442. msg:'输入姓名',
  443. bg:'#AE81FF',
  444. time:3
  445. });
  446. $("#name").focus();
  447. return false;
  448. }
  449. if($("#EMAIL").val()==""){
  450. $("#EMAIL").tips({
  451. side:3,
  452. msg:'输入邮箱',
  453. bg:'#AE81FF',
  454. time:3
  455. });
  456. $("#EMAIL").focus();
  457. return false;
  458. }else if(!ismail($("#EMAIL").val())){
  459. $("#EMAIL").tips({
  460. side:3,
  461. msg:'邮箱格式不正确',
  462. bg:'#AE81FF',
  463. time:3
  464. });
  465. $("#EMAIL").focus();
  466. return false;
  467. }
  468. if ($("#rcode").val() == "") {
  469. $("#rcode").tips({
  470. side : 1,
  471. msg : '验证码不得为空',
  472. bg : '#AE81FF',
  473. time : 3
  474. });
  475. $("#rcode").focus();
  476. return false;
  477. }
  478. return true;
  479. }
  480. //提交注册
  481. function register(){
  482. if(rcheck()){
  483. var nowtime = date2str(new Date(),"yyyyMMdd");
  484. $.ajax({
  485. type: "POST",
  486. url: 'appSysUser/registerSysUser.do',
  487. data: {USERNAME:$("#USERNAME").val(),PASSWORD:$("#PASSWORD").val(),NAME:$("#name").val(),EMAIL:$("#EMAIL").val(),rcode:$("#rcode").val(),FKEY:$.md5('USERNAME'+nowtime+',fh,'),tm:new Date().getTime()},
  488. dataType:'json',
  489. cache: false,
  490. success: function(data){
  491. if("00" == data.result){
  492. $("#windows2").hide();
  493. $("#windows1").show();
  494. $("#loginbox").tips({
  495. side : 1,
  496. msg : '注册成功,请登录',
  497. bg : '#68B500',
  498. time : 3
  499. });
  500. changeCode1();
  501. }else if("04" == data.result){
  502. $("#USERNAME").tips({
  503. side : 1,
  504. msg : "用户名已存在",
  505. bg : '#FF5080',
  506. time : 15
  507. });
  508. showfh();
  509. $("#USERNAME").focus();
  510. }else if("06" == data.result){
  511. $("#rcode").tips({
  512. side : 1,
  513. msg : "验证码输入有误",
  514. bg : '#FF5080',
  515. time : 15
  516. });
  517. showfh();
  518. $("#rcode").focus();
  519. }
  520. }
  521. });
  522. }
  523. }
  524. //邮箱格式校验
  525. function ismail(mail){
  526. return(new RegExp(/^(?:[a-zA-Z0-9]+[_\-\+\.]?)*[a-zA-Z0-9]+@(?:([a-zA-Z0-9]+[_\-]?)*[a-zA-Z0-9]+\.)+([a-zA-Z]{2,})+$/).test(mail));
  527. }
  528. //js 日期格式
  529. function date2str(x,y) {
  530. var z ={y:x.getFullYear(),M:x.getMonth()+1,d:x.getDate(),h:x.getHours(),m:x.getMinutes(),s:x.getSeconds()};
  531. return y.replace(/(y+|M+|d+|h+|m+|s+)/g,function(v) {return ((v.length>1?"0":"")+eval('z.'+v.slice(-1))).slice(-(v.length>2?v.length:2))});
  532. };
  533. </script>
  534. <script>
  535. //TOCMAT重启之后 点击左侧列表跳转登录首页
  536. if (window != top) {
  537. getTop(globalThis).location.href = location.href;
  538. }
  539. </script>
  540. <c:if test="${'1' == pd.msg}">
  541. <script type="text/javascript">
  542. $(tsMsg());
  543. function tsMsg(){
  544. alert('此用户在其它终端已经早于您登录,您暂时无法登录');
  545. }
  546. </script>
  547. </c:if>
  548. <c:if test="${'2' == pd.msg}">
  549. <script type="text/javascript">
  550. $(tsMsg());
  551. function tsMsg(){
  552. alert('您被系统管理员强制下线或您的帐号在别处登录');
  553. }
  554. </script>
  555. </c:if>
  556. <script src="static/login/js/bootstrap.min.js"></script>
  557. <script src="static/js/jquery-1.7.2.js"></script>
  558. <script src="static/login/js/jquery.easing.1.3.js"></script>
  559. <script src="static/login/js/jquery.mobile.customized.min.js"></script>
  560. <script src="static/login/js/camera.min.js"></script>
  561. <script src="static/login/js/templatemo_script.js"></script>
  562. <!-- <script src="static/login/js/ban.js"></script> -->
  563. <script type="text/javascript" src="static/js/jQuery.md5.js"></script>
  564. <script type="text/javascript" src="static/js/jquery.tips.js"></script>
  565. <script type="text/javascript" src="static/js/jquery.cookie.js"></script>
  566. <!-- 软键盘控件start -->
  567. <script type="text/javascript" src="static/login/keypad/js/form/keypad.js"></script>
  568. <script type="text/javascript" src="static/login/keypad/js/framework.js"></script>
  569. <!-- 软键盘控件end -->
  570. </body>
  571. </html>