diff --git a/applications/extensions/init_sqlalchemy.py b/applications/extensions/init_sqlalchemy.py index c0aff14..d128c22 100644 --- a/applications/extensions/init_sqlalchemy.py +++ b/applications/extensions/init_sqlalchemy.py @@ -2,7 +2,8 @@ import datetime import os from flask import Flask, request -from flask_sqlalchemy import SQLAlchemy, BaseQuery +from flask_sqlalchemy import SQLAlchemy +from flask_sqlalchemy.query import Query as BaseQuery from flask_marshmallow import Marshmallow from marshmallow import fields from marshmallow.validate import ( diff --git a/requirements.txt b/requirements.txt index 4aec34f..9e385c2 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/templates/system/login.html b/templates/system/login.html index bef6b6d..63ffa51 100644 --- a/templates/system/login.html +++ b/templates/system/login.html @@ -43,6 +43,31 @@ let popup = layui.popup; let captchaPath = "{{ url_for('system.passport.get_captcha') }}"; + /** + * 刷新验证码函数 + */ + const refreshCaptchaImage = (function () { + let captchaImage = document.getElementById("captchaImage") + return function () { + captchaImage.src = captchaPath + "?" + Math.random() + } + })() + + /** + * 立即刷新验证码并且每隔 30秒 刷新 + */ + const initCaptchaImageTimer = (function () { + let captchaImageTimer = null + return function () { + clearInterval(captchaImageTimer) + captchaImageTimer = setInterval(function () { + refreshCaptchaImage() + }, 30 * 1000); + refreshCaptchaImage() + } + })() + initCaptchaImageTimer() + form.on('submit(login)', function (data) { let loader = layer.load(); let btn = button.load({elem: '.login'}); @@ -59,7 +84,7 @@ }) } else { popup.failure(result.msg, function () { - document.getElementById("captchaImage").src = captchaPath + "?" + Math.random(); + initCaptchaImageTimer() }); } }) @@ -67,13 +92,9 @@ }); return false; }); - $("#captchaImage").click(function () { - document.getElementById("captchaImage").src = captchaPath + "?" + Math.random(); + initCaptchaImageTimer() }); - setInterval(function () { - document.getElementById("captchaImage").src = captchaPath + "?" + Math.random(); - }, 30 * 1000); })