From b2ce9d31f8ca8dcec397cb1a0398292a5e2fc9ef Mon Sep 17 00:00:00 2001 From: DXC Date: Fri, 27 Mar 2026 09:04:13 +0800 Subject: [PATCH] fix(stocktake): replace hardcoded 'admin' with actual current user in excel export --- inventory-backend/app/api/v1/inbound/stock.py | 17 +++++++++++------ .../src/views/stock/stocktake/index.vue | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/inventory-backend/app/api/v1/inbound/stock.py b/inventory-backend/app/api/v1/inbound/stock.py index b8d93fd..85be817 100644 --- a/inventory-backend/app/api/v1/inbound/stock.py +++ b/inventory-backend/app/api/v1/inbound/stock.py @@ -1,7 +1,7 @@ from flask import Blueprint, jsonify, request, send_file, current_app from app.extensions import db, beijing_time from datetime import datetime, timedelta -from flask_jwt_extended import jwt_required +from flask_jwt_extended import jwt_required, get_jwt, get_jwt_identity from app.utils.decorators import permission_required import uuid as uuid_module import io @@ -32,11 +32,16 @@ except ImportError: StockProduct = None -def _normalize_user_id(user_id): +def _normalize_user_id(user_id=None): """规范化 user_id,确保是有效字符串""" - if not user_id or not isinstance(user_id, str) or len(user_id) > 100: - return 'admin' - return user_id.strip() + # 优先使用传入的 user_id,否则从 JWT 获取 + if user_id and isinstance(user_id, str) and len(user_id) <= 100: + return user_id.strip() + # 从 JWT 获取当前用户 + try: + return get_jwt().get('display_name') or get_jwt_identity() + except: + return 'unknown' def get_stock_model(source_table): @@ -342,7 +347,7 @@ def add_draft(): """ try: data = request.json - user_id = _normalize_user_id(data.get('user_id', 'admin')) + user_id = _normalize_user_id() uuid = data.get('uuid') quantity = float(data.get('quantity', 1)) session_id = data.get('session_id') diff --git a/inventory-web/src/views/stock/stocktake/index.vue b/inventory-web/src/views/stock/stocktake/index.vue index ac8b519..ffd1233 100644 --- a/inventory-web/src/views/stock/stocktake/index.vue +++ b/inventory-web/src/views/stock/stocktake/index.vue @@ -420,7 +420,7 @@ import request from '@/utils/request' import { useUserStore } from '@/stores/user' const userStore = useUserStore() -const currentUser = userStore.username || 'admin' +const currentUser = userStore.userInfo?.display_name || userStore.userInfo?.username || userStore.username || '未知用户' interface StockItem { id: number