sysLogin.html 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <% layout('/layouts/default.html', {title: '登录', libs: ['validate'], bodyClass: 'login-page'}){ %>
  2. <% include('/include/upgrade.html'){} // 如果客户浏览器版本过低,则显示浏览器升级提示。 %>
  3. <!-- <link rel="stylesheet" href="${ctxStatic}/icheck/1.0/square/blue.css?${_version}"> -->
  4. <link rel="stylesheet" href="${ctxStatic}/jquery-toastr/2.1/toastr.min.css?${_version}">
  5. <link rel="stylesheet" href="${ctxStatic}/modules/sys/sysLogin.css?${_version}">
  6. <style>.login-page{background-image:url("${ctxStatic}/screen/imgs/loginBg.png")!important;}</style>
  7. <div class="login-container">
  8. <div class="login-logo-area">
  9. <img class="logo-img" src="${ctxStatic}/screen/imgs/loginLogo.png" alt="logo">
  10. </div>
  11. <div class="login-box">
  12. <div class="login-box-body">
  13. <% var defaultSkinName = @Global.getConfig('sys.index.skinName', 'skin-blue-light3');
  14. var skinName = cookie('skinName', false, defaultSkinName);
  15. if (skinName == 'skin-dark') { %>
  16. <!-- <a class="switchSkin" href="${ctxAdmin}/switchSkin/${defaultSkinName}" title="${text('浅色模式')}"><i class="fa fa-toggle-off"></i></a>-->
  17. <% }else{ %>
  18. <!-- <a class="switchSkin" href="${ctxAdmin}/switchSkin/skin-dark" title="${text('黑暗模式')}"><i class="fa fa-toggle-on"></i></a>-->
  19. <% } %>
  20. <% var isLoginByValidCode = @Global.getConfigToBoolean('user.loginByValidCode', 'true'); %>
  21. <% var isEmailLoginEnabled = @Global.getConfig('mes.email.controller', '0') == '1'; %>
  22. <% if(isLoginByValidCode){ %>
  23. <ul id="loginTab" class="nav nav-tabs">
  24. <li class="active"><a href="#tab-1" data-toggle="tab" action="${isEmailLoginEnabled ? ctxAdmin + '/sys/emailLogin/login' : ctxAdmin + '/login'}">${text('账号登录')}</a></li>
  25. <!-- <li><a href="#tab-2" data-toggle="tab" action="${ctxPath}/account/loginByValidCode">${text('手机登录')}</a></li>-->
  26. <% if(isNotBlank(@Global.getConfig('shiro.ldapUrl'))){ %>
  27. <!-- <li><a href="#tab-3" data-toggle="tab" action="${ctxAdmin}/login-ldap">${text('LDAP登录')}</a></li>-->
  28. <% } %>
  29. </ul>
  30. <% } %>
  31. <#form:form id="loginForm" model="${user!}" action="${isEmailLoginEnabled ? ctxAdmin + '/sys/emailLogin/login' : ctxAdmin + '/login'}" method="post" class="tab-content">
  32. <% if(!isLoginByValidCode && isBlank(message!)){ %>
  33. <h4 class="login-box-msg">${text('欢迎回来')+'!'}</h4>
  34. <% }else if(isNotBlank(message!)){ %>
  35. <h4 class="login-box-msg text-red">${message}</h4>
  36. <% } %>
  37. <div class="form-group has-feedback">
  38. <span class="icon-user form-control-feedback" title="${text('登录账号')}"></span>
  39. <#form:input type="text" name="username" class="form-control required"
  40. data-msg-required="${text('请填写登录账号.')}" placeholder="${text('登录账号')}"
  41. value="${cookie('rememberUserCode')}"/>
  42. </div>
  43. <div class="form-group has-feedback tab-pane tab-1 tab-3 active">
  44. <span class="icon-lock form-control-feedback" title="${text('登录密码,鼠标按下显示密码')}"
  45. onmousedown="$('#password').attr('type','text')" onmouseup="$('#password').attr('type','password')"
  46. onmouseenter="$(this).removeClass('icon-lock').addClass('icon-eye')"
  47. onmouseout="$(this).removeClass('icon-eye').addClass('icon-lock')"></span>
  48. <#form:input type="password" name="password" class="form-control required"
  49. data-msg-required="${text('请填写登录密码.')}" placeholder="${text('登录密码')}" autocomplete="off"/>
  50. </div>
  51. <% if(isEmailLoginEnabled){ %>
  52. <div class="form-group has-feedback tab-pane tab-1 active email-login-row">
  53. <span class="icon-envelope form-control-feedback" title="${text('绑定邮箱')}"></span>
  54. <#form:input type="text" name="email" id="email" class="form-control required email"
  55. data-msg-required="${text('请填写绑定邮箱')}" data-msg-email="${text('请填写正确的邮箱地址')}"
  56. placeholder="${text('绑定邮箱')}" autocomplete="off"/>
  57. </div>
  58. <div class="form-group has-feedback tab-pane tab-1 active email-login-row">
  59. <div class="input-group email-code-group">
  60. <span class="icon-shield form-control-feedback" title="${text('邮箱验证码')}"></span>
  61. <input type="text" id="emailCode" name="emailCode" maxlength="6"
  62. class="form-control required digits" data-msg-required="${text('请填写邮箱验证码')}"
  63. data-msg-digits="${text('邮箱验证码为6位数字')}" data-rule-rangelength="6,6"
  64. data-msg-rangelength="${text('邮箱验证码为6位数字')}" placeholder="${text('邮箱验证码')}" autocomplete="off" />
  65. <span class="input-group-btn">
  66. <input type="button" id="sendEmailLoginCode" value="${text('获取验证码')}" class="btn btn-flat" disabled="disabled"/>
  67. </span>
  68. </div>
  69. </div>
  70. <% } %>
  71. <% if(@Global.getConfigToBoolean('user.loginCodeCorpUnique', 'false')){ %>
  72. <div class="form-group has-feedback">
  73. <#form:treeselect id="switchCorpSelect" title="${text('登录租户')}" allowClear="false"
  74. name="param_corpCode" url="${ctxAdmin}/sys/corpAdmin/treeData?isShowCode=true" placeholder="${text('登录租户')}"/>
  75. </div>
  76. <% } %>
  77. <div class="form-group has-feedback" id="isValidCodeLogin" style="display:${isValidCodeLogin?'blank':'none'}">
  78. <#form:validcode name="validCode" isRequired="true" isRemote="true" isLazy="${!isValidCodeLogin}"/>
  79. </div>
  80. <div class="form-group has-feedback tab-pane tab-2">
  81. <div class="input-group">
  82. <input type="text" id="loginValidCode" name="loginValidCode" class="form-control required"
  83. data-msg-required="${text('请填写手机验证码.')}" placeholder="${text('手机验证码')}" />
  84. <span class="input-group-btn">
  85. <input type="button" id="sendLoginValidCode" value="${text('获取手机验证码')}" class="btn btn-flat"/>
  86. </span>
  87. </div>
  88. </div>
  89. <div class="form-group">
  90. <div class="mt5 icheck">
  91. <label title="${text('公共场所慎用,下次不需要再填写帐号')}"><input type="checkbox"
  92. name="rememberUserCode"${isNotBlank(cookie('rememberUserCode'))?' checked':''}
  93. class="form-control" data-style="minimal-grey"> ${text('记住账号')}</label> &nbsp;
  94. <label title="${text('公共场所慎用,下次不需要再填写帐号和密码')}"><input type="checkbox"
  95. name="rememberMe"${isNotBlank(cookie('rememberMe'))?' checked':''}
  96. class="form-control" data-style="minimal-grey"> ${text('自动登录')}</label>
  97. </div>
  98. </div>
  99. <div class="form-group">
  100. <!-- <input type="hidden" name="param_deviceType" value="pc"> -->
  101. <input type="hidden" name="__url" value="${parameter.__url!}">
  102. <button type="submit" class="btn btn-primary btn-block btn-flat"
  103. id="btnSubmit" data-loading="${text('登录验证成功,正在进入...')}"
  104. data-login-valid="${text('正在验证登录,请稍候...')}">${text('立即登录')}</button>
  105. </div>
  106. </#form:form>
  107. <div class="row">
  108. <div class="col-xs-12">
  109. <!-- <a href="${ctxPath}/account/forgetPwd" class="pull-left">[ ${text('忘记密码')} ]</a>-->
  110. <% if(@Global.getConfigToBoolean('sys.account.registerUser', 'false')){ %>
  111. <a href="${ctxPath}/account/registerUser" class="pull-left ml10">[ ${text('注册账号')} ]</a>
  112. <% } %>
  113. <% if (@com.jeesite.common.i18n.I18nLocaleResolver.enabled()){ %>
  114. <div class="dropdown pull-right">
  115. <a href="javascript:" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown">
  116. <i class="fa icon-globe"></i> ${@DictUtils.getDictLabel('sys_lang_type', lang(), 'zh_CN')}
  117. </a>
  118. <ul class="dropdown-menu">
  119. <li class="mt5"></li>
  120. <% for(var dict in @DictUtils.getDictList('sys_lang_type')){ %>
  121. <li><a href="${ctxPath}/lang/${dict.dictValue}">${dict.dictLabel}</a></li>
  122. <% } %>
  123. <li class="mt10"></li>
  124. </ul>
  125. </div>
  126. <% } %>
  127. </div>
  128. </div>
  129. </div>
  130. <div class="login-copyright">
  131. &copy; ${@DateUtils.getYear()} ${@Global.getConfig('productName')} - Powered By <a
  132. id="loginKey" data-key="${@Global.getConfig('shiro.loginSubmit.secretKey')}"
  133. href="#">${@Global.getConfig('companyName')}</a>
  134. </div>
  135. </div>
  136. </div>
  137. <% } %>
  138. <script src="${ctxStatic}/common/des.js?${_version}"></script>
  139. <script src="${ctxStatic}/jquery-toastr/2.1/toastr.min.js?${_version}"></script>
  140. <script src="${ctxStatic}/modules/sys/sysLogin.js?${_version}"></script>