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 弹「请稍后」对话框,必须用户点「确定」(或等 15 秒倒计时)才跳转, * 体验很差;这里改为轻提示 + 自动跳转。 * @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) { console.log(res); if (res.code != 0) { layer.msg(res.message); refreshVerifyCode(); } else { layui.setter.setMenus(res.data.menus); layui.setter.permissions(res.data.permissions); // 自动跳转,无需再点「确定」 jump('/admin'); } }); return false; }); exports('login', {}); })