From b91560ccbe697d063f642d50b5f781d1dea3619c Mon Sep 17 00:00:00 2001 From: szz <961120009@qq.com> Date: Fri, 8 Aug 2025 15:29:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Transfers.vue | 238 +++++++++++++--------------------------- 1 file changed, 75 insertions(+), 163 deletions(-) diff --git a/src/views/Transfers.vue b/src/views/Transfers.vue index b3103ec..3a65a3e 100644 --- a/src/views/Transfers.vue +++ b/src/views/Transfers.vue @@ -206,7 +206,7 @@
- - - @@ -285,30 +271,34 @@ const returnForm = reactive({ const pendingTransfers = ref([]) const pendingAllocations = ref([]) -const transferHistory = ref([]) +const allTransferHistory = ref([]) +const filteredTransferHistory = ref([]) const userList = ref([]) -const pagination = reactive({ - page: 1, - limit: 10, - total: 0 -}) - -// 移动端检测和分页布局 +// 移动端检测 const windowWidth = ref(window.innerWidth) const isMobile = computed(() => { return windowWidth.value <= 768 }) -const paginationLayout = computed(() => { - if (windowWidth.value <= 480) { - return 'prev, pager, next' - } else if (windowWidth.value <= 768) { - return 'total, prev, pager, next' - } else { - return 'total, sizes, prev, pager, next, jumper' - } +// 计算属性 +const totalCount = computed(() => allTransferHistory.value.length) +const pendingCount = computed(() => { + return allTransferHistory.value.filter(t => + t.status === 'pending' && + t.to_user_id === userStore.user.id + ).length +}) +const confirmedCount = computed(() => { + return allTransferHistory.value.filter(t => + t.status === 'confirmed' + ).length +}) +const rejectedCount = computed(() => { + return allTransferHistory.value.filter(t => + t.status === 'rejected' + ).length }) // 窗口大小变化监听 @@ -316,11 +306,6 @@ const handleResize = () => { windowWidth.value = window.innerWidth } -// 上传配置 -const uploadUrl = ref(uploadURL) -const uploadHeaders = computed(() => getUploadConfig().headers) - -// 生命周期 onMounted(() => { loadPendingTransfers() loadPendingAllocations() @@ -336,34 +321,22 @@ onUnmounted(() => { // 监听状态筛选 watch(statusFilter, () => { - pagination.page = 1 - loadTransferHistory() -}) - -// 计算属性 -const filteredTransferHistory = computed(() => { - if (!statusFilter.value) return transferHistory.value - - return transferHistory.value.filter(transfer => { - if (statusFilter.value === 'pending') { - return transfer.status === 'pending' && transfer.to_user_id === userStore.user.id - } - return transfer.status === statusFilter.value - }) -}) - -const totalCount = computed(() => pagination.total) -const pendingCount = computed(() => { - return transferHistory.value.filter(t => t.status === 'pending' && t.to_user_id === userStore.user.id).length -}) -const confirmedCount = computed(() => { - return transferHistory.value.filter(t => t.status === 'confirmed').length -}) -const rejectedCount = computed(() => { - return transferHistory.value.filter(t => t.status === 'rejected').length + filteredTransferHistory.value = filterTransfers(allTransferHistory.value) }) // 方法 +const filterTransfers = (transfers) => { + if (!statusFilter.value) return transfers + + return transfers.filter(transfer => { + if (statusFilter.value === 'pending') { + return transfer.status === 'pending' && + transfer.to_user_id === userStore.user.id + } + return transfer.status === statusFilter.value + }) +} + const loadPendingTransfers = async () => { try { const response = await api.get('/transfers/pending', { @@ -397,16 +370,10 @@ const loadPendingAllocations = async () => { const loadTransferHistory = async () => { try { loading.value = true - const params = { - page: pagination.page, - limit: pagination.limit, - status: statusFilter.value || undefined - } - - const response = await api.get(`/transfers/user/${userStore.user.id}`, { params }) + const response = await api.get(`/transfers/user/${userStore.user.id}`) if (response.data.success) { - transferHistory.value = response.data.data.transfers - Object.assign(pagination, response.data.data.pagination) + allTransferHistory.value = response.data.data.transfers || [] + filteredTransferHistory.value = filterTransfers(allTransferHistory.value) } } catch (error) { console.error('加载转账记录失败:', error) @@ -564,10 +531,10 @@ const confirmReturn = async () => { const confirmReceived = async (transferId) => { try { - const transfer = transferHistory.value.find(t => t.id === transferId) + const transfer = allTransferHistory.value.find(t => t.id === transferId); if (!transfer) { - ElMessage.error('转账记录不存在') - return + ElMessage.error('转账记录不存在'); + return; } await ElMessageBox.confirm( @@ -578,25 +545,30 @@ const confirmReceived = async (transferId) => { cancelButtonText: '取消', type: 'warning' } - ) + ); - confirmLoading.value = true - const response = await api.post(`/transfers/confirm-received/${transferId}`) + confirmLoading.value = true; + + // 使用 transferAPI.confirmReceived 方法 + const response = await transferAPI.confirmReceived(transferId); if (response.data.success) { - ElMessage.success('收款确认成功') - await loadTransferHistory() - await loadPendingTransfers() + ElMessage.success('收款确认成功'); + await loadTransferHistory(); + await loadPendingTransfers(); } } catch (error) { if (error !== 'cancel') { - console.error('确认收款失败:', error) - ElMessage.error(error.response?.data?.message || '确认收款失败') + console.error('确认收款失败:', error); + const errorMsg = error.response?.data?.message || + error.response?.data?.error?.message || + '确认收款失败'; + ElMessage.error(errorMsg); } } finally { - confirmLoading.value = false + confirmLoading.value = false; } -} +}; const confirmNotReceived = async (transferId) => { try { @@ -608,24 +580,30 @@ const confirmNotReceived = async (transferId) => { cancelButtonText: '取消', type: 'warning' } - ) + ); - confirmLoading.value = true - const response = await transferAPI.confirmNotReceived(transferId) + confirmLoading.value = true; + + // 使用 transferAPI.confirmNotReceived 方法 + const response = await transferAPI.confirmNotReceived(transferId); if (response.data.success) { - ElMessage.success(response.data.message) - loadTransferHistory() + ElMessage.success(response.data.message || '操作成功'); + await loadTransferHistory(); + await loadPendingTransfers(); } } catch (error) { if (error !== 'cancel') { - console.error('确认未收款失败:', error) - ElMessage.error(error.response?.data?.message || '操作失败') + console.error('确认未收款失败:', error); + const errorMsg = error.response?.data?.message || + error.response?.data?.error?.message || + '操作失败'; + ElMessage.error(errorMsg); } } finally { - confirmLoading.value = false + confirmLoading.value = false; } -} +}; \ No newline at end of file