layui.define(['form', 'http'], function (exports) { var form = layui.form; function refreshVerifyCode() { const verifyImg = document.querySelector('[lay-filter="verifyCode"]'); if (verifyImg) { verifyImg.style.opacity = '0.7'; setTimeout(() => { const baseSrc = verifyImg.src.split('?')[0]; verifyImg.src = baseSrc + '?' + Date.now(); verifyImg.style.opacity = '1'; }, 100); } } const verifyImg = document.querySelector('[lay-filter="verifyCode"]'); if (verifyImg) { verifyImg.addEventListener('click', refreshVerifyCode); } /** * 登录成功后自动跳转(兼容 iframe 场景) * 原实现用 layer.alert 弹「请稍后」对话框,必须用户点「确定」才跳转,体验很差; * 这里改为轻提示 + 自动跳转。 * @param {string} url 目标地址 */ function jump(url) { layer.msg('登录成功,正在跳转…', { time: 800 }); setTimeout(function () { if (window.self !== window.top) { // 在 iframe 中,跳转顶级页面 window.top.location.href = url; } else { // 顶级窗口,直接跳转 window.location.href = url; } }, 600); } form.on('submit(dataSubmit)', function (obj) { let data = obj.field; layui.http.post("save", data) .then(function (res) { if (res.code != 0) { layer.msg(res.message); refreshVerifyCode(); } else { // 自动跳转,无需再点「确定」 // 注意:原实现跳转目标是 "/admin"(后台),前台访客登录后被送进后台登录页, // 属于复制 backend 模块时的遗留错误,这里改为前台首页。 jump('/'); } }); return false; }); exports('login', {}); })