From 3742632ec8d5e5c38bb3b344fd5814a613a98f22 Mon Sep 17 00:00:00 2001 From: ZhangYong Date: Tue, 7 Apr 2026 11:46:49 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E9=92=B1=E5=8C=85=E4=BA=8C=E7=BA=A7?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/cash/cash.js | 10 ++ .../components/WalletDetailTemplate.vue | 162 +++++++++++++++++++-- src/views/walletManage/walletDetail/BJWallet.vue | 2 +- src/views/walletManage/walletDetail/CAWallet.vue | 2 +- src/views/walletManage/walletDetail/HKWallet.vue | 3 +- src/views/walletManage/walletDetail/MyWallet.vue | 2 +- src/views/walletManage/walletDetail/SGWalletCM.vue | 2 +- src/views/walletManage/walletDetail/SGWalletHC.vue | 2 +- src/views/walletManage/walletDetail/THWalletHA.vue | 2 +- src/views/walletManage/walletDetail/THWalletHS.vue | 2 +- src/views/walletManage/walletDetail/VNWallet.vue | 2 +- 11 files changed, 171 insertions(+), 20 deletions(-) create mode 100644 src/api/cash/cash.js diff --git a/src/api/cash/cash.js b/src/api/cash/cash.js new file mode 100644 index 0000000..23494f8 --- /dev/null +++ b/src/api/cash/cash.js @@ -0,0 +1,10 @@ +import http from '@/util/http.js' + +// 查询钱包记录 +export const selectWalletRecords = (data) => { + return http({ + method: 'POST', + url: '/cashCollection/selectWalletRecords', + data + }) +} diff --git a/src/views/walletManage/components/WalletDetailTemplate.vue b/src/views/walletManage/components/WalletDetailTemplate.vue index bc9bf4d..e70722b 100644 --- a/src/views/walletManage/components/WalletDetailTemplate.vue +++ b/src/views/walletManage/components/WalletDetailTemplate.vue @@ -7,6 +7,14 @@ import moment from 'moment' import { useI18n } from 'vue-i18n' import { useAdminStore } from "@/store/index.js" import { storeToRefs } from "pinia" +import { selectWalletRecords } from "@/api/cash/cash.js" + +const props = defineProps({ + type: { + type: Number, + required: true + } +}) const { t } = useI18n() const route = useRoute() @@ -61,6 +69,7 @@ const format3 = (num) => { // 统一获取数据的方法 const getWalletData = async () => { + console.log('walletId:', selectData.value.walletId) if (!selectData.value.walletId) return; if (selectData.value.jwcode) { @@ -78,15 +87,10 @@ const getWalletData = async () => { pageSize: getObj.value.pageSize, userWalletRecord: { walletId: selectData.value.walletId, - jwcode: selectData.value.jwcode ? Number(selectData.value.jwcode) : null } } - const result = await API({ - url: '/cashCollection/selectWalletRecords', - method: 'post', - data: params - }) + const result = await selectWalletRecords(params) if (result.code === 200) { tableData.value = result.data.list.map(item => ({ @@ -144,9 +148,9 @@ watch(flag, (newFlag, oldFlag) => { } }) -// 核心:监听路由参数变化 +// 核心:监听父组件传入的 props 参数变化 watch( - () => route.query.type, + () => props.type, (newType) => { if (newType) { selectData.value.walletId = newType @@ -156,6 +160,110 @@ watch( }, { immediate: true } ) + +// ==================== 导出逻辑 ==================== +const exportListVisible = ref(false) +const exportList = ref([]) +const exportListLoading = ref(false) + +const exportExcelOnlyOne = async function () { + if (!selectData.value.walletId) { + ElMessage.error(t('elmessage.selectCompanyWallet')) + return + } + + const params = { + pageNum: 1, // 导出通常从第一页开始 + pageSize: 10000, // 导出大量数据 + userWalletRecord: { + walletId: selectData.value.walletId, + jwcode: selectData.value.jwcode ? Number(selectData.value.jwcode) : null + } + } + + try { + const res = await API({ + url: '/export/exportUserWalletRecord', + method: 'post', + data: params + }) + if (res.code === 200) { + ElMessage.success(t('elmessage.exportSuccess')) + } else { + ElMessage.error(res.msg || t('elmessage.exportFailed')) + } + } catch (error) { + console.error('导出失败:', error) + ElMessage.error(t('elmessage.exportFailed')) + } +} + +// 打开导出列表弹窗 +const openExportList = () => { + getExportList() + exportListVisible.value = true +} + +// 获取导出列表 +const getExportList = async () => { + exportListLoading.value = true + try { + const result = await API({ url: '/export/export' }) + if (result.code === 200) { + // 过滤只显示 type 为 16 和 17 的导出记录(保持和 WalletBalance 页面一致) + const filteredData = result.data.filter(item => { + return item.type === 16 || item.type === 17; + }); + exportList.value = filteredData + } else { + ElMessage.error(result.msg || t('elmessage.getExportListError')) + } + } catch (error) { + console.error('获取导出列表出错:', error) + ElMessage.error(t('elmessage.getExportListError')) + } finally { + exportListLoading.value = false + } +} + +// 下载导出文件 +const downloadExportFile = (item) => { + if (item.state === 2) { + const link = document.createElement('a') + link.href = item.url + link.download = item.fileName + link.click() + } else { + ElMessage.warning(t('elmessage.exportingInProgress')) + } +} + +//根据状态返回对应的标签类型 +const getTagType = (state) => { + switch (state) { + case 0: return 'info'; + case 1: return 'primary'; + case 2: return 'success'; + case 3: return 'danger'; + default: return 'info'; + } +} + +//根据状态返回对应的标签文案 +const getTagText = (state) => { + switch (state) { + case 0: return t('elmessage.pendingExecution'); + case 1: return t('elmessage.executing'); + case 2: return t('elmessage.executed'); + case 3: return t('elmessage.errorExecution'); + default: return t('elmessage.unknownStatus'); + } +} + +onMounted(() => { + selectData.value.walletId = props.type +}) + diff --git a/src/views/walletManage/walletDetail/BJWallet.vue b/src/views/walletManage/walletDetail/BJWallet.vue index 19bee4d..cba6eff 100644 --- a/src/views/walletManage/walletDetail/BJWallet.vue +++ b/src/views/walletManage/walletDetail/BJWallet.vue @@ -1,7 +1,7 @@ - - + + - + @@ -773,19 +778,24 @@ const format3 = (num) => { - - + + - + @@ -797,10 +807,13 @@ const format3 = (num) => { - + @@ -809,16 +822,9 @@ const format3 = (num) => {