Compare commits

2 Commits

2 changed files with 21 additions and 13 deletions

View File

@ -1,7 +1,7 @@
from flask import Blueprint, jsonify, request, send_file, current_app from flask import Blueprint, jsonify, request, send_file, current_app
from app.extensions import db, beijing_time from app.extensions import db, beijing_time
from datetime import datetime, timedelta 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 from app.utils.decorators import permission_required
import uuid as uuid_module import uuid as uuid_module
import io import io
@ -32,11 +32,16 @@ except ImportError:
StockProduct = None StockProduct = None
def _normalize_user_id(user_id): def _normalize_user_id(user_id=None):
"""规范化 user_id确保是有效字符串""" """规范化 user_id确保是有效字符串"""
if not user_id or not isinstance(user_id, str) or len(user_id) > 100: # 优先使用传入的 user_id否则从 JWT 获取
return 'admin' if user_id and isinstance(user_id, str) and len(user_id) <= 100:
return user_id.strip() 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): def get_stock_model(source_table):
@ -342,7 +347,7 @@ def add_draft():
""" """
try: try:
data = request.json data = request.json
user_id = _normalize_user_id(data.get('user_id', 'admin')) user_id = _normalize_user_id()
uuid = data.get('uuid') uuid = data.get('uuid')
quantity = float(data.get('quantity', 1)) quantity = float(data.get('quantity', 1))
session_id = data.get('session_id') session_id = data.get('session_id')

View File

@ -420,7 +420,7 @@ import request from '@/utils/request'
import { useUserStore } from '@/stores/user' import { useUserStore } from '@/stores/user'
const userStore = useUserStore() const userStore = useUserStore()
const currentUser = userStore.username || 'admin' const currentUser = userStore.userInfo?.display_name || userStore.userInfo?.username || userStore.username || '未知用户'
interface StockItem { interface StockItem {
id: number id: number
@ -889,6 +889,8 @@ const syncToBackend = (uuid: string, quantity: number, remark: string) => {
api.addDraft({ uuid, quantity, remark }) api.addDraft({ uuid, quantity, remark })
.then(() => { .then(() => {
syncStatus.value = 'success' syncStatus.value = 'success'
// 静默刷新统计数字
fetchInventoryList(true)
}) })
.catch(() => { .catch(() => {
syncStatus.value = 'failed' syncStatus.value = 'failed'
@ -970,8 +972,9 @@ const filteredVarianceList = computed(() => {
}) })
// ★ 新增: 获取盘点清单数据(合并全量应盘物资 + 已盘点记录) // ★ 新增: 获取盘点清单数据(合并全量应盘物资 + 已盘点记录)
const fetchInventoryList = async () => { // silent: 是否静默模式(不显示 loading不报错
listLoading.value = true const fetchInventoryList = async (silent = false) => {
if (!silent) listLoading.value = true
try { try {
// 1. 获取已盘点记录 // 1. 获取已盘点记录
const res: any = await request({ const res: any = await request({
@ -1034,9 +1037,9 @@ const fetchInventoryList = async () => {
listData.value = mergedData.slice(start, start + listLimit.value) listData.value = mergedData.slice(start, start + listLimit.value)
} catch (e) { } catch (e) {
ElMessage.error('获取盘点清单失败') if (!silent) ElMessage.error('获取盘点清单失败')
} finally { } finally {
listLoading.value = false if (!silent) listLoading.value = false
} }
} }