login.ejs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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-body">
  18. <div class="login-bg img-<%- Math.floor(Math.random()*3 + 1); %>"></div>
  19. <div class="container">
  20. <div class="row">
  21. <div class="col-6">
  22. <img src="/public/images/loginlogo.png">
  23. </div>
  24. <div class="col-6">
  25. <% if (maintainData.status === maintainConst.status.ongoing) { %>
  26. <form class="form-signin">
  27. <h4 class="text-center mb-3"><i class="fa fa-wrench"></i>系统正在维护</h4>
  28. <h4>预计恢复时间<%- (maintainData.duration !== maintainConst.duration.forever ? '为 ' + ctx.helper.dateTran(parseFloat(maintainData.maintain_time) + ctx.helper.timeAdd(maintainData.duration)) : ' 暂未确定') %></h4>
  29. <h4>造成不便敬请谅解。</h4>
  30. </form>
  31. <% } else { %>
  32. <!--演示版-->
  33. <form class="form-signin" method="post" action="/login" id="normal-form" style="min-width: 360px;position: relative">
  34. <!--<div class="change-form" style="position: absolute;right: 0;top: 0px;cursor: pointer;"><i style="padding:5px;font-size: 50px;color: #212529" class="fa fa-qrcode"></i></div>-->
  35. <div class="change-form" data-toggle="tooltip" data-placement="left" title="微信登录" style="position: absolute;right: 0;top: 0px;cursor: pointer;"><img alt="微信扫码登录" style="padding:5px;" width="50px" src="/public/images/icon-qrcode.png"></div>
  36. <!-- <h4 class="text-center mb-2">纵横云计量</h4> -->
  37. <h5 class="text-center mb-2" id="project_name"></h5>
  38. <h5 class="text-center mb-4 text-muted">用户登录</h5>
  39. <!--<nav class="nav nav-tabs nav-justified mb-3" role="tablist" id="login-tab">-->
  40. <!--<a class="nav-item nav-link" data-toggle="tab" data-type="1" href="#preview" role="tab">演示版登录</a>-->
  41. <!--<a class="nav-item nav-link active" data-toggle="tab" data-type="2" href="#paid" role="tab">项目版登录</a>-->
  42. <!--</nav>-->
  43. <div class="tab-content">
  44. <!--<div class="tab-pane active" id="preview" role="tabpanel">-->
  45. <!--<div class="form-group <% if (errorMessage !== undefined && errorMessage !== null) { %>has-danger<% } %>">-->
  46. <!--<input id="username" name="username" class="form-control form-control-sm" placeholder="通行账号 邮箱/手机" value="laiku123@qq.com" autofocus="">-->
  47. <!--</div>-->
  48. <!--<div class="form-group <% if (errorMessage !== undefined && errorMessage !== null) { %>has-danger<% } %>">-->
  49. <!--<input id="password" name="password" class="form-control form-control-sm" placeholder="输入密码" value="19930523" type="password">-->
  50. <!--</div>-->
  51. <!--</div>-->
  52. <div class="tab-pane active" id="paid" role="tabpanel">
  53. <div class="form-group <% if (errorMessage !== undefined && errorMessage !== null) { %>has-danger<% } %>">
  54. <input id="project" class="form-control" name="project" placeholder="项目编号" autofocus="" />
  55. </div>
  56. <div class="form-group <% if (errorMessage !== undefined && errorMessage !== null) { %>has-danger<% } %>">
  57. <input id="account" class="form-control" name="account" placeholder="输入账号" autofocus="" />
  58. </div>
  59. <div class="form-group <% if (errorMessage !== undefined && errorMessage !== null) { %>has-danger<% } %>">
  60. <input id="project-password" name="project_password" class="form-control" placeholder="输入密码" type="password" />
  61. </div>
  62. </div>
  63. <div class="form-group">
  64. <div class="alert alert-danger" <% if(errorMessage === undefined || errorMessage === null) { %>style="display: none"<% } %> role="alert" id="error-msg">
  65. <% if(errorMessage !== undefined && errorMessage !== null) { %><strong>登录失败</strong> <%= errorMessage %><% } %>
  66. </div>
  67. </div>
  68. </div>
  69. <div class="form-group">
  70. <button class="btn btn-primary btn-block" type="submit">登录</button>
  71. <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>" />
  72. <input type="hidden" name="type" value="2" />
  73. </div>
  74. <div class="pt-1 d-flex justify-content-end">
  75. <a href="#fg-password" data-toggle="modal" data-target="#fg-password" class="mr-3">忘记密码?</a>
  76. </div>
  77. </form>
  78. <form class="form-signin" id="code-form" style="min-width: 360px;position: relative;display: none">
  79. <!--<div class="change-form" style="position: absolute;right: 0;top: 0px;cursor: pointer;"><i style="padding:5px;font-size: 40px;color: #212529" class="fa fa-laptop"></i></div>-->
  80. <div class="change-form" data-toggle="tooltip" data-placement="left" title="账号登录" style="position: absolute;right: 0;top: 0px;cursor: pointer;"><img alt="账号登录" style="padding:5px;" width="50px" src="/public/images/icon-pc.png"></div>
  81. <div id="wx-code" style="text-align: center">
  82. </div>
  83. </form>
  84. <% } %>
  85. <!--项目版-->
  86. </div>
  87. </div>
  88. <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="http://www.miitbeian.gov.cn" target="_blank">粤ICP备14032472号</a></p></div>
  89. </div>
  90. <!--忘记项目版密码-->
  91. <div class="modal fade" id="fg-password" data-backdrop="static">
  92. <div class="modal-dialog" role="document">
  93. <div class="modal-content">
  94. <div class="modal-header">
  95. <h5 class="modal-title">找回密码</h5>
  96. </div>
  97. <div class="modal-body">
  98. <div class="form-group">
  99. <label>项目编号</label>
  100. <input class="form-control" id="forget-project" placeholder="输入项目编号">
  101. <div class="invalid-feedback"></div>
  102. </div>
  103. <div class="form-group">
  104. <label>登录账号</label>
  105. <input class="form-control" id="forget-name" placeholder="输入登录账号">
  106. <div class="invalid-feedback"></div>
  107. </div>
  108. </div>
  109. <div class="modal-footer">
  110. <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
  111. <button type="button" class="btn btn-primary" id="forget-btn">重置密码</button>
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. <!--忘记项目版密码-->
  117. <div class="modal fade" id="fg-password-done" data-backdrop="static">
  118. <div class="modal-dialog" role="document">
  119. <div class="modal-content">
  120. <div class="modal-header">
  121. <h5 class="modal-title">密码发送成功</h5>
  122. </div>
  123. <div class="modal-body">
  124. <h5>尊敬的 <b></b>,您的账号 <b></b>,新密码已经发送至 <b></b>,注意查收。</h5>
  125. </div>
  126. <div class="modal-footer">
  127. <button type="button" class="btn btn-secondary" data-dismiss="modal" id="focus-pwd">关闭</button>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. <!-- JS. -->
  133. <div class="toast" style="text-align: center">
  134. <i class="icon fa"></i>
  135. <span class="message"></span>
  136. </div>
  137. <!-- JS. -->
  138. <script src="/public/js/jquery/jquery-3.2.1.min.js"></script>
  139. <script src="/public/js/popper/popper.min.js"></script>
  140. <script src="/public/js/bootstrap/bootstrap.min.js"></script>
  141. <script src="/public/js/global.js"></script>
  142. <script>
  143. const csrf = '<%= ctx.csrf %>'
  144. </script>
  145. <script src="/public/js/login.js"></script>
  146. <script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
  147. <script>
  148. $(function () {
  149. const obj = new WxLogin({
  150. self_redirect:false,
  151. id:"wx-code",
  152. appid: "wx5320cd30cecdbd68",
  153. scope: "snsapi_login",
  154. redirect_uri: "<%- hostUrl %>/wxAuth",
  155. state: getQueryString('referer'),
  156. style: "black",
  157. href: ""
  158. });
  159. function getQueryString(name) {
  160. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  161. var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
  162. var context = "";
  163. if (r != null)
  164. context = r[2];
  165. reg = null;
  166. r = null;
  167. return context == null || context == "" || context == "undefined" ? "" : context;
  168. }
  169. $('.change-form').on('click', function () {
  170. $(this).parents('form').hide();
  171. $(this).parents('form').siblings('form').show();
  172. })
  173. })
  174. </script>
  175. </body>
  176. </html>