From 869d128a7d8f3d8a9ae4e7c0b6e08a1e9898b0fb Mon Sep 17 00:00:00 2001 From: ZhangYong Date: Wed, 4 Mar 2026 15:46:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E4=BA=8C=E7=BA=A7=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/usergold/gold/clientCountWallet.vue | 425 +++++++++++++++++++------- 1 file changed, 312 insertions(+), 113 deletions(-) diff --git a/src/views/usergold/gold/clientCountWallet.vue b/src/views/usergold/gold/clientCountWallet.vue index d1a3123..8c26151 100644 --- a/src/views/usergold/gold/clientCountWallet.vue +++ b/src/views/usergold/gold/clientCountWallet.vue @@ -26,12 +26,83 @@ const { t } = useI18n() const dialogVisible = ref(false) // 定义加载状态,获取地区数据 -const isLoadingmarket = ref(false); const markets = ref([]) // 充值明细表格 -const tableData = ref([]) +// 替换你代码中的 tableData 初始化部分 +const tableData = ref([ + { + name: "张三", + jwcode: "100001", + market: "香港总部", + hkGold: 15800.50, + sgHcGold: 8900.00, + myGold: 5600.75, + sgGold: 7800.20, + caGold: 3200.00, + thHsGold: 1800.50, + thHaGold: 2500.80, + vnGold: 950.30, + bjGold: 4500.00 + }, + { + name: "李四", + jwcode: "100002", + market: "新加坡分部", + hkGold: 9800.00, + sgHcGold: 12500.80, + myGold: 7800.00, + sgGold: 15600.90, + caGold: 4200.50, + thHsGold: 3600.00, + thHaGold: 1900.20, + vnGold: 1200.75, + bjGold: 3800.00 + }, + { + name: "王五", + jwcode: "100003", + market: "马来西亚分部", + hkGold: 6500.30, + sgHcGold: 4800.50, + myGold: 18900.00, + sgGold: 5600.80, + caGold: 2100.00, + thHsGold: 2800.60, + thHaGold: 3200.00, + vnGold: 1800.50, + bjGold: 2900.75 + }, + { + name: "赵六", + jwcode: "100004", + market: "加拿大分部", + hkGold: 4200.00, + sgHcGold: 3600.80, + myGold: 2900.50, + sgGold: 4100.00, + caGold: 25800.90, + thHsGold: 1500.30, + thHaGold: 1800.00, + vnGold: 850.20, + bjGold: 1800.50 + }, + { + name: "孙七", + jwcode: "100005", + market: "泰国HS分部", + hkGold: 7800.75, + sgHcGold: 6500.00, + myGold: 4200.80, + sgGold: 5900.50, + caGold: 1800.00, + thHsGold: 32500.20, + thHaGold: 8900.00, + vnGold: 2500.80, + bjGold: 3600.30 + } +]); const tableRef = ref(null) const scrollTableTop = () => { tableRef.value?.setScrollTop?.(0) @@ -59,7 +130,8 @@ const total = ref(100) // 搜索对象时间 const getTime = ref([]) // 搜索User -const user = ref({ +const selectData = ref({ + jwcode: '', markets: [], }) // 不分页的搜索对象 @@ -82,119 +154,45 @@ const get = async function (val) { if (typeof val === 'number') { getObj.value.pageNum = val } - - // 添加排序字段和排序方式到请求参数 - user.value.sortField = sortField.value - user.value.sortOrder = sortOrder.value - console.log('搜索参数', getObj.value) - - // 发送POST请求 - const requestData = { ...getObj.value, user: { ...user.value } };//控制台打印请求的参数 - console.log('最终请求参数', JSON.stringify(requestData, null, 2)); // 打印格式化后的请求参数 - //console.log('请求参数', requestData); - // 检查markets数组中是否包含'总部'或'研发部' - // if (user.value.markets.includes('9') || user.value.markets.includes('9999')) { - // user.value.markets = []; - // } - if (user.value.jwcode) { + if (selectData.value.jwcode) { // 纯数字 const numberRegex = /^\d{1,9}$/; - // 检查是否不是数字 - if (!numberRegex.test(user.value.jwcode)) { + if (!numberRegex.test(selectData.value.jwcode)) { ElMessage.error(t('elmessage.checkJwcodeFormat')) - // 上面提示过了 return } } - const result = await API({ - url: '/goldDetail/getGold', - method: 'post', - data: { ...getObj.value, user: { ...user.value, flag: flag.value } } - }) - console.log('响应数据', result) - tableData.value = result.data.list - total.value = result.data.total - - console.log('兄弟你是什么 user', user.value) + + console.log('搜索参数', getObj.value, selectData.value) + // const result = await API({ + // url: '/goldDetail/getGold', + // method: 'post', + // data: { ...getObj.value, selectData: { ...selectData.value, flag: flag.value } } + // }) + // console.log('响应数据', result) + // tableData.value = result.data.list + // total.value = result.data.total + // 获取合计数 - const resultGoldTotal = await API({ - url: '/goldDetail/goldTotal', - data: { - jwcode: user.value.jwcode, - markets: user.value.markets, - flag: flag.value - } - }) + // const resultGoldTotal = await API({ + // url: '/goldDetail/goldTotal', + // data: { + // jwcode: selectData.value.jwcode, + // markets: selectData.value.markets, + // flag: flag.value + // } + // }) // 判断精网号是否存在,假设精网号不存在时 result.data.list 为空数组 - if (result.data.list.length === 0) { - // 将表格数据设置为空数组 - tableData.value = [] - // 将合计数设置为 0 - statisticsData.value = { - hkGold: 0, - sgHcGold: 0, - myGold: 0, - sgGold: 0, - caGold: 0, - thHsGold: 0, - thHaGold: 0, - vnGold: 0, - bjGold: 0 - } - - // // 新增金币总数变量 - // const goldtotal = ref(0) - // 分页总数设置为 0 - total.value = 0 - // ElMessage.warning('精网号不存在,请检查输入') - } - // 判断合计数是否存在,不存在时 result.data.list 为空数组 - else if (resultGoldTotal.data === 0) { - // 将表格数据设置为空数组 - tableData.value = [] - // 将合计数设置为 0 - statisticsData.value = { - hkGold: 0, - sgHcGold: 0, - myGold: 0, - sgGold: 0, - caGold: 0, - thHsGold: 0, - thHaGold: 0, - vnGold: 0, - bjGold: 0 - } - } - else { - // 将响应结果存储到响应式数据中 - console.log('总数据请求成功', result) - // 存储表格数据 - tableData.value = result.data.list - await nextTick() - scrollTableTop() - console.log('tableData', tableData.value) - - // 从接口返回数据中获取各金币数值 - if (resultGoldTotal.data) { - statisticsData.value = { ...resultGoldTotal.data } - } else { - console.error('合计数数据格式错误', resultGoldTotal) - ElMessage.error(t('elmessage.getTotalFailed')) - } - // 存储分页总数 - total.value = result.data.total - console.log('total', total.value) - } } catch (error) { console.log('请求失败', error) // 在这里可以处理错误逻辑,比如显示错误提示等 } } -// 精网号去空格,同时处理 user 和 putExcel 中的 jwcode +// 精网号去空格,同时处理 selectData 和 putExcel 中的 jwcode const trimJwCode = () => { - if (user.value.jwcode) { - user.value.jwcode = user.value.jwcode.replace(/\s/g, ''); + if (selectData.value.jwcode) { + selectData.value.jwcode = selectData.value.jwcode.replace(/\s/g, ''); } } @@ -206,7 +204,7 @@ const search = function () { } // 重置 const reset = function () { - user.value = { + selectData.value = { jwcode: '', markets: [], } @@ -218,12 +216,77 @@ const reset = function () { get() } const cellClick = function (row, column) { - console.log('cellClick', column.label) - if (column.label === t('common.name')) { - dialogVisible.value = true - userInfo.value = row + console.log('cellClick', column) + + const propToMarketName = { + hkGold: '香港', + sgHcGold: '新加坡HC', + myGold: '马来西亚', + sgGold: '新加坡', + caGold: '加拿大', + thHsGold: '泰国HS', + thHaGold: '泰国HA', + vnGold: '越南', + bjGold: '北京' + } + const marketName = propToMarketName[column.property] + if (marketName) { + currentWalletInfo.value = { + userName: row.name, + jwcode: row.jwcode, + marketName: row.market, // 用户所属地区 + walletName: marketName + '钱包', // 钱包名称 + currentBalance: row[column.property] || 0 + } + walletDetailQuery.value.pageNum = 1 + getWalletDetail() + walletDetailVisible.value = true + } +} + +// 钱包明细弹窗相关 +const walletDetailVisible = ref(false) +const walletDetailList = ref([]) +const walletDetailTotal = ref(0) +const walletDetailLoading = ref(false) +const currentWalletInfo = ref({}) +const walletDetailQuery = ref({ + pageNum: 1, + pageSize: 20 +}) + +const getWalletDetail = async () => { + walletDetailLoading.value = true + try { + // 模拟数据,实际应调用接口 + // const res = await API({ url: '/goldDetail/getWalletDetail', data: { ...walletDetailQuery.value, jwcode: currentWalletInfo.value.jwcode, walletType: currentWalletInfo.value.walletName } }) + // 模拟延迟 + await new Promise(resolve => setTimeout(resolve, 500)) + + walletDetailList.value = Array(10).fill(0).map((_, index) => ({ + time: '2026-01-02 12:00:00', + type: index % 2 === 0 ? '充值' : '消耗', + amount: index % 2 === 0 ? 5000 : -5000, + desc: index % 2 === 0 ? 'Stripe充值' : '购买大黄蜂', + orderNo: 'CZLINKXXXXXXXXX' + index, + status: index % 2 === 0 ? 1 : 2, + })) + walletDetailTotal.value = 400 + } catch (error) { + console.error(error) + } finally { + walletDetailLoading.value = false } } + +const handleWalletDetailSizeChange = (val) => { + walletDetailQuery.value.pageSize = val + getWalletDetail() +} +const handleWalletDetailCurrentChange = (val) => { + walletDetailQuery.value.pageNum = val + getWalletDetail() +} // 处理排序事件 const handleSortChange = (column) => { console.log('排序字段:', column.prop) @@ -251,9 +314,9 @@ const handleCurrentChange = function (val) { } const exportExcel = async function () { const params = { - user: { - jwcode: user.value.jwcode || '', - markets: user.value.markets || [], + selectData: { + jwcode: selectData.value.jwcode || '', + markets: selectData.value.markets || [], flag: flag.value } @@ -264,8 +327,74 @@ const exportExcel = async function () { } } +const selectWallet = async function () { + selectWalletVisible.value = true +} +const exportExcelOnlyOne = async function () { + if (!selectWalletForm.value.companyWalletId) { + ElMessage.error('请选择公司钱包') + return + } + console.log('selectWalletForm', selectWalletForm.value.companyWalletId) + selectWalletVisible.value = false +} + + const exportListVisible = ref(false) +const selectWalletVisible = ref(false) +const selectWalletFormRef = ref(null) +const selectWalletRules = { + companyWalletId: [ + { required: true, message: '请选择公司钱包', trigger: 'change' } + ] +} +// 关闭选择公司钱包弹窗 +const closeSelectWallet = () => { + // 重置表单 + selectWalletFormRef.value.resetFields() + selectWalletForm.value = {} + selectWalletVisible.value = false +} +const selectWalletForm = ref({}) +const companyWalletList = ref([ + { + id: 1, + name: '香港钱包' + }, + { + id: 2, + name: '新加坡HC' + }, + { + id: 3, + name: '马来西亚' + }, + { + id: 4, + name: '新加坡CM' + }, + { + id: 5, + name: '加拿大' + }, + { + id: 6, + name: '泰国HS' + }, + { + id: 7, + name: '泰国HA' + }, + { + id: 8, + name: '越南' + }, + { + id: 9, + name: '北京' + } +]) // 打开导出列表弹窗 const openExportList = () => { getExportList() @@ -345,10 +474,10 @@ const handleMarketChange = (value) => { const lastValue = value[value.length - 1]; // 确保返回值是数组,如果不是则包装成数组 const marketValue = reverseMarketMapping[lastValue]; - user.value.markets = Array.isArray(marketValue) ? marketValue : [marketValue]; + selectData.value.markets = Array.isArray(marketValue) ? marketValue : [marketValue]; } else { // 保持[]格式 - user.value.markets = []; + selectData.value.markets = []; } }; // 获取地区,修改为级联下拉框 @@ -398,7 +527,7 @@ const format3 = (num) => {
{{ $t('common.jwcode') }}: - +
{{ $t('common.market') }}: @@ -409,9 +538,10 @@ const format3 = (num) => {
{{ $t('common.search') }} + {{ $t('common.reset') }} {{ $t('common.exportExcel') }} + 导出公司钱包明细 {{ $t('common.viewExportList') }} - {{ $t('common.reset') }}
@@ -572,6 +702,75 @@ const format3 = (num) => { + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +