login.ejs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  6. <meta http-equiv="x-ua-compatible" content="ie=edge">
  7. <title>用户登录-计量支付</title>
  8. <link rel="stylesheet" href="/public/css/bootstrap/bootstrap.min.css">
  9. <link rel="stylesheet" href="/public/css/main.css">
  10. <link rel="stylesheet" href="/public/css/toast.css">
  11. <link rel="stylesheet" href="/public/css/font-awesome/font-awesome.min.css">
  12. <link rel="shortcut icon" href="/public/images/favicon.ico">
  13. <style>
  14. html{height:100%;}
  15. </style>
  16. </head>
  17. <body class="login-new-body">
  18. <div class="login-new-b d-flex flex-row align-items-center mt-5 ml-5">
  19. <div>
  20. <img src="/public/images/image_nav_logo.png">
  21. </div>
  22. <div class="ml-3">
  23. <div class="logo-big-title text-white mt-1">纵横云平台</div>
  24. <div class="logo-sm-title mt-1">计量支付&nbsp;&nbsp;&nbsp;结算决算</div>
  25. </div>
  26. <div class="side-border ml-4 mr-4"></div>
  27. <div class="top-subtitle">施工舒心 / 监理省心 / 业主安心</div>
  28. </div>
  29. <div class="container">
  30. <div class="d-flex justify-content-center align-items-center content-center">
  31. <div class="left-login text-white pt-5 px-5">
  32. <h2>Hi,您好!</h2>
  33. <div class="login-border my-4"></div>
  34. <div class="left-login-title" id="project_name">纵横捭阖 数“智”管家</div>
  35. </div>
  36. <% if (maintainData.status === maintainConst.status.ongoing) { %>
  37. <form class="right-login position-relative text-center">
  38. <h3 class="mt-5 mb-5"><i class="fa fa-wrench"></i>系统正在维护</h3>
  39. <div>&nbsp;</div>
  40. <h5 class="mt-5 mb-5">预计恢复时间<%- (maintainData.duration !== maintainConst.duration.forever ? '为 ' + ctx.helper.dateTran(parseFloat(maintainData.maintain_time) + ctx.helper.timeAdd(maintainData.duration)) : ' 暂未确定') %></h5>
  41. <h5>造成不便敬请谅解。</h5>
  42. </form>
  43. <% } else { %>
  44. <form method="post" action="/login" id="normal-form" class="right-login position-relative text-center" style="min-width: 360px;">
  45. <h3 class="mt-5 mb-5">欢迎登录</h3>
  46. <div class="position-absolute"><a href="javascript:void(0);" class="change-form" data-toggle="tooltip" data-placement="left" title="微信登录"><img alt="微信扫码登录" src="/public/images/icon_login_qr.png"></a></div>
  47. <div class="mx-4">
  48. <div class="input-group mb-4 <% if (errorMessage !== undefined && errorMessage !== null) { %>has-danger<% } %>">
  49. <div class="input-group-prepend">
  50. <div class="input-group-text"><img src="/public/images/icon_login_folder.png"></div>
  51. </div>
  52. <input type="text" id="project" class="form-control" name="project" placeholder="项目编号" autofocus="">
  53. </div>
  54. <div class="input-group mb-4 <% if (errorMessage !== undefined && errorMessage !== null) { %>has-danger<% } %>">
  55. <div class="input-group-prepend">
  56. <div class="input-group-text"><img src="/public/images/icon_login_user.png"></div>
  57. </div>
  58. <input type="text" id="account" class="form-control" name="account" placeholder="帐号" autofocus="">
  59. </div>
  60. <div class="input-group mb-2 <% if (errorMessage !== undefined && errorMessage !== null) { %>has-danger<% } %>">
  61. <div class="input-group-prepend">
  62. <div class="input-group-text"><img src="/public/images/icon_login_lock.png"></div>
  63. </div>
  64. <input type="password" id="project-password" name="project_password" class="form-control" placeholder="密码">
  65. </div>
  66. <div class="form-group mb-4">
  67. <div class="form-check d-flex justify-content-start pl-0">
  68. <label class="form-check-label" for="exampleCheck1"><a href="#fg-password" data-toggle="modal" data-target="#fg-password">忘记密码?</a></label>
  69. </div>
  70. </div>
  71. <div class="form-group mb-4">
  72. <div class="alert alert-danger" <% if(errorMessage === undefined || errorMessage === null) { %>style="display: none"<% } %> role="alert" id="error-msg">
  73. <% if(errorMessage !== undefined && errorMessage !== null) { %><strong>登录失败</strong> <%= errorMessage %><% } %>
  74. </div>
  75. </div>
  76. <button type="submit" class="btn btn-primary btn-block">登&nbsp;&nbsp;录</button>
  77. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>" />
  78. <input type="hidden" name="type" value="2" />
  79. </div>
  80. </form>
  81. <form id="code-form" class="right-login position-relative text-center" style="min-width: 360px;display: none">
  82. <h3 class="mt-5 mb-5">欢迎登录</h3>
  83. <div class="position-absolute"><a href="javascript:void(0);" class="change-form" data-toggle="tooltip" data-placement="left" title="账号登录"><img alt="账号登录" src="/public/images/icon_login_pc.png"></a></div>
  84. <div id="wx-code" style="text-align: center">
  85. </div>
  86. </form>
  87. <% } %>
  88. </div>
  89. <div class="text-white fixed-bottom"><p class="text-center mb-1">Copyright © 2019 <a href="https://smartcost.com.cn" target="_blank" class="text-white">珠海纵横创新软件有限公司</a>.All Rights Reserved.<a class="text-white ml-2" href="https://beian.miit.gov.cn" target="_blank">粤ICP备14032472号</a></p></div>
  90. </div>
  91. <!--忘记项目版密码-->
  92. <div class="modal fade" id="fg-password" data-backdrop="static">
  93. <div class="modal-dialog" role="document">
  94. <div class="modal-content">
  95. <div class="modal-header">
  96. <h5 class="modal-title">找回密码</h5>
  97. </div>
  98. <div class="modal-body">
  99. <div class="form-group">
  100. <label>项目编号</label>
  101. <input class="form-control" id="forget-project" placeholder="输入项目编号">
  102. <div class="invalid-feedback"></div>
  103. </div>
  104. <div class="form-group">
  105. <label>登录账号</label>
  106. <input class="form-control" id="forget-name" placeholder="输入登录账号">
  107. <div class="invalid-feedback"></div>
  108. </div>
  109. </div>
  110. <div class="modal-footer">
  111. <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
  112. <button type="button" class="btn btn-primary" id="forget-btn">重置密码</button>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. <!--忘记项目版密码-->
  118. <div class="modal fade" id="fg-password-done" data-backdrop="static">
  119. <div class="modal-dialog" role="document">
  120. <div class="modal-content">
  121. <div class="modal-header">
  122. <h5 class="modal-title">密码发送成功</h5>
  123. </div>
  124. <div class="modal-body">
  125. <h5>尊敬的 <b></b>,您的账号 <b></b>,新密码已经发送至 <b></b>,注意查收。</h5>
  126. </div>
  127. <div class="modal-footer">
  128. <button type="button" class="btn btn-secondary" data-dismiss="modal" id="focus-pwd">关闭</button>
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133. <!-- JS. -->
  134. <div class="toast" style="text-align: center">
  135. <i class="icon fa"></i>
  136. <span class="message"></span>
  137. </div>
  138. <!-- JS. -->
  139. <script src="/public/js/jquery/jquery-3.2.1.min.js"></script>
  140. <script src="/public/js/popper/popper.min.js"></script>
  141. <script src="/public/js/bootstrap/bootstrap.min.js"></script>
  142. <script src="/public/js/global.js"></script>
  143. <script>
  144. const csrf = '<%= ctx.csrf %>'
  145. </script>
  146. <script src="/public/js/login.js"></script>
  147. <script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
  148. <script>
  149. $(function () {
  150. const obj = new WxLogin({
  151. self_redirect:false,
  152. id:"wx-code",
  153. appid: "<%- appid %>",
  154. scope: "snsapi_login",
  155. redirect_uri: "<%- hostUrl %>/wxAuth",
  156. state: getQueryString('referer'),
  157. style: "black",
  158. href: ""
  159. });
  160. function getQueryString(name) {
  161. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  162. var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
  163. var context = "";
  164. if (r != null)
  165. context = r[2];
  166. reg = null;
  167. r = null;
  168. return context == null || context == "" || context == "undefined" ? "" : context;
  169. }
  170. $('.change-form').on('click', function () {
  171. $(this).parents('form').hide();
  172. $(this).parents('form').siblings('form').show();
  173. })
  174. })
  175. </script>
  176. </body>
  177. </html>