diff --git a/app.py b/app.py index 5a88cde..b64f7e9 100644 --- a/app.py +++ b/app.py @@ -645,6 +645,7 @@ def init_tables(): split_value VARCHAR(100) NULL COMMENT '拆分值', split_name VARCHAR(200) NULL COMMENT '拆分显示名称', config_id BIGINT NULL COMMENT '配置ID', + config_name VARCHAR(200) NULL COMMENT '配置名称', total_orders INT NULL COMMENT '订单总数', total_amount DECIMAL(10,2) NULL COMMENT '总金额', sum_results VARCHAR(2000) NULL COMMENT '求和结果', @@ -658,6 +659,15 @@ def init_tables(): """ execute_update(create_history_table) + # 为已存在的表添加 config_name 字段(如果不存在) + try: + execute_update(""" + ALTER TABLE t_daily_report_history + ADD COLUMN IF NOT EXISTS config_name VARCHAR(200) NULL COMMENT '配置名称' + """) + except Exception as e: + print(f"[数据库] 添加 config_name 字段时出错(可能已存在): {e}") + return jsonify({'success': True, 'message': '数据库表初始化成功'}) except Exception as e: return jsonify({'success': False, 'message': str(e)}), 500 diff --git a/assets/image_20260713144552224.png b/assets/image_20260713144552224.png new file mode 100644 index 0000000..3dbdfee Binary files /dev/null and b/assets/image_20260713144552224.png differ diff --git a/lib/report_generator.py b/lib/report_generator.py index dc1f97a..9619378 100644 --- a/lib/report_generator.py +++ b/lib/report_generator.py @@ -409,6 +409,7 @@ def generate_daily_report(config_id, start_time=None, end_time=None): split_value=config['split_value'], split_name=config.get('split_name', config['split_value']), config_id=config_id, + config_name=config.get('config_name', ''), total_orders=0, total_amount=0, sum_results={}, @@ -482,6 +483,7 @@ def generate_daily_report(config_id, start_time=None, end_time=None): split_value=config['split_value'], split_name=config.get('split_name', config['split_value']), config_id=config_id, + config_name=config.get('config_name', ''), total_orders=len(orders), total_amount=total_amount, sum_results=sum_results, @@ -521,6 +523,7 @@ def generate_daily_report(config_id, start_time=None, end_time=None): split_value=config['split_value'] if 'config' in locals() and config else '', split_name=config.get('split_name', '') if 'config' in locals() and config else '', config_id=config_id, + config_name=config.get('config_name', '') if 'config' in locals() and config else '', total_orders=0, total_amount=0, sum_results={}, @@ -661,7 +664,7 @@ def generate_excel(orders, selected_fields, sum_fields, sum_results, def save_report_history(report_date, start_time, end_time, split_type, split_value, - split_name, config_id, total_orders, total_amount, + split_name, config_id, config_name, total_orders, total_amount, sum_results, file_path, status): """ 保存日报生成历史记录 @@ -680,8 +683,8 @@ def save_report_history(report_date, start_time, end_time, split_type, split_val sql = """ INSERT INTO t_daily_report_history (id, report_date, start_time, end_time, split_type, split_value, split_name, - config_id, total_orders, total_amount, sum_results, file_path, status, create_time) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) + config_id, config_name, total_orders, total_amount, sum_results, file_path, status, create_time) + VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW()) """ params = ( @@ -693,6 +696,7 @@ def save_report_history(report_date, start_time, end_time, split_type, split_val split_value, split_name, config_id, + config_name, total_orders, total_amount, json.dumps(sum_results, ensure_ascii=False), diff --git a/templates/index.html b/templates/index.html index daf321a..4f2489a 100644 --- a/templates/index.html +++ b/templates/index.html @@ -2221,10 +2221,40 @@ tbody.innerHTML = list.map(item => { const statusText = item.status === 1 ? '成功' : '失败'; const statusClass = item.status === 1 ? 'status-success' : 'status-failed'; - const startTime = item.start_time ? new Date(item.start_time).toLocaleString('zh-CN') : '-'; - const endTime = item.end_time ? new Date(item.end_time).toLocaleString('zh-CN') : '-'; - const timeRange = `${startTime} 至 ${endTime}`; - const reportDate = item.report_date || '-'; + + // 格式化报表日期为中文(直接解析字符串格式 '2026-07-12') + let reportDate = '-'; + if (item.report_date) { + const match = item.report_date.match(/(\d{4})-(\d{1,2})-(\d{1,2})/); + if (match) { + const year = parseInt(match[1]); + const month = parseInt(match[2]); + const day = parseInt(match[3]); + reportDate = `${year}年${month}月${day}日`; + } else { + reportDate = item.report_date; + } + } + + // 格式化时间范围(直接解析字符串格式 '2026-07-12 08:00:00') + let timeRange = '-'; + if (item.start_time && item.end_time) { + const formatTimeStr = (timeStr) => { + const match = timeStr.match(/(\d{4})-(\d{1,2})-(\d{1,2})\s+(\d{1,2}):(\d{1,2}):(\d{1,2})/); + if (match) { + const year = match[1]; + const month = match[2].padStart(2, '0'); + const day = match[3].padStart(2, '0'); + const hour = match[4].padStart(2, '0'); + const minute = match[5].padStart(2, '0'); + const second = match[6].padStart(2, '0'); + return `${year}-${month}-${day} ${hour}:${minute}:${second}`; + } + return timeStr; + }; + timeRange = `${formatTimeStr(item.start_time)} 至 ${formatTimeStr(item.end_time)}`; + } + const configName = item.config_name || '-'; const splitValue = item.split_name || '-'; const totalOrders = item.total_orders || 0;