index.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>祈盟网络管理后台</title>
  6. <meta name="renderer" content="webkit|ie-comp|ie-stand">
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  8. <!-- <meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi"/> -->
  9. <meta http-equiv="Cache-Control" content="no-siteapp" />
  10. <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
  11. <link rel="stylesheet" href="__STATIC__/css/admin/font.css">
  12. <link rel="stylesheet" href="__STATIC__/css/admin/xadmin.css">
  13. <!-- font-awesome CDN -->
  14. <link rel="stylesheet" href="__STATIC__/css/admin/Font-Awesome-4.7.0.css">
  15. <script type="text/javascript" src="__STATIC__/js/jquery_v3.3.1.js"></script>
  16. <script type="text/javascript" src="__STATIC__/lib/layui/layui.js" charset="utf-8"></script>
  17. <script type="text/javascript" src="__STATIC__/js/admin/xadmin.js?v={$Think.STATIC_VERSION}"></script>
  18. <style>
  19. .layui-layer-page .layui-layer-content {
  20. margin-top: 20px;
  21. }
  22. .set_disabled {
  23. border-color: lightgrey !important;
  24. background-color: lightgrey !important;
  25. color: #fff;
  26. pointer-events: none;
  27. }
  28. .footer {
  29. background: transparent;
  30. text-align: center;
  31. border-top: none;
  32. }
  33. .footer p {
  34. width: 1200px;
  35. color: #fff;
  36. font-family: "SimSun";
  37. font-size: 12px;
  38. text-align: center;
  39. margin: 0 auto;
  40. }
  41. .footer a {
  42. color: #fff;
  43. }
  44. .layui-form .inputbox {
  45. width: 100%;
  46. height: 50px;
  47. display: flex;
  48. }
  49. .layui-form .inputbox p {
  50. width: 20%;
  51. height: 50px;
  52. font-size: 14px;
  53. color: rgb(85, 85, 85);
  54. line-height: 50px;
  55. }
  56. </style>
  57. {block name="detail_css"}{/block}
  58. </head>
  59. <body class="login-bg">
  60. <div class="login">
  61. <div class="message">{:getEnvs('brand_name')}后台管理系统登录</div>
  62. <div id="darkbannerwrap"></div>
  63. <form class="layui-form" method="post">
  64. <div class="inputbox">
  65. <p>用户名:</p>
  66. <input name="username" type="text" class="layui-input" placeholder="请输入用户名" lay-verify="required">
  67. </div>
  68. <hr class="hr15">
  69. <div class="inputbox">
  70. <p>密码:</p>
  71. <input name="password" type="password" class="layui-input" placeholder="请输入密码" lay-verify="required">
  72. </div>
  73. <hr class="hr15">
  74. <input value="登录" class="layui-btn" lay-submit lay-filter="login"
  75. style="width:100%;height: 50px;background: rgb(49, 111, 152);">
  76. <hr class="hr20">
  77. </form>
  78. </div>
  79. <div class="footer">
  80. <p>杭州祈盟文化传媒有限公司版权所有 <a href="http://beian.miit.gov.cn" target="_blank">浙ICP备2023025401号-1</a>
  81. </p>
  82. </div>
  83. </body>
  84. <script>
  85. $(function () {
  86. layui.use(['form', 'layer'], function () {
  87. var form = layui.form,
  88. layer = layui.layer;
  89. //监听提交
  90. form.on('submit(login)', function (data) {
  91. // console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
  92. console.log("## form: ", "{:url('admin/Login/index', [], false, ADMIN_DOMAIN_URL)}")
  93. $.ajax({
  94. type: "post",
  95. url: "{:url('admin/Login/index', [], false, ADMIN_DOMAIN_URL)}",
  96. async: true,
  97. timeOut: 5000,
  98. dataType: "json",
  99. data: data.field,
  100. beforeSend: function () {
  101. var usename = $("input[name=username]").val();
  102. if (usename == "") {
  103. layer.msg("请输入用户名");
  104. }
  105. var password = $("input[name=password]").val();
  106. if (password == "") {
  107. layer.msg("请输入密码");
  108. }
  109. },
  110. success: function (data) {
  111. if (data['code'] == 1) {
  112. window.location.href = "{:url('/admin/index/index', [], false, ADMIN_DOMAIN_URL)}";
  113. } else if (data['code'] == 2) {
  114. updatePwd(data.data.id);
  115. } else if (data['code'] == 3) {
  116. sendSms(data.data.mobile)
  117. } else if (data['code'] == 0) {
  118. layer.msg(data['msg']);
  119. } else {
  120. window.location.reload();
  121. }
  122. },
  123. error: function () {
  124. layer.msg("网络错误,请刷新页面重试");
  125. },
  126. complete: function () {
  127. $("#login_btn").html("登录");
  128. }
  129. });
  130. return false;
  131. });
  132. });
  133. })
  134. function updatePwd(id) {
  135. html = '<form class="layui-form" method="post" id="updatePwdForm"> ' +
  136. '<input type="hidden" name="id" id="id" value="' + id + '">' +
  137. '<div class="layui-form-item">' +
  138. ' <label for="" class="layui-form-label">' +
  139. ' <span class="x-red">*</span>旧 密 码:' +
  140. ' </label>' +
  141. ' <div class="layui-input-inline">' +
  142. ' <input type="password" name="old_password" id="old_password" required="" lay-verify="" autocomplete="off" class="layui-input">' +
  143. ' </div>' +
  144. '</div>' +
  145. '<div class="layui-form-item">' +
  146. ' <label for="" class="layui-form-label">' +
  147. ' <span class="x-red">*</span>新&nbsp;密&nbsp;码:' +
  148. ' </label>' +
  149. ' <div class="layui-input-inline">' +
  150. ' <input type="password" name="new_password" id="new_password" required="" lay-verify="" autocomplete="off" class="layui-input">' +
  151. ' </div>' +
  152. '</div>' +
  153. '<div class="layui-form-item">' +
  154. ' <label for="" class="layui-form-label">' +
  155. ' <span class="x-red">*</span>密码确认:' +
  156. ' </label>' +
  157. ' <div class="layui-input-inline">' +
  158. ' <input type="password" name="re_password" id="re_password" required="" lay-verify="" autocomplete="off" class="layui-input">' +
  159. ' </div>' +
  160. '</div>' +
  161. '</form>';
  162. layer.open({
  163. type: 1,
  164. title: '您的登录密码已过有效期,需重新设置!', //不显示标题栏
  165. closeBtn: 1,
  166. area: '500px;',
  167. shade: 0.8,
  168. id: 'LAY_layuipro', //设定一个id,防止重复弹出
  169. btn: ['提交', '关闭'],
  170. moveType: 1,
  171. content: html,
  172. yes: function (layero) {
  173. changePassword('{:url("admin/Login/changePassword")}');
  174. }
  175. });
  176. }
  177. function changePassword(url) {
  178. if ('' == $.trim($("#old_password").val())) {
  179. layer.alert('请输入旧密码');
  180. return false;
  181. } else if ('' == $.trim($("#new_password").val())) {
  182. layer.alert('请输入新密码');
  183. return false;
  184. } else if ('' == $.trim($("#re_password").val())) {
  185. layer.alert('请输入确认密码');
  186. return false;
  187. }
  188. $.ajax({
  189. type: "POST",
  190. url: url,
  191. data: $('#updatePwdForm').serialize(),
  192. dataType: "json",
  193. cache: false,
  194. success: function (data) {
  195. if (data.code == 1) {
  196. layer.closeAll();
  197. }
  198. layer.alert(data.msg);
  199. },
  200. error: function (XMLHttpRequest, status) {
  201. layer.alert("网络错误,请刷新页面重试");
  202. }
  203. });
  204. return false;
  205. }
  206. function sendSms(mobile) {
  207. html =
  208. '<form class="layui-form" method="post" id="sendSmsForm"><div class ="layui-form-item"><label for ="mobile" class = "layui-form-label"> 预留手机号:</label><div class ="layui-input-inline"><input type ="text" id="mobile" name="mobile" autocomplete="off" class="layui-input" readonly value= "' +
  209. mobile +
  210. '" style="display: none;"><input type = "text" id ="show_mobile" name ="show_mobile" autocomplete = "off" class = "layui-input" readonly value = "' +
  211. mobile +
  212. '"></div></div><div class ="layui-form-item"><label for = "sms_code" class ="layui-form-label">短信验证码:</label><div class = "layui-input-inline"><input type = "text" id ="sms_code" name="sms_code" required autocomplete ="off" class = "layui-input" placeholder="6位短信验证码"></div></div></form>';
  213. layer.open({
  214. type: 1,
  215. title: '短信辅助验证', //不显示标题栏
  216. closeBtn: 1,
  217. area: '500px;',
  218. shade: 0.8,
  219. id: 'LAY_layuipro2', //设定一个id,防止重复弹出
  220. btn: ['发送验证码', '登录'],
  221. moveType: 1,
  222. content: html,
  223. yes: function (layero) {
  224. doSendSms('{:url("admin/Login/sendSmsCode")}');
  225. },
  226. btn2: function (layero) {
  227. doLogin();
  228. return false;
  229. }
  230. });
  231. var new_str = hide_code($("#show_mobile").val(), 3, 4, '*');
  232. $("#show_mobile").val(new_str)
  233. }
  234. function doSendSms(url) {
  235. if ('' == $.trim($("#mobile").val())) {
  236. layer.alert('手机号为空!');
  237. location.href = "{:url('admin/index/index')}";
  238. return false;
  239. }
  240. $.ajax({
  241. type: "POST",
  242. url: url,
  243. data: $('#sendSmsForm').serialize(),
  244. dataType: "json",
  245. cache: false,
  246. success: function (data) {
  247. if (data.msg == "发送成功,请查收") {
  248. time();
  249. }
  250. layer.msg(data.msg);
  251. },
  252. error: function (XMLHttpRequest, status) {
  253. layer.alert("网络错误,请刷新页面重试");
  254. }
  255. });
  256. return false;
  257. }
  258. //短信验证登录
  259. function doLogin() {
  260. mobile = $.trim($("#mobile").val());
  261. sms_code = $.trim($("#sms_code").val());
  262. if ('' == $.trim($("#mobile").val())) {
  263. layer.alert('手机号为空!');
  264. location.href = "{:url('admin/index/index')}";
  265. return false;
  266. }
  267. if ('' == $.trim($("#sms_code").val())) {
  268. layer.alert('验证码不能为空!');
  269. return false;
  270. }
  271. $.ajax({
  272. type: "POST",
  273. url: '{:url("admin/Login/loginSms")}',
  274. data: {
  275. sms_code: sms_code
  276. },
  277. dataType: "json",
  278. cache: false,
  279. success: function (data) {
  280. if (data.code == 1) {
  281. layer.closeAll();
  282. location.href = "{:url('admin/index/index')}";
  283. }
  284. layer.msg(data.msg);
  285. },
  286. error: function (XMLHttpRequest, status) {
  287. layer.alert("网络错误,请刷新页面重试");
  288. }
  289. });
  290. return false;
  291. }
  292. var hide_code = function (str, pos, length, newChar) {
  293. pos = pos || 0;
  294. length = length || 0;
  295. newChar = newChar || '*';
  296. if (pos < 0 || length <= 0 || pos + length > str.length) {
  297. return str;
  298. }
  299. var repStr = "";
  300. for (var i = 0; i < length; i++) {
  301. repStr += newChar;
  302. }
  303. return str.slice(0, pos) + repStr + str.slice(pos + length, str.length);
  304. }
  305. var timer = null;
  306. //倒计时
  307. function time() {
  308. var se = 60;
  309. if (timer) return;
  310. timer = setInterval(function () {
  311. // se = --se;
  312. se--;
  313. $(".layui-layer-btn.layui-layer-btn- .layui-layer-btn0").eq(0).addClass("set_disabled");
  314. $(".layui-layer-btn.layui-layer-btn- .layui-layer-btn0").eq(0).html(se + " 秒");
  315. if (se === 0) {
  316. $(".layui-layer-btn.layui-layer-btn- .layui-layer-btn0").eq(0).removeClass("set_disabled");
  317. $(".layui-layer-btn.layui-layer-btn- .layui-layer-btn0").eq(0).html('重新获取');
  318. clearInterval(timer);
  319. timer = null;
  320. }
  321. }, 1000);
  322. }
  323. </script>
  324. </html>