fix: 统一系统生成时间为北京时间(UTC+8)并优化审计日志表格列展示

This commit is contained in:
DXC
2026-03-10 17:33:14 +08:00
parent de0a5c8db2
commit cd192624b9
8 changed files with 26 additions and 20 deletions

View File

@ -2,6 +2,7 @@ from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_cors import CORS
from flask_jwt_extended import JWTManager # 确保引入了 JWTManager
from datetime import datetime, timezone, timedelta
# 1. 创建扩展实例(此时未绑定具体的 App
db = SQLAlchemy()
@ -10,6 +11,11 @@ cors = CORS()
jwt = JWTManager() # 必须实例化
def beijing_time():
"""获取北京时间 (UTC+8)"""
return datetime.now(timezone(timedelta(hours=8)))
# 2. 定义初始化函数 (供工厂函数 create_app 调用)
def init_extensions(app):
"""

View File

@ -1,5 +1,5 @@
# inventory-backend/app/models/audit.py
from app.extensions import db
from app.extensions import db, beijing_time
from datetime import datetime
@ -25,7 +25,7 @@ class AuditLog(db.Model):
url = db.Column(db.String(500)) # 请求URL
status_code = db.Column(db.Integer) # 响应状态码
error_message = db.Column(db.Text) # 错误信息(如有)
created_at = db.Column(db.DateTime, default=datetime.now, index=True) # 操作时间
created_at = db.Column(db.DateTime, default=beijing_time, index=True) # 操作时间
def to_dict(self):
return {

View File

@ -1,5 +1,5 @@
# inventory-backend/app/models/inbound/service.py
from app.extensions import db
from app.extensions import db, beijing_time
from datetime import datetime
@ -35,8 +35,8 @@ class StockService(db.Model):
status = db.Column(db.String(20), default='active')
# 时间与系统字段
created_at = db.Column(db.DateTime, default=datetime.now, nullable=False)
updated_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)
created_at = db.Column(db.DateTime, default=beijing_time, nullable=False)
updated_at = db.Column(db.DateTime, default=beijing_time, onupdate=beijing_time)
is_deleted = db.Column(db.Boolean, default=False)
# ==========================================================================

View File

@ -1,4 +1,4 @@
from app.extensions import db # .material -> .base refactor checked
from app.extensions import db, beijing_time # .material -> .base refactor checked
from datetime import datetime
class StocktakeDraft(db.Model):
@ -9,7 +9,7 @@ class StocktakeDraft(db.Model):
uuid = db.Column(db.String(100))
# ★ 新增 quantity 字段
quantity = db.Column(db.Numeric(19, 4), default=1)
scan_time = db.Column(db.DateTime, default=datetime.now)
scan_time = db.Column(db.DateTime, default=beijing_time)
def to_dict(self):
return {

View File

@ -1,4 +1,4 @@
from app.extensions import db
from app.extensions import db, beijing_time
from datetime import datetime
@ -25,7 +25,7 @@ class TransOutbound(db.Model):
# 签字与追溯
consumer_name = db.Column(db.String(100)) # 领用人/客户
signature_path = db.Column(db.Text) # 电子签名图片路径
outbound_time = db.Column(db.DateTime, default=datetime.now)
outbound_time = db.Column(db.DateTime, default=beijing_time)
operator_name = db.Column(db.String(100)) # 操作员
remark = db.Column(db.Text)

View File

@ -1,5 +1,5 @@
# inventory-backend/app/models/system.py
from app.extensions import db
from app.extensions import db, beijing_time
from werkzeug.security import generate_password_hash, check_password_hash
from datetime import datetime
@ -22,7 +22,7 @@ class SysUser(db.Model):
role = db.Column(db.String(50))
status = db.Column(db.String(20), default='active')
password_hash = db.Column(db.Text)
created_at = db.Column(db.DateTime, default=datetime.now)
created_at = db.Column(db.DateTime, default=beijing_time)
def set_password(self, password):
"""生成加密密码"""
@ -76,7 +76,7 @@ class SysLog(db.Model):
__tablename__ = 'sys_log'
id = db.Column(db.Integer, primary_key=True)
op_time = db.Column(db.DateTime, default=datetime.now)
op_time = db.Column(db.DateTime, default=beijing_time)
op_user_name = db.Column(db.String(100))
op_user_id = db.Column(db.String(50))
module_name = db.Column(db.String(100))
@ -167,7 +167,7 @@ class SysWarehouseLocation(db.Model):
full_path = db.Column(db.String(500)) # 完整路径,如 "A区/货架1/第3层"
level = db.Column(db.Integer, default=0) # 层级深度顶级为0
is_enabled = db.Column(db.Boolean, default=True)
created_at = db.Column(db.DateTime, default=datetime.now)
created_at = db.Column(db.DateTime, default=beijing_time)
# 注意:数据库表中没有 updated_at 字段,不要添加!
# 自关联 - 使用 backref 定义父节点的反向引用

View File

@ -1,4 +1,4 @@
from app.extensions import db
from app.extensions import db, beijing_time
from datetime import datetime
from sqlalchemy import func
@ -14,7 +14,7 @@ class TransBorrow(db.Model):
barcode = db.Column(db.String(100))
quantity = db.Column(db.Numeric(19, 4))
borrower_name = db.Column(db.String(100))
borrow_time = db.Column(db.DateTime, default=datetime.now)
borrow_time = db.Column(db.DateTime, default=beijing_time)
borrow_signature = db.Column(db.Text)
expected_return_time = db.Column(db.DateTime)
is_returned = db.Column(db.Boolean, default=False)
@ -110,7 +110,7 @@ class TransScrap(db.Model):
quantity = db.Column(db.Numeric(19, 4))
reason = db.Column(db.Text)
operator_name = db.Column(db.String(100))
operation_time = db.Column(db.DateTime, default=datetime.now)
operation_time = db.Column(db.DateTime, default=beijing_time)
approver_name = db.Column(db.String(100))
approval_status = db.Column(db.String(20), default='pending')
cost_at_scrap = db.Column(db.Numeric(19, 4))