fix
This commit is contained in:
@@ -12,9 +12,13 @@
|
||||
:transactions="transactionList"
|
||||
:loading="loading"
|
||||
:finished="finished"
|
||||
:show-delete="true"
|
||||
@load="onLoad"
|
||||
@click="viewDetail"
|
||||
@delete="handleDelete"
|
||||
@delete="(id) => {
|
||||
// 从当前的交易列表中移除该交易
|
||||
transactionList.value = transactionList.value.filter(t => t.id !== id)
|
||||
}"
|
||||
/>
|
||||
|
||||
<!-- 底部安全距离 -->
|
||||
@@ -161,8 +165,8 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import { showToast, showConfirmDialog } from 'vant'
|
||||
import { ref, reactive, onMounted, onBeforeUnmount } from 'vue'
|
||||
import { showToast } from 'vant'
|
||||
import {
|
||||
getTransactionList,
|
||||
getTransactionDetail,
|
||||
@@ -291,7 +295,7 @@ const loadData = async (isRefresh = false) => {
|
||||
const onRefresh = () => {
|
||||
finished.value = false
|
||||
transactionList.value = []
|
||||
loadData(false)
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
// 搜索相关方法
|
||||
@@ -345,28 +349,7 @@ const onDetailSave = async () => {
|
||||
await loadClassifyList()
|
||||
}
|
||||
|
||||
// 删除
|
||||
const handleDelete = async (transaction) => {
|
||||
try {
|
||||
await showConfirmDialog({
|
||||
title: '提示',
|
||||
message: '确定要删除这条交易记录吗?',
|
||||
})
|
||||
|
||||
const response = await deleteTransaction(transaction.id)
|
||||
if (response.success) {
|
||||
showToast('删除成功')
|
||||
loadData(true)
|
||||
} else {
|
||||
showToast(response.message || '删除失败')
|
||||
}
|
||||
} catch (error) {
|
||||
if (error !== 'cancel') {
|
||||
console.error('删除出错:', error)
|
||||
showToast('删除失败')
|
||||
}
|
||||
}
|
||||
}
|
||||
// 删除功能由 TransactionList 组件内部处理,组件通过 :show-delete 启用
|
||||
|
||||
// 打开新增弹窗
|
||||
const openAddDialog = () => {
|
||||
@@ -484,6 +467,7 @@ const onAddSubmit = async () => {
|
||||
showToast('添加成功')
|
||||
addDialogVisible.value = false
|
||||
loadData(true)
|
||||
try { window.dispatchEvent(new CustomEvent('transactions-changed', { detail: response.data })) } catch(e) {}
|
||||
// 重新加载分类列表
|
||||
await loadClassifyList()
|
||||
} else {
|
||||
@@ -502,6 +486,35 @@ onMounted(async () => {
|
||||
// 不需要手动调用 loadData,van-list 会自动触发 onLoad
|
||||
})
|
||||
|
||||
// 监听全局删除事件,保持页面一致性
|
||||
const onGlobalTransactionDeleted = (e) => {
|
||||
// 如果在此页面,重新刷新当前列表以保持数据一致
|
||||
transactionList.value = []
|
||||
pageIndex.value = 1
|
||||
finished.value = false
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
window.addEventListener && window.addEventListener('transaction-deleted', onGlobalTransactionDeleted)
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener && window.removeEventListener('transaction-deleted', onGlobalTransactionDeleted)
|
||||
})
|
||||
|
||||
// 外部新增/修改/批量更新时的刷新监听
|
||||
const onGlobalTransactionsChanged = (e) => {
|
||||
transactionList.value = []
|
||||
pageIndex.value = 1
|
||||
finished.value = false
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
window.addEventListener && window.addEventListener('transactions-changed', onGlobalTransactionsChanged)
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener && window.removeEventListener('transactions-changed', onGlobalTransactionsChanged)
|
||||
})
|
||||
|
||||
// 暴露给父级方法调用
|
||||
defineExpose({
|
||||
openAddDialog
|
||||
|
||||
Reference in New Issue
Block a user