feat: 移除预算同步相关功能,简化预算管理逻辑
This commit is contained in:
@@ -39,11 +39,6 @@ public class BudgetRecord : BaseEntity
|
||||
/// 开始日期
|
||||
/// </summary>
|
||||
public DateTime StartDate { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// 上次同步时间
|
||||
/// </summary>
|
||||
public DateTime? LastSync { get; set; }
|
||||
}
|
||||
|
||||
public enum BudgetPeriodType
|
||||
|
||||
@@ -60,15 +60,3 @@ export function toggleStopBudget(id) {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步预算进度
|
||||
* @param {number} id 预算ID
|
||||
* @param {string} referenceDate 参考日期 (可选)
|
||||
*/
|
||||
export function syncBudget(id, referenceDate) {
|
||||
return request({
|
||||
url: '/Budget/Sync',
|
||||
method: 'post',
|
||||
params: { id, referenceDate }
|
||||
})
|
||||
}
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
<van-tag v-else type="success" size="small" plain>进行中</van-tag>
|
||||
</div>
|
||||
<div class="header-actions">
|
||||
<van-button icon="replay" size="mini" plain :loading="budget.syncing" @click="handleSync(budget)" />
|
||||
<van-button :icon="budget.isStopped ? 'play' : 'pause'" size="mini" plain @click="handleToggleStop(budget)" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -91,7 +90,6 @@
|
||||
<span class="period-text">{{ budget.period }}</span>
|
||||
<van-icon name="arrow" class="nav-icon" @click="handleSwitchPeriod(budget, 1)" />
|
||||
</div>
|
||||
<span class="sync-time">上次同步: {{ budget.lastSync }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<template #right>
|
||||
@@ -140,7 +138,6 @@
|
||||
<van-tag v-else type="success" size="small" plain>进行中</van-tag>
|
||||
</div>
|
||||
<div class="header-actions">
|
||||
<van-button icon="replay" size="mini" plain round :loading="budget.syncing" @click="handleSync(budget)" />
|
||||
<van-button :icon="budget.isStopped ? 'play' : 'pause'" size="mini" plain round @click="handleToggleStop(budget)" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -185,7 +182,6 @@
|
||||
<span class="period-text">{{ budget.period }}</span>
|
||||
<van-icon name="arrow" class="nav-icon" @click="handleSwitchPeriod(budget, 1)" />
|
||||
</div>
|
||||
<span class="sync-time">上次同步: {{ budget.lastSync }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<template #right>
|
||||
@@ -234,7 +230,6 @@
|
||||
<van-tag v-else type="success" size="small" plain>积累中</van-tag>
|
||||
</div>
|
||||
<div class="header-actions">
|
||||
<van-button icon="replay" size="mini" plain round :loading="budget.syncing" @click="handleSync(budget)" />
|
||||
<van-button :icon="budget.isStopped ? 'play' : 'pause'" size="mini" plain round @click="handleToggleStop(budget)" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -281,7 +276,6 @@
|
||||
</span>
|
||||
<van-icon name="arrow" class="nav-icon" @click="handleSwitchPeriod(budget, 1)" />
|
||||
</div>
|
||||
<span class="sync-time">上次同步: {{ budget.lastSync }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<template #right>
|
||||
@@ -388,7 +382,7 @@
|
||||
import { ref, reactive, computed, onMounted, watch } from 'vue'
|
||||
import { showToast, showConfirmDialog } from 'vant'
|
||||
import { getCategoryList } from '@/api/transactionCategory'
|
||||
import { getBudgetList, createBudget, deleteBudget, toggleStopBudget, syncBudget, getBudgetStatistics } from '@/api/budget'
|
||||
import { getBudgetList, createBudget, deleteBudget, toggleStopBudget, getBudgetStatistics } from '@/api/budget'
|
||||
import { BudgetPeriodType, BudgetCategory } from '@/constants/enums'
|
||||
import PopupContainer from '@/components/PopupContainer.vue'
|
||||
|
||||
@@ -592,23 +586,6 @@ const handleDelete = (budget) => {
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
const handleSync = async (budget) => {
|
||||
budget.syncing = true
|
||||
try {
|
||||
const refDate = refDateMap[budget.id] ? refDateMap[budget.id].toISOString() : null
|
||||
const res = await syncBudget(budget.id, refDate)
|
||||
if (res.success) {
|
||||
showToast('同步成功')
|
||||
Object.assign(budget, res.data)
|
||||
}
|
||||
} catch (err) {
|
||||
showToast('同步失败')
|
||||
console.error('同步预算失败', err)
|
||||
} finally {
|
||||
budget.syncing = false
|
||||
}
|
||||
}
|
||||
|
||||
const handleToggleStop = async (budget) => {
|
||||
try {
|
||||
const res = await toggleStopBudget(budget.id)
|
||||
|
||||
@@ -68,8 +68,7 @@ public class BudgetController(
|
||||
Limit = dto.Limit,
|
||||
Category = dto.Category,
|
||||
SelectedCategories = dto.SelectedCategories != null ? string.Join(",", dto.SelectedCategories) : string.Empty,
|
||||
StartDate = dto.StartDate ?? DateTime.Now,
|
||||
LastSync = DateTime.Now
|
||||
StartDate = dto.StartDate ?? DateTime.Now
|
||||
};
|
||||
|
||||
var success = await budgetService.AddAsync(budget);
|
||||
@@ -122,30 +121,4 @@ public class BudgetController(
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 同步预算数据
|
||||
/// </summary>
|
||||
[HttpPost]
|
||||
public async Task<BaseResponse<BudgetDto>> SyncAsync([FromQuery] long id, [FromQuery] DateTime? referenceDate = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var budget = await budgetService.GetByIdAsync(id);
|
||||
if (budget == null)
|
||||
{
|
||||
return "预算不存在".Fail<BudgetDto>();
|
||||
}
|
||||
|
||||
budget.LastSync = DateTime.Now;
|
||||
await budgetService.UpdateAsync(budget);
|
||||
|
||||
var currentAmount = await budgetService.CalculateCurrentAmountAsync(budget, referenceDate);
|
||||
return BudgetDto.FromEntity(budget, currentAmount, referenceDate).Ok();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.LogError(ex, "同步预算失败, Id: {Id}", id);
|
||||
return $"同步失败: {ex.Message}".Fail<BudgetDto>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ public class BudgetDto
|
||||
public bool IsStopped { get; set; }
|
||||
public string StartDate { get; set; } = string.Empty;
|
||||
public string Period { get; set; } = string.Empty;
|
||||
public string LastSync { get; set; } = string.Empty;
|
||||
|
||||
public static BudgetDto FromEntity(BudgetRecord entity, decimal currentAmount = 0, DateTime? referenceDate = null)
|
||||
{
|
||||
@@ -32,8 +31,7 @@ public class BudgetDto
|
||||
: entity.SelectedCategories.Split(','),
|
||||
IsStopped = entity.IsStopped,
|
||||
StartDate = entity.StartDate.ToString("yyyy-MM-dd"),
|
||||
Period = entity.Type == BudgetPeriodType.Longterm ? "长期" : $"{start:yyyy-MM-dd} ~ {end:yyyy-MM-dd}",
|
||||
LastSync = entity.LastSync?.ToString("yyyy-MM-dd HH:mm") ?? "未同步"
|
||||
Period = entity.Type == BudgetPeriodType.Longterm ? "长期" : $"{start:yyyy-MM-dd} ~ {end:yyyy-MM-dd}"
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user