improve: 改进日报生成后的用户体验

1. 改进生成成功提示:
   - 添加更详细的统计信息展示
   - 显示求和结果
   - 添加醒目的"立即下载Excel文件"按钮
   - 添加"查看历史记录"快捷按钮
   - 添加提示说明日报也保存在历史记录中

2. 改进生成失败提示:
   - 显示详细错误信息
   - 列出可能的原因
   - 提供解决建议

3. 改进历史记录页面:
   - 下载按钮改为绿色,更醒目
   - 添加下载图标📥
   - 空状态提示更友好
   - 时间范围显示更清晰

4. 添加使用说明:
   - 在日报生成页面顶部添加使用流程说明
   - 告诉用户生成后如何找到和下载日报

5. 创建详细说明文档:
   - 如何找到生成的日报.md
   - 包含3种查找方法
   - 常见问题解答
   - 文件命名规则和存储位置说明

现在用户可以清楚地知道:
- 生成成功后如何立即下载
- 如何通过历史记录找到日报
- 如何直接访问文件目录
- 生成失败时如何排查问题

Coze-Commit-Type: user
Coze-User-ID: 3722323274763196
Coze-Conversation-ID: 9894087
This commit is contained in:
user9994793890
2026-07-09 12:41:52 +08:00
parent 9383612712
commit 3ed22fec5d
2 changed files with 155 additions and 11 deletions

View File

@@ -366,6 +366,14 @@
<!-- 日报生成 -->
<div id="generate-tab" class="tab-content">
<div class="card">
<div class="alert alert-info" style="margin-bottom: 20px;">
<strong>💡 使用说明:</strong><br>
1. 选择已创建的配置<br>
2. 选择时间范围(可点击预设按钮快速选择)<br>
3. 点击"生成日报"按钮<br>
4. 生成成功后,点击"立即下载Excel文件"按钮下载,或切换到"历史记录"标签页查看和下载
</div>
<h3 style="margin-bottom: 20px;">生成日报</h3>
<div class="form-group">
@@ -867,14 +875,49 @@
if (result.success) {
resultDiv.innerHTML = `
<div class="alert alert-success">
<strong>日报生成成功!</strong><br>
订单数量: ${result.total_orders}<br>
总金额: ¥${result.total_amount.toFixed(2)}<br>
<a href="/api/download?path=${result.file_path}" target="_blank" class="btn btn-sm btn-success" style="margin-top: 10px;">下载Excel</a>
<strong>✓ 日报生成成功!</strong><br><br>
<div style="margin-left: 20px;">
<strong>统计信息:</strong><br>
• 订单数量: ${result.total_orders} 条<br>
• 总金额: ¥${result.total_amount.toFixed(2)}<br>
${result.sum_results && Object.keys(result.sum_results).length > 0 ?
'<strong>求和结果:</strong><br>' +
Object.entries(result.sum_results).map(([field, value]) =>
`• ${field}: ${typeof value === 'number' ? value.toFixed(2) : value}`
).join('<br>')
: ''}
</div>
<br>
<div style="display: flex; gap: 10px; margin-top: 15px;">
<a href="/api/download?path=${result.file_path}" target="_blank" class="btn btn-success">
📥 立即下载Excel文件
</a>
<button class="btn btn-primary" onclick="switchTab('history'); document.querySelectorAll('.tab')[2].click();">
📋 查看历史记录
</button>
</div>
<br>
<div style="font-size: 12px; color: #666; margin-top: 10px;">
💡 提示:生成的日报也会保存在"历史记录"标签页中,可以随时下载。
</div>
</div>
`;
} else {
resultDiv.innerHTML = `<div class="alert alert-error">生成失败: ${result.message}</div>`;
resultDiv.innerHTML = `
<div class="alert alert-error">
<strong>✗ 生成失败</strong><br><br>
<strong>错误信息:</strong><br>
${result.message}<br><br>
<strong>可能的原因:</strong><br>
• 选择的时间范围内没有符合条件的订单<br>
• 数据库连接失败<br>
• 配置信息有误<br><br>
<strong>建议:</strong><br>
• 检查时间范围是否正确<br>
• 确认配置中的企业/用户是否有订单数据<br>
• 查看服务器日志获取详细错误信息
</div>
`;
}
} catch (error) {
resultDiv.innerHTML = `<div class="alert alert-error">生成失败: ${error.message}</div>`;
@@ -903,25 +946,27 @@
const tbody = document.getElementById('history-list');
if (history.length === 0) {
tbody.innerHTML = '<tr><td colspan="8" class="empty">暂无历史记录</td></tr>';
tbody.innerHTML = '<tr><td colspan="8" class="empty">暂无历史记录<br><br>生成日报后,记录会显示在这里</td></tr>';
return;
}
tbody.innerHTML = history.map(item => `
<tr>
<td>${item.report_date}</td>
<td>${item.start_time || '-'} ~ ${item.end_time || '-'}</td>
<td style="font-size: 12px;">${item.start_time || '-'}<br>至<br>${item.end_time || '-'}</td>
<td>${item.config_name || '-'}</td>
<td>${item.split_name || item.split_value}</td>
<td>${item.total_orders}</td>
<td>¥${(item.total_amount || 0).toFixed(2)}</td>
<td><strong>${item.total_orders}</strong></td>
<td><strong>¥${(item.total_amount || 0).toFixed(2)}</strong></td>
<td>
<span class="status-badge ${item.status === 1 ? 'status-active' : 'status-inactive'}">
${item.status === 1 ? '成功' : '失败'}
${item.status === 1 ? '✓ 成功' : '✗ 失败'}
</span>
</td>
<td>
${item.file_path ? `<a href="/api/download?path=${item.file_path}" target="_blank" class="btn btn-sm btn-primary">下载</a>` : '-'}
${item.status === 1 && item.file_path ?
`<a href="/api/download?path=${item.file_path}" target="_blank" class="btn btn-sm btn-success">📥 下载</a>` :
'<span style="color: #999;">-</span>'}
</td>
</tr>
`).join('');