feat: Implement scheduled tasks management and budget archiving functionality
Some checks failed
Docker Build & Deploy / Build Docker Image (push) Failing after 6s
Docker Build & Deploy / Deploy to Production (push) Has been skipped
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 2s
Docker Build & Deploy / WeChat Notification (push) Successful in 2s
Some checks failed
Docker Build & Deploy / Build Docker Image (push) Failing after 6s
Docker Build & Deploy / Deploy to Production (push) Has been skipped
Docker Build & Deploy / Cleanup Dangling Images (push) Successful in 2s
Docker Build & Deploy / WeChat Notification (push) Successful in 2s
- Added BudgetArchiveJob for monthly budget archiving. - Created BudgetArchive entity and BudgetArchiveRepository for managing archived budgets. - Introduced JobController for handling job execution, pausing, and resuming. - Developed ScheduledTasksView for displaying and managing scheduled tasks in the frontend. - Updated PeriodicBillJob to improve scope handling. - Enhanced OpenAiService with increased HTTP timeout. - Added archiveBudgets API endpoint for archiving budgets by year and month. - Refactored BudgetController to utilize new repository patterns and improved error handling. - Introduced rich-content styles for better rendering of HTML content in Vue components. - Updated various Vue components to support rich HTML content display.
This commit is contained in:
@@ -72,7 +72,7 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div ref="resultContainer" class="result-content">
|
||||
<div ref="resultContainer" class="result-content rich-html-content">
|
||||
<div v-html="resultHtml"></div>
|
||||
<van-loading v-if="analyzing" class="result-loading">
|
||||
AI正在分析中...
|
||||
@@ -351,103 +351,12 @@ const startAnalysis = async () => {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
/* 结果HTML样式 */
|
||||
.result-content :deep(h1),
|
||||
.result-content :deep(h2),
|
||||
.result-content :deep(h3) {
|
||||
color: var(--van-text-color);
|
||||
margin: 16px 0 12px 0;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.result-content :deep(h1) {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.result-content :deep(h2) {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.result-content :deep(h3) {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.result-content :deep(p) {
|
||||
margin: 8px 0;
|
||||
color: var(--van-text-color);
|
||||
}
|
||||
|
||||
.result-content :deep(ul),
|
||||
.result-content :deep(ol) {
|
||||
padding-left: 24px;
|
||||
margin: 12px 0;
|
||||
}
|
||||
|
||||
.result-content :deep(li) {
|
||||
margin: 6px 0;
|
||||
color: var(--van-text-color);
|
||||
}
|
||||
|
||||
.result-content :deep(table) {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 16px 0;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.result-content :deep(th),
|
||||
.result-content :deep(td) {
|
||||
padding: 10px;
|
||||
text-align: left;
|
||||
border: 1px solid var(--van-border-color);
|
||||
}
|
||||
|
||||
.result-content :deep(th) {
|
||||
background: var(--van-background-2);
|
||||
font-weight: 600;
|
||||
color: var(--van-text-color);
|
||||
}
|
||||
|
||||
.result-content :deep(td) {
|
||||
color: var(--van-text-color);
|
||||
}
|
||||
|
||||
.result-content :deep(strong) {
|
||||
color: var(--van-text-color);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.result-content :deep(.highlight) {
|
||||
background: #fff3cd;
|
||||
padding: 2px 6px;
|
||||
border-radius: 4px;
|
||||
color: #856404;
|
||||
}
|
||||
|
||||
.result-content :deep(.expense-value) {
|
||||
color: #ff6b6b;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.result-content :deep(.income-value) {
|
||||
color: #51cf66;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.error-message {
|
||||
color: #ff6b6b;
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
/* 暗色模式适配 */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.result-content :deep(.highlight) {
|
||||
background: rgba(255, 243, 205, 0.2);
|
||||
color: #ffc107;
|
||||
}
|
||||
}
|
||||
|
||||
/* 设置页面容器背景色 */
|
||||
:deep(.van-nav-bar) {
|
||||
background: transparent !important;
|
||||
|
||||
Reference in New Issue
Block a user