sysLogin.jsp 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003
  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. <link rel="icon" href="${ctxStatic}/common/img/bitbug_favicon.ico" type="image/x-icon"/>
  8. <meta name="description" content="User login page" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  10. <script src="${ctxStatic}/jquery/jquery-2.1.1.min.js" type="text/javascript"></script>
  11. <script src="${ctxStatic}/jquery/jquery-migrate-1.1.1.min.js" type="text/javascript"></script>
  12. <script src="${ctxStatic}/jquery-validation/1.14.0/jquery.validate.js" type="text/javascript"></script>
  13. <script src="${ctxStatic}/jquery-validation/1.14.0/localization/messages_zh.min.js" type="text/javascript"></script>
  14. <script src="${ctxStatic}/jquery/md5.js" type="text/javascript"></script>
  15. <link href="${ctxStatic}/bootstrap/3.3.4/css_default/bootstrap.min.css" type="text/css" rel="stylesheet" />
  16. <script src="${ctxStatic}/bootstrap/3.3.4/js/bootstrap.min.js" type="text/javascript"></script>
  17. <link href="${ctxStatic}/awesome/4.4/css/font-awesome.min.css" rel="stylesheet" />
  18. <!-- jeeplus -->
  19. <link href="${ctxStatic}/common/jeeplus.css" type="text/css" rel="stylesheet" />
  20. <script src="${ctxStatic}/common/jeeplus.js" type="text/javascript"></script>
  21. <link rel="shortcut icon" href="images/favicon.png" type="image/png">
  22. <!-- text fonts -->
  23. <link rel="stylesheet" href="${ctxStatic }/common/login/ace-fonts.css" />
  24. <!-- ace styles -->
  25. <link rel="stylesheet" href="${ctxStatic }/common/login/ace.css" />
  26. <!-- 引入layer插件 -->
  27. <script src="${ctxStatic}/layer-v2.3/layer/layer.js"></script>
  28. <script src="${ctxStatic}/layer-v2.3/layer/laydate/laydate.js"></script>
  29. <!--[if lte IE 9]>
  30. <link rel="stylesheet" href="../assets/css/ace-part2.css" />
  31. <![endif]-->
  32. <link rel="stylesheet" href="${ctxStatic }/common/login/ace-rtl.css" />
  33. <style type="text/css">
  34. .bound{
  35. background-color: white;
  36. /*background-color: rgba(255, 255, 255, 0.95);*/
  37. /*border-radius: 8px;*/
  38. }
  39. .login-layout .widget-box .widget-main {
  40. padding: 16px 36px;
  41. background: white;
  42. }
  43. #tel-error{
  44. left:120px;
  45. }
  46. </style>
  47. <title>登录界面</title>
  48. <script>
  49. if (window.top !== window.self) {
  50. window.top.location = window.location;
  51. }
  52. </script>
  53. <script type="text/javascript">
  54. $(document).ready(function() {
  55. $("#loginForm").validate({
  56. rules: {
  57. validateCode: {remote: "${pageContext.request.contextPath}/servlet/validateCodeServlet"}
  58. },
  59. messages: {
  60. username: {required: "请填写用户名."},password: {required: "请填写密码."},
  61. validateCode: {remote: "验证码不正确.", required: "请填写验证码."}
  62. },
  63. errorLabelContainer: "#messageBox",
  64. errorPlacement: function(error, element) {
  65. error.appendTo($("#loginError").parent());
  66. }
  67. });
  68. $('#loginButton').click(function () {
  69. var username = $("#username").val();
  70. var password = $.md5(($("#password").val()));
  71. $.ajax({
  72. type: "post",
  73. url: "${ctx}/sys/register/validatePassword",
  74. data: {loginName:username,password:password},
  75. dataType:"text",
  76. success: function(data) {
  77. if(data=="cf"){
  78. <%--layer.open({--%>
  79. <%--type: 2,--%>
  80. <%--area: ['40%', '40%'],--%>
  81. <%--title: '选择用户',--%>
  82. <%--maxmin: true, //开启最大化最小化按钮--%>
  83. <%--content: '${ctx}/workstaff/workStaffBasicInfo/repeatName?name='+username--%>
  84. <%--});--%>
  85. } else if(data=="true"){
  86. $("#loginButton").attr("disabled", true);
  87. // $("#loginForm").submit();
  88. }
  89. }
  90. })
  91. }) ;
  92. <%--$('#loginButton1').click(function () {--%>
  93. <%--var username = $("#username").val();--%>
  94. <%--var password = $.md5(($("#password").val()));--%>
  95. <%--$.ajax({--%>
  96. <%--type: "post",--%>
  97. <%--url: "${ctx}/sys/register/users",--%>
  98. <%--data: {loginName:username,password:password},--%>
  99. <%--dataType:"text",--%>
  100. <%--success: function(data) {--%>
  101. <%--if(data=="false"){--%>
  102. <%--alert("1111")--%>
  103. <%--layer.open({--%>
  104. <%--type: 2,--%>
  105. <%--area: ['40%', '40%'],--%>
  106. <%--title: '选择用户',--%>
  107. <%--maxmin: true, //开启最大化最小化按钮--%>
  108. <%--content: '${ctx}/workstaff/workStaffBasicInfo/repeatName?name='+username--%>
  109. <%--});--%>
  110. <%--} else if(data=="true"){--%>
  111. <%--// $("#loginButton").attr("disabled", true);--%>
  112. <%--// $("#loginForm").submit();--%>
  113. <%--alert("111")--%>
  114. <%--$("#loginButton").trigger("click");--%>
  115. <%--}--%>
  116. <%--}--%>
  117. <%--})--%>
  118. <%--}) ;--%>
  119. });
  120. // 如果在框架或在对话框中,则
  121. // 弹出提示并跳转到首页
  122. if(self.frameElement && self.frameElement.tagName == "IFRAME" || $('#left').length > 0 || $('.jbox').length > 0){
  123. top.location = "${ctx}";
  124. }
  125. </script>
  126. <script type="text/javascript">
  127. $(document).ready(function() {
  128. // 手机号码验证
  129. jQuery.validator.addMethod("isMobile", function(value, element) {
  130. var length = value.length;
  131. var mobile = /^(13[0-9]{9})|(18[0-9]{9})|(19[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})$/;
  132. return (length == 11 && mobile.test(value));
  133. }, "请正确填写您的手机号码");
  134. // 密码码验证
  135. jQuery.validator.addMethod("isPassword", function(value, element) {
  136. var mobile = /^[0-9a-zA-Z]+$/;
  137. return (mobile.test(value));
  138. }, "设置密码必须为6-12位数字、大小写字母的组合");
  139. $.validator.addMethod("checkPassword",function(value,element,params){
  140. var regExp = /^[0-9A-Za-z]{6,12}$/;
  141. return this.optional(element)||(regExp.test(value));
  142. },"密码必须为6-12位数字或大小写字母!");
  143. $("#inputForm").validate({
  144. rules: {
  145. loginName: {remote: "${ctx}/sys/user/validateLoginName"},
  146. mobile: {remote: "${ctx}/sys/user/validateMobile"},
  147. randomCode: {
  148. remote:{
  149. url:"${ctx}/sys/register/validateMobileCode",
  150. data:{
  151. mobile:function(){
  152. return $("#tel").val();
  153. }
  154. }
  155. }
  156. }
  157. },
  158. messages: {
  159. confirmNewPassword: {equalTo: "输入与上面相同的密码"},
  160. ck1: {required: "必须接受用户协议."},
  161. loginName: {remote: "此用户名已经被注册!", required: "用户名不能为空."},
  162. mobile:{remote: "此手机号已经被注册!", required: "手机号不能为空."},
  163. randomCode:{remote: "验证码不正确!", required: "验证码不能为空."}
  164. },
  165. submitHandler: function(form){
  166. loading('正在提交,请稍等...');
  167. form.submit();
  168. },
  169. errorContainer: "#messageBox",
  170. errorPlacement: function(error, element) {
  171. $("#messageBox").text("输入有误,请先更正。");
  172. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  173. error.appendTo(element.parent().parent());
  174. } else {
  175. error.insertAfter(element);
  176. }
  177. }
  178. });
  179. $("#resetForm").validate({
  180. rules: {
  181. mobile: {remote: "${ctx}/sys/user/validateMobileExist"},
  182. randomCode: {
  183. remote:{
  184. url:"${ctx}/sys/register/validateMobileCode",
  185. data:{
  186. mobile:function(){
  187. return $("#tel_resetpass").val();
  188. }
  189. }
  190. }
  191. },
  192. password:{
  193. checkPassword: true,
  194. },
  195. confirmNewPassword:{
  196. checkPassword: true,
  197. }
  198. },
  199. messages: {
  200. mobile:{remote: "此手机号未注册!", required: "手机号不能为空."},
  201. rconfirmNewPassword: {equalTo: "输入与上面相同的密码"},
  202. randomCode:{remote: "验证码不正确!", required: "验证码不能为空."}
  203. },
  204. submitHandler: function(form){
  205. loading('正在提交,请稍等...');
  206. form.submit();
  207. },
  208. errorContainer: "#messageBox",
  209. errorPlacement: function(error, element) {
  210. $("#messageBox").text("输入有误,请先更正。");
  211. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  212. error.appendTo(element.parent().parent());
  213. } else {
  214. error.insertAfter(element);
  215. }
  216. }
  217. });
  218. $("#randomCodeLoginForm").validate({
  219. rules: {
  220. //username: {remote: "${ctx}/sys/user/validateMobileExist"},
  221. username: {
  222. remote:{
  223. url:"${ctx}/sys/user/validateMobileExist",
  224. data:{
  225. mobile:function(){
  226. return $("#tel_getRandomCode").val();
  227. }
  228. }
  229. }
  230. },
  231. randomCode: {
  232. remote:{
  233. url:"${ctx}/sys/register/validateMobileCode",
  234. data:{
  235. mobile:function(){
  236. return $("#tel_getRandomCode").val();
  237. }
  238. }
  239. }
  240. }
  241. },
  242. messages: {
  243. username:{remote: "此手机号未注册!", required: "手机号不能为空."},
  244. randomCode:{remote: "验证码不正确!", required: "验证码不能为空."}
  245. },
  246. submitHandler: function(form){
  247. loading('正在提交,请稍等...');
  248. form.submit();
  249. },
  250. errorContainer: "#messageBox",
  251. errorPlacement: function(error, element) {
  252. $("#messageBox").text("输入有误,请先更正。");
  253. if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
  254. error.appendTo(element.parent().parent());
  255. } else {
  256. error.insertAfter(element);
  257. }
  258. }
  259. });
  260. /*修改密码*/
  261. $('#sendPassBtn').click(function () {
  262. if($("#tel_resetpass").val()=="" || $("#tel_resetpass-error").text()!=""){
  263. top.layer.alert("请输入有效的手机号码!", {icon: 0});//讨厌的白色字体问题
  264. return;
  265. }
  266. $("#sendPassBtn").attr("disabled", true);
  267. $.get("${ctx}/sys/register/getRegisterCode?mobile="+$("#tel_resetpass").val()+"&type="+"resetPassword",function(data){
  268. if(data.success == false){
  269. //top.layer.alert(data.msg, {icon: 0});讨厌的白色字体问题
  270. alert(data.msg);
  271. $("#sendPassBtn").html("重新发送").removeAttr("disabled");
  272. clearInterval(countdown);
  273. }
  274. });
  275. var count = 60;
  276. var countdown = setInterval(CountDown, 1000);
  277. function CountDown() {
  278. $("#sendPassBtn").attr("disabled", true);
  279. $("#sendPassBtn").html("等待 " + count + "秒!");
  280. if (count == 0) {
  281. $("#sendPassBtn").html("重新发送").removeAttr("disabled");
  282. clearInterval(countdown);
  283. }
  284. count--;
  285. }
  286. }) ;
  287. /*用户注册*/
  288. $('#sendCodeBtn').click(function () {
  289. if($("#tel").val()=="" || $("#tel-error").text()!=""){
  290. top.layer.alert("请输入有效的注册手机号码!", {icon: 0});//讨厌的白色字体问题
  291. return;
  292. }
  293. $("#sendCodeBtn").attr("disabled", true);
  294. $.get("${ctx}/sys/register/getRegisterCode?mobile="+$("#tel").val(),function(data){
  295. if(data.success == false){
  296. //top.layer.alert(data.msg, {icon: 0});讨厌的白色字体问题
  297. alert(data.msg);
  298. $("#sendCodeBtn").html("重新发送").removeAttr("disabled");
  299. clearInterval(countdown);
  300. }
  301. });
  302. var count = 60;
  303. var countdown = setInterval(CountDown, 1000);
  304. function CountDown() {
  305. $("#sendCodeBtn").attr("disabled", true);
  306. $("#sendCodeBtn").html("等待 " + count + "秒!");
  307. if (count == 0) {
  308. $("#sendCodeBtn").html("重新发送").removeAttr("disabled");
  309. clearInterval(countdown);
  310. }
  311. count--;
  312. }
  313. }) ;
  314. /*快速登录*/
  315. $('#sendRandomCodeBtn').click(function () {
  316. var mobile = $("#tel_getRandomCode").val().trim();
  317. var mobileRule = /^(13[0-9]{9})|(18[0-9]{9})|(14[0-9]{9})|(17[0-9]{9})|(15[0-9]{9})$/;
  318. if(mobile.length != 11 || !mobileRule.test(mobile) || $("#tel_getRandomCode-error").text()!=""){
  319. top.layer.alert("请输入有效的手机号码!", {icon: 0});//讨厌的白色字体问题
  320. return false;
  321. }
  322. $("#sendRandomCodeBtn").attr("disabled", true);
  323. $.get("${ctx}/login/getRandomCode?type=2&mobile="+$("#tel_getRandomCode").val(),function(data){
  324. if(data.success == false){
  325. top.layer.alert(data.msg, {icon: 0});//讨厌的白色字体问题
  326. $("#sendRandomCodeBtn").html("重新发送").removeAttr("disabled");
  327. clearInterval(countdown);
  328. }
  329. });
  330. var count = 60;
  331. var countdown = setInterval(CountDown, 1000);
  332. function CountDown() {
  333. $("#sendRandomCodeBtn").attr("disabled", true);
  334. $("#sendRandomCodeBtn").html("等待 " + count + "秒!");
  335. if (count == 0) {
  336. $("#sendRandomCodeBtn").html("重新发送").removeAttr("disabled");
  337. clearInterval(countdown);
  338. }
  339. count--;
  340. }
  341. }) ;
  342. //默认不显示下拉框
  343. $("select").hide();
  344. $("#username").bind('input propertychange',function () {
  345. if($("#username").val().trim()==""){
  346. $("#password").val("");
  347. }
  348. $("#span").empty();
  349. compSelect();
  350. });
  351. $("#password").blur(function(){
  352. if($("#username").val()==""){
  353. $("#span").empty();
  354. $("#span").html("请输入有效的用户名!");
  355. return;
  356. }
  357. if($("#password").val()==""){
  358. $("#span").empty();
  359. $("#span").html("请输入有效的密码!");
  360. return;
  361. }
  362. $("#span").empty();
  363. //top.layer.alert("请选择您的企业!", {icon: 0});//讨厌的白色字体问题
  364. });
  365. compSelect();
  366. });
  367. function compSelect() {
  368. var val = $("#username").val();
  369. if(val==null||val.trim()==''){
  370. return;
  371. }
  372. $.get("${ctx}/sys/user/getComName?userName="+ val,function(data){
  373. if(data.success == false){
  374. /*top.layer.alert(data.msg, {icon: 0});*///讨厌的白色字体问题
  375. }else{
  376. var selectItem = "<option value='{0}' > {1}</option>"; //下拉框选项
  377. var selectedItem = "<option value='{0}' selected='selected' > {1}</option>"; //默认被选择的下拉框选项
  378. var item = "<select id='companyName' name='companyName'> ";
  379. var result =data.msg.split(","); //result是你后台获取的数组,是你需要动态生成下拉框的数据,此处为了方便,写成常量了
  380. var rankLevel = data.comName;//同上
  381. for (var i = 0; i < result.length; i++) {
  382. if (result[i] === rankLevel) {
  383. item += String.format(selectedItem, result[i], result[i]); //第一个result[i]就是给selectItem里的{0}赋值(option的value),第二个result[i]即{1},此处是设置默认被选中的option
  384. } else {
  385. item += String.format(selectItem, result[i], result[i]); //此处是设置不选中的option
  386. }
  387. }
  388. item += "</select>";
  389. $("#companySwitch").empty(); //先清空
  390. $("#companySwitch").append(item); //再赋值
  391. if(result.length<2){
  392. $("select").hide();
  393. }
  394. }
  395. });
  396. }
  397. </script>
  398. <script type="text/javascript">
  399. $(document).ready(function() {
  400. if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
  401. width='auto';
  402. height='auto';
  403. }else{//如果是PC端,根据用户设置的width和height显示。
  404. width='700px';
  405. height='500px';
  406. }
  407. String.format = function ()
  408. {
  409. var param = [];
  410. for (var i = 0, l = arguments.length; i < l; i++)
  411. {
  412. param.push(arguments[i]);
  413. }
  414. var statment = param[0]; // get the first element(the original statement)
  415. param.shift(); // remove the first element from array
  416. return statment.replace(/\{(\d+)\}/g, function(m, n)
  417. {
  418. return param[n];
  419. });
  420. }
  421. });
  422. </script>
  423. <style>
  424. body,
  425. html {
  426. margin: 0;
  427. padding: 0;
  428. width: 100%;
  429. height: 100%;
  430. position: relative;
  431. /*font-family: sans-serif;*/
  432. /*font-size: 16px;*/
  433. background: linear-gradient(141deg, #0fb8ad 0%, #76f1ff 51%, #2cb5e8 75%);
  434. overflow: hidden;
  435. }
  436. .login-layout .widget-box{
  437. background-color: unset;
  438. background-color:transparent;
  439. padding: 0px;
  440. margin:0px;
  441. border: none;
  442. }
  443. .login-title{
  444. height:80px;
  445. }
  446. .login-title span{
  447. display: block;
  448. font-size: 24px;
  449. color:#ffffff;
  450. height:80px;
  451. line-height: 80px;
  452. text-align: center;
  453. background-color: #3282dc;
  454. }
  455. .login-layout .widget-box .widget-main{
  456. padding: 0 50px 10px 50px;
  457. }
  458. .login-layout label.block {
  459. margin-bottom: 0px;
  460. height: 54px;
  461. }
  462. .login-layout label.block.common {
  463. margin-bottom: 0px;
  464. height: 68px;
  465. }
  466. button.btn{
  467. height:34px;
  468. }
  469. .form-options a font{
  470. height:20px;
  471. line-height: 20px;
  472. display: inline-block;
  473. }
  474. .form-options.option1{
  475. padding-top: 24px;
  476. }
  477. #companyName{
  478. width: 100%;
  479. height: 34px;
  480. margin-bottom: 20px;
  481. }
  482. #companySwitch{
  483. /*height:68px;*/
  484. }
  485. .help-inline{
  486. color: red;
  487. font-size: 12px;
  488. }
  489. </style>
  490. </head>
  491. <body class="login-layout " style="overflow:auto;">
  492. <svg id="ckLine" style="position: absolute;" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%"></svg>
  493. <%--<script src="${ctxStatic}/jquery/jquery-2.1.1.min.js" type="text/javascript"></script>--%>
  494. <div id="popupFormDiv" style="display:none;"></div>
  495. <div class="main-container">
  496. <div class="main-content">
  497. <div class="row">
  498. <div style="padding-bottom: 20px;">
  499. <div style="position:relative;width:1000px;margin-left: auto;margin-right: auto;">
  500. <%--<div class="center">--%>
  501. <%--<sys:homeMessage content="${message}"/>--%>
  502. <%--</div>--%>
  503. <%--<div class="space-6"></div>--%>
  504. <div style="margin-top: 150px;">
  505. <div style="width: 600px;float: left;">
  506. <div class="login-title">
  507. <%--<img src="${ctxStatic }/common/login/images/top-name1.png">--%>
  508. <img src="${ctxp}/static/common/login/images/login_xg.jpg">
  509. </div>
  510. <div style="height:300px;">
  511. <div class="layui-carousel" id="banners" style="height:300px;">
  512. <div carousel-item="">
  513. <div><img src="${ctxStatic }/common/login/images/banner.png"></div>
  514. <%--<div>123</div>--%>
  515. <%--<div><img src="${ctxStatic }/common/login/images/banner.png"></div>--%>
  516. <%--<div><img src="${ctxStatic }/common/login/images/banner.png"></div>--%>
  517. </div>
  518. </div>
  519. </div>
  520. </div>
  521. <div style="width:400px;float: left">
  522. <div id="login-box" class="login-box visible widget-box">
  523. <div class="login-title">
  524. <span>用户登录</span>
  525. </div>
  526. <div class="widget-body bound">
  527. <div class="widget-main bound" style="height:300px;">
  528. <form id="loginForm" class="form-signin" action="${ctx}/login" method="post">
  529. <fieldset>
  530. <div style="height:50px"></div>
  531. <label class="block clearfix">
  532. <span class="block input-icon input-icon-right">
  533. <input type="text" id="username" name="username" class="form-control required" value="" placeholder="登录名"/>
  534. <i class="ace-icon fa fa-user"></i>
  535. </span>
  536. </label>
  537. <label class="block clearfix">
  538. <span class="block input-icon input-icon-right">
  539. <input type="password" id="password" name="password" value="" class="form-control required" placeholder="密码" />
  540. <i class="ace-icon fa fa-lock"></i>
  541. </span>
  542. <span id="span" class="help-inline"></span>
  543. </label>
  544. <c:if test="${isValidateCodeLogin}">
  545. <div class="input-group m-b text-muted validateCode">
  546. <label class="input-label mid" for="validateCode">验证码:</label>
  547. <sys:validateCode name="validateCode" inputCssStyle="margin-bottom:5px;"/>
  548. </div>
  549. </c:if>
  550. <%--<div class="space"></div>--%>
  551. <!-- <button type="button" id="getCompanyBtn" style="vertical-align:middle " class="dropdown" value="获取企业">我的企业</button>
  552. -->
  553. <div id="companySwitch" style="vertical-align:middle ;min-height:20px;">
  554. <select id='companyName' name='companyName' style="display:none;">
  555. <option value='0' selected='selected' >默认企业</option>
  556. </select>
  557. </div>
  558. <div class="clearfix">
  559. <label class="inline" style="line-height:34px;margin-bottom:0px;">
  560. <input type="checkbox" id="rememberMe" name="rememberMe" ${rememberMe ? 'checked' : ''} class="ace" />
  561. <span class="lbl"> 记住我</span>
  562. </label>
  563. <%--<input type="submit" hidden="hidden" id="Button1">--%>
  564. <button id="loginButton" type="submit" class="width-65 pull-right btn btn-sm btn-primary">
  565. <i class="ace-icon fa fa-key"></i>
  566. <span class="bigger-110">登录</span>
  567. </button>
  568. </div>
  569. <%--<div class="space-4"></div>--%>
  570. <div id="themeSwitch" class="dropdown">
  571. <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">${fns:getDictLabel(cerulean,'theme','')}</a>
  572. <ul class="dropdown-menu">
  573. <c:forEach items="${fns:getDictList('theme')}" var="dict"><li><a href="javascript:void(0)" onclick="location='${pageContext.request.contextPath}/theme/cerulean?url='+location.href"><font color="black">${dict.label}</font></a></li></c:forEach>
  574. </ul>
  575. <!--[if lte IE 6]><script type="text/javascript">$('#themeSwitch').hide();</script><![endif]-->
  576. </div>
  577. </fieldset>
  578. </form>
  579. <!--
  580. <div class="social-or-login center">
  581. <span class="bigger-110">Or Login Using</span>
  582. </div>
  583. <div class="space-6"></div>
  584. <div class="social-login center">
  585. <a class="btn btn-primary">
  586. <i class="ace-icon fa fa-facebook"></i>
  587. </a>
  588. <a class="btn btn-info">
  589. <i class="ace-icon fa fa-twitter"></i>
  590. </a>
  591. <a class="btn btn-danger">
  592. <i class="ace-icon fa fa-google-plus"></i>
  593. </a>
  594. </div>
  595. -->
  596. <%--<br/>--%>
  597. <%--<br/>--%>
  598. <div class="form-options option1 clearfix">
  599. <div>
  600. <a href="javascript:void(0)" data-target="#forgot-box" class="pull-left">
  601. <font color="#428bca">
  602. 忘记密码</font>
  603. </a>
  604. </div>
  605. <div style="width: 50px;height: auto" class="pull-left">
  606. &emsp13;
  607. </div>
  608. <div>
  609. <a href="#" data-target="#randomCodeLogin-box" class="pull-left">
  610. <font color="#428bca">
  611. 快速登录</font>
  612. </a>
  613. </div>
  614. <div>
  615. <a href="javascript:void(0)" data-target="#signup-box" class="pull-right user-signup-link">
  616. <font color="#428bca">没有账号?注册
  617. </font>
  618. </a>
  619. </div>
  620. </div>
  621. </div><!-- /.widget-main -->
  622. </div><!-- /.widget-body -->
  623. </div><!-- /.login-box -->
  624. <div id="randomCodeLogin-box" class="login-box widget-box">
  625. <div class="login-title">
  626. <span>快速登录</span>
  627. </div>
  628. <div class="widget-body bound">
  629. <div class="widget-main bound">
  630. <form id="randomCodeLoginForm" class="form-signin" action="${ctx}/login" method="post">
  631. <fieldset>
  632. <div style="height:50px"></div>
  633. <label class="block clearfix common">
  634. <span class="block input-icon input-icon-right">
  635. <input type="hidden" name="isCodeLogin" value="yes"/>
  636. <input id="tel_getRandomCode" name="username" type="text" value="" maxlength="11" minlength="11" class="form-control text-muted required isMobile" placeholder="手机号"/>
  637. <i class="ace-icon fa fa-phone"></i>
  638. </span>
  639. </label>
  640. <label class="block clearfix common" style="width:150px;float: left;">
  641. <span class="block input-icon input-icon-right">
  642. <input id="randomCode4Login" name="randomCode" type="text" style="width:150px;" value="" maxlength="4" minlength="4" class="form-control required" placeholder="验证码"/>
  643. <label id="random-code-error" class="error" for="code" style="display:none;"></label>
  644. </span>
  645. </label>
  646. <label class="block clearfix common">
  647. <span class="block input-icon input-icon-right">
  648. <button style="width:120px !important;" class="width-35 pull-right btn btn-sm btn-primary" type="button" id="sendRandomCodeBtn" >
  649. <i class="ace-icon fa fa-lightbulb-o"></i>
  650. <span class="bigger-110">获取验证码!</span>
  651. </button>
  652. </span>
  653. </label>
  654. <button id="randomCodeloginButton" type="submit" class="width-100 btn btn-sm btn-primary" style="margin-top:13px;">
  655. <i class="ace-icon fa fa-key"></i>
  656. <span class="bigger-110">登录</span>
  657. </button>
  658. </fieldset>
  659. </form>
  660. <div class="form-options center option1" style="margin-top:13px;">
  661. <%--<br/>--%>
  662. <a href="#" data-target="#login-box" class="">
  663. <font color="#428bca"><i class="ace-icon fa fa-arrow-left"></i>
  664. 返回登录
  665. </font>
  666. </a>
  667. </div>
  668. </div>
  669. </div><!-- /.widget-body -->
  670. </div>
  671. <div id="forgot-box" class="forgot-box widget-box">
  672. <div class="login-title">
  673. <span>重置密码</span>
  674. </div>
  675. <div class="widget-body bound">
  676. <div class="widget-main bound" style="height: 300px;">
  677. <form:form id="resetForm" modelAttribute="user" action="${ctx}/sys/user/resetPassword" method="post" class="form-group form-horizontal">
  678. <fieldset>
  679. <div style="height:10px"></div>
  680. <label class="block clearfix" style="height: 53px;">
  681. <span class="block input-icon input-icon-right">
  682. <input id="tel_resetpass" name="mobile" type="text" value="" maxlength="11" minlength="11" class="form-control text-muted required isMobile" placeholder="手机号"/>
  683. <i class="ace-icon fa fa-phone"></i>
  684. </span>
  685. </label>
  686. <label class="block clearfix" style="height: 53px;">
  687. <span class="block input-icon input-icon-right">
  688. <input id="rcode" name="randomCode" type="text" style="width:150px;" value="" maxlength="4" minlength="4" class="form-control required" placeholder="验证码"/>
  689. <button id="sendPassBtn" type="button" style="width:120px !important;" class="width-35 pull-right btn btn-sm btn-primary">
  690. <i class="ace-icon fa fa-lightbulb-o"></i>
  691. <span class="bigger-110">获取验证码!</span>
  692. </button>
  693. <label id="rcode-error" class="error" for="rcode" style="display:none"></label>
  694. </span>
  695. </label>
  696. <label class="block clearfix" style="height: 53px;">
  697. <span class="block input-icon input-icon-right">
  698. <input id="rnewPassword" name="password" type="password" value="" maxlength="12" class="form-control required" placeholder="新密码" />
  699. <i class="ace-icon fa fa-lock"></i>
  700. </span>
  701. </label>
  702. <label class="block clearfix" style="height: 53px;">
  703. <span class="block input-icon input-icon-right">
  704. <input id="rconfirmNewPassword" name="confirmNewPassword" type="password" value="" maxlength="12" class="form-control required" equalTo="#rnewPassword" placeholder="重复密码" />
  705. <i class="ace-icon fa fa-retweet"></i>
  706. </span>
  707. </label>
  708. <div class="clearfix"style="height: 53px;">
  709. <button type="reset" class="width-30 pull-left btn btn-sm">
  710. <i class="ace-icon fa fa-refresh"></i>
  711. <span class="bigger-110">重置</span>
  712. </button>
  713. <button type="submit" class="width-65 pull-right btn btn-sm btn-primary">
  714. <span class="bigger-110">保存</span>
  715. <i class="ace-icon fa fa-arrow-right icon-on-right"></i>
  716. </button>
  717. </div>
  718. </fieldset>
  719. </form:form>
  720. <div class="form-options center">
  721. <%--<br/>--%>
  722. <%--<br/>--%>
  723. <a href="javascript:void(0)" data-target="#login-box" class="">
  724. <font color="#428bca"><i class="ace-icon fa fa-arrow-left"></i>
  725. 返回登录
  726. </font>
  727. </a>
  728. </div>
  729. </div>
  730. </div><!-- /.widget-body -->
  731. </div>
  732. <div id="signup-box" class="signup-box widget-box">
  733. <div class="login-title">
  734. <span>用户注册</span>
  735. </div>
  736. <div class="widget-body bound">
  737. <div class="widget-main bound" style="height:300px;">
  738. <form:form id="inputForm" modelAttribute="user" action="${ctx}/sys/register/registerUser" method="post" class="form-group form-horizontal">
  739. <input type="hidden" value="system" name="roleName"><!-- 默认注册用户都是新员工 -->
  740. <fieldset>
  741. <div style="height:10px"></div>
  742. <label class="block clearfix" style="height: 38px;">
  743. <span class="block input-icon input-icon-right">
  744. <input id="tel" name="mobile" type="text" value="" maxlength="11" minlength="11" class="form-control text-muted required isMobile" placeholder="手机号"/>
  745. <i class="ace-icon fa fa-phone"></i>
  746. </span>
  747. </label>
  748. <label class="block clearfix" style="height: 38px;">
  749. <span class="block input-icon input-icon-right">
  750. <input id="code" name="randomCode" type="text" value="" style="width:170px;" maxlength="4" minlength="4" class="form-control required" placeholder="验证码"/>
  751. <button style="width:120px !important;" class="width-35 pull-right btn btn-sm btn-primary" type="button" id="sendCodeBtn" >
  752. <i class="ace-icon fa fa-lightbulb-o"></i>
  753. <span class="bigger-110">获取验证码!</span>
  754. </button>
  755. <label id="code-error" class="error" for="code" style="display:none"></label>
  756. </span>
  757. </label>
  758. <label class="block clearfix" style="height: 38px;">
  759. <span class="block input-icon input-icon-right">
  760. <input id="userId" name="name" type="text" value="" maxlength="20" minlength="2" class="form-control required" placeholder="姓名" />
  761. <i class="ace-icon fa fa-user"></i>
  762. </span>
  763. </label>
  764. <label class="block clearfix" style="height: 38px;">
  765. <span class="block input-icon input-icon-right">
  766. <input id="newPassword" name="password" type="password" value="" maxlength="12" minlength="6" class="form-control text-muted required isPassword" placeholder="密码" />
  767. <i class="ace-icon fa fa-lock"></i>
  768. </span>
  769. </label>
  770. <label class="block clearfix" style="height: 38px;">
  771. <span class="block input-icon input-icon-right">
  772. <input id="confirmNewPassword" name="confirmNewPassword" type="password" value="" maxlength="20" minlength="3" class="form-control required" equalTo="#newPassword" placeholder="重复密码" />
  773. <i class="ace-icon fa fa-retweet"></i>
  774. </span>
  775. </label>
  776. <label class="block" style="height:40px;position: relative;">
  777. <input name="ck1" type="checkbox" class="required ace" />
  778. <span class="lbl">
  779. 我接受
  780. <a href="${ctxStatic}/html/agreement.html" target="_blank">《匞匞用户注册协议》</a>
  781. </span>
  782. <label id="ck1-error" class="error" for="ck1" style="display: none;position:absolute;left:170px;top:15px;">必须接受用户协议</label>
  783. </label>
  784. <div class="clearfix" style="height: 40px;">
  785. <button type="reset" class="width-30 pull-left btn btn-sm">
  786. <i class="ace-icon fa fa-refresh"></i>
  787. <span class="bigger-110">重置</span>
  788. </button>
  789. <button type="submit" class="width-65 pull-right btn btn-sm btn-primary">
  790. <span class="bigger-110">注册</span>
  791. <i class="ace-icon fa fa-arrow-right icon-on-right"></i>
  792. </button>
  793. </div>
  794. </fieldset>
  795. </form:form>
  796. <div class="form-options center">
  797. <%--<br/>--%>
  798. <%--<br/>--%>
  799. <a href="javascript:void(0)" data-target="#login-box" class="" style="height: 30px;">
  800. <font color="#428bca"><i class="ace-icon fa fa-arrow-left"></i>
  801. 返回登录
  802. </font>
  803. </a>
  804. </div>
  805. </div>
  806. </div><!-- /.widget-body -->
  807. </div><!-- /.signup-box -->
  808. </div>
  809. </div><!-- /.position-relative -->
  810. <%--
  811. <div class="center"><h4 id="id-company-text"><font color="#A90E0E"></font></h4></div>
  812. --%>
  813. </div>
  814. </div><!-- /.col -->
  815. </div><!-- /.row -->
  816. </div><!-- /.main-content -->
  817. </div><!-- /.main-container -->
  818. <!-- basic scripts -->
  819. <!--[if !IE]> -->
  820. <script type="text/javascript">
  821. window.jQuery || document.write("<script src='../assets/js/jquery.js'>"+"<"+"/script>");
  822. </script>
  823. <!-- <![endif]-->
  824. <!--[if IE]>
  825. <script type="text/javascript">
  826. window.jQuery || document.write("<script src='../assets/js/jquery1x.js'>"+"<"+"/script>");
  827. </script>
  828. <![endif]-->
  829. <script type="text/javascript">
  830. if('ontouchstart' in document.documentElement) document.write("<script src='../assets/js/jquery.mobile.custom.js'>"+"<"+"/script>");
  831. </script>
  832. <style>
  833. /* Validation */
  834. label.error {
  835. color: #cc5965;
  836. display: inline-block;
  837. margin-left: 5px;
  838. position: absolute;
  839. left: 58px;
  840. top: 7px;
  841. white-space: nowrap;
  842. }
  843. .form-control.error {
  844. border: 1px dotted #cc5965;
  845. }
  846. </style>
  847. <!-- inline scripts related to this page -->
  848. <script type="text/javascript">
  849. $(document).ready(function() {
  850. $(document).on('click', '.form-options a[data-target]', function(e) {
  851. e.preventDefault();
  852. var target = $(this).data('target');
  853. $('.widget-box.visible').removeClass('visible');//hide others
  854. $(target).addClass('visible');//show target
  855. });
  856. });
  857. $("#span").bind('DOMNodeInserted',function(e){
  858. var msg = $("#span").html();
  859. var end = msg.indexOf('存');
  860. if(end != -1){
  861. var name = msg.substring(0,end);
  862. layer.open({
  863. type: 2,
  864. area: ['40%', '40%'],
  865. title: '选择用户',
  866. maxmin: true, //开启最大化最小化按钮
  867. content: '${ctx}/workstaff/workStaffBasicInfo/repeatName?name='+encodeURI(encodeURI(name)),
  868. // btn: ['关闭'],
  869. });
  870. }
  871. });
  872. <c:if test="${not empty message}">
  873. $("#span").empty();
  874. $("#span").html("${message}");
  875. </c:if>
  876. </script>
  877. <link rel="stylesheet" href="${ctxStatic }/layer-v2.3/layui/css/layui.css" />
  878. <script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
  879. <script>
  880. layui.use(['carousel', 'form'], function() {
  881. var carousel = layui.carousel;
  882. carousel.render({
  883. elem: '#banners'
  884. // ,interval: 5000
  885. ,anim: 'fade'
  886. ,height:'300px'
  887. });
  888. })
  889. </script>
  890. <script src="${ctxStatic}/ckline/jquery.ckLine.min.js"></script>
  891. <script type="text/javascript">
  892. // function hasYScrollbar() {
  893. // return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);
  894. // }
  895. // function getScrollWidth() {
  896. // var noScroll, scroll, oDiv = document.createElement("DIV");
  897. // oDiv.style.cssText = "position:absolute;top:-1000px;width:100px;height:100px; overflow:hidden;";
  898. // noScroll = document.body.appendChild(oDiv).clientWidth;
  899. // oDiv.style.overflowY = "scroll";
  900. // scroll = oDiv.clientWidth;
  901. // document.body.removeChild(oDiv);
  902. // return noScroll-scroll;
  903. // }
  904. // function resizeSVGBackground()
  905. // {
  906. // if(hasYScrollbar)
  907. // {
  908. // var w = getScrollWidth();
  909. // var wa= window.innerWidth
  910. // || document.documentElement.clientWidth
  911. // || document.body.clientWidth;
  912. // $("#ckLine").attr("height",(wa - w) + "px");
  913. // }
  914. // else
  915. // {
  916. // $("#ckLine").attr("height","100%");
  917. // }
  918. // }
  919. // resizeSVGBackground();
  920. $('#ckLine').ckLine({
  921. leftRight: false,
  922. strokeColor: 'rgba(255,255,255,0.4)',
  923. interval: 800,
  924. animateTime: 1600,
  925. animationTimeRange: [800, 1600]
  926. });
  927. </script>
  928. </body>
  929. </html>