diff --git a/Repository/TransactionRecordRepository.cs b/Repository/TransactionRecordRepository.cs index 8d50247..013682a 100644 --- a/Repository/TransactionRecordRepository.cs +++ b/Repository/TransactionRecordRepository.cs @@ -188,7 +188,7 @@ public interface ITransactionRecordRepository : IBaseRepository /// 影响行数 - Task ConfirmAllUnconfirmedAsync(); + Task ConfirmAllUnconfirmedAsync(long[] ids); /// /// 更新分类名称 @@ -698,7 +698,7 @@ public class TransactionRecordRepository(IFreeSql freeSql) : BaseRepository ConfirmAllUnconfirmedAsync() + public async Task ConfirmAllUnconfirmedAsync(long[] ids) { return await FreeSql.Update() .Set(t => t.Classify == t.UnconfirmedClassify) @@ -706,6 +706,7 @@ public class TransactionRecordRepository(IFreeSql freeSql) : BaseRepository t.UnconfirmedClassify, null) .Set(t => t.UnconfirmedType, null) .Where(t => t.UnconfirmedClassify != null && t.UnconfirmedClassify != "") + .Where(t => ids.Contains(t.Id)) .ExecuteAffrowsAsync(); } } diff --git a/Web/src/api/transactionRecord.js b/Web/src/api/transactionRecord.js index 14a4e58..17791d9 100644 --- a/Web/src/api/transactionRecord.js +++ b/Web/src/api/transactionRecord.js @@ -34,10 +34,11 @@ export const getUnconfirmedTransactionList = () => { * 全部确认待确认的交易分类 * @returns {Promise<{success: boolean, data: number}>} */ -export const confirmAllUnconfirmed = () => { +export const confirmAllUnconfirmed = (ids) => { return request({ url: '/TransactionRecord/ConfirmAllUnconfirmed', - method: 'post' + method: 'post', + data: { ids } }) } diff --git a/Web/src/views/UnconfirmedClassification.vue b/Web/src/views/UnconfirmedClassification.vue index a5ebf61..704acc5 100644 --- a/Web/src/views/UnconfirmedClassification.vue +++ b/Web/src/views/UnconfirmedClassification.vue @@ -8,13 +8,13 @@ > @@ -29,8 +29,11 @@ :transactions="displayTransactions" :loading="loading" :finished="true" + show-checkbox + :selected-ids="selectedIds" @click="handleTransactionClick" @delete="handleTransactionDeleted" + @update:selected-ids="updateSelectedIds" /> @@ -57,12 +60,13 @@ const confirming = ref(false) const transactions = ref([]) const showDetail = ref(false) const currentTransaction = ref(null) +const selectedIds = ref(new Set()) const onClickLeft = () => { router.back() } -const handleConfirmAll = async () => { +const handleConfirmSelected = async () => { try { await showConfirmDialog({ title: '提示', @@ -70,7 +74,7 @@ const handleConfirmAll = async () => { }) confirming.value = true - const response = await confirmAllUnconfirmed() + const response = await confirmAllUnconfirmed(Array.from(selectedIds.value)) if (response && response.success) { showToast(`成功确认 ${response.data} 条记录`) loadData() @@ -100,7 +104,13 @@ const loadData = async () => { try { const response = await getUnconfirmedTransactionList() if (response && response.success) { - transactions.value = response.data || [] + transactions.value = (response.data || []) + .map(t => ({ + ...t, + upsetedClassify: t.unconfirmedClassify, + upsetedType: t.unconfirmedType + })) + selectedIds.value = new Set(response.data.map(t => t.id)) } } catch (error) { console.error('获取待确认列表失败:', error) @@ -118,6 +128,10 @@ const handleTransactionDeleted = (id) => { transactions.value = transactions.value.filter(t => t.id !== id) } +const updateSelectedIds = (ids) => { + selectedIds.value = new Set(ids) +} + const handleDetailSave = () => { loadData() } diff --git a/WebApi/Controllers/TransactionRecordController.cs b/WebApi/Controllers/TransactionRecordController.cs index 0cb7e62..c66f573 100644 --- a/WebApi/Controllers/TransactionRecordController.cs +++ b/WebApi/Controllers/TransactionRecordController.cs @@ -95,11 +95,11 @@ public class TransactionRecordController( /// 全部确认待确认的交易分类 /// [HttpPost] - public async Task> ConfirmAllUnconfirmedAsync() + public async Task> ConfirmAllUnconfirmedAsync([FromBody] ConfirmAllUnconfirmedRequestDto request) { try { - var count = await transactionRepository.ConfirmAllUnconfirmedAsync(); + var count = await transactionRepository.ConfirmAllUnconfirmedAsync(request.Ids); return count.Ok(); } catch (Exception ex) @@ -527,6 +527,14 @@ public class TransactionRecordController( { record.Type = item.Type.Value; } + if(!string.IsNullOrEmpty(record.Classify)) + { + record.UnconfirmedClassify = null; + } + if(record.Type == item.Type) + { + record.UnconfirmedType = TransactionType.None; + } var success = await transactionRepository.UpdateAsync(record); if (success) successCount++; @@ -766,4 +774,8 @@ public record OffsetTransactionDto( public record ParseOneLineRequestDto( string Text +); + +public record ConfirmAllUnconfirmedRequestDto( + long[] Ids ); \ No newline at end of file