|
|
@ -1,10 +1,15 @@ |
|
|
<script setup> |
|
|
<script setup> |
|
|
import { ref, reactive, onMounted } from 'vue' |
|
|
|
|
|
|
|
|
import { ref, reactive, onMounted, toRefs } from 'vue' |
|
|
import { ElMessage, ElMessageBox } from 'element-plus' |
|
|
import { ElMessage, ElMessageBox } from 'element-plus' |
|
|
import request from '@/util/http.js' |
|
|
import request from '@/util/http.js' |
|
|
|
|
|
import { storeToRefs } from 'pinia' |
|
|
import dayjs from 'dayjs' |
|
|
import dayjs from 'dayjs' |
|
|
import { useI18n } from 'vue-i18n' |
|
|
import { useI18n } from 'vue-i18n' |
|
|
import { Moneyfunds,refundOnline,performanceSelect } from '@/api/cash/financialAccount.js' |
|
|
|
|
|
|
|
|
import { refundOnline,performanceSelect,exportPerformance } from '@/api/cash/financialAccount.js' |
|
|
|
|
|
import {useAdminStore} from '@/store/index.js' |
|
|
|
|
|
|
|
|
|
|
|
const adminStore = useAdminStore() |
|
|
|
|
|
const {adminData} = storeToRefs(adminStore) |
|
|
|
|
|
|
|
|
const { t } = useI18n() |
|
|
const { t } = useI18n() |
|
|
|
|
|
|
|
|
@ -35,13 +40,11 @@ const marketOptions = ref([]) |
|
|
// 查询参数 |
|
|
// 查询参数 |
|
|
const queryParams = reactive({ |
|
|
const queryParams = reactive({ |
|
|
jwcode: '', |
|
|
jwcode: '', |
|
|
markets: [], // 下拉多选 |
|
|
|
|
|
|
|
|
adminMarket: [], // 下拉多选 |
|
|
timeRange: [], // [startTime, endTime] |
|
|
timeRange: [], // [startTime, endTime] |
|
|
payType: '', |
|
|
|
|
|
orderCode: '', |
|
|
|
|
|
statuses: [], |
|
|
|
|
|
|
|
|
customerMarket: [], // 客户地区 |
|
|
pageNum: 1, |
|
|
pageNum: 1, |
|
|
pageSize: 50 |
|
|
|
|
|
|
|
|
pageSize: 20 |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
const total = ref(0) |
|
|
const total = ref(0) |
|
|
@ -85,12 +88,10 @@ const fetchData = async () => { |
|
|
pageSize: queryParams.pageSize, |
|
|
pageSize: queryParams.pageSize, |
|
|
performanceDTO:{ |
|
|
performanceDTO:{ |
|
|
jwcode: queryParams.jwcode, |
|
|
jwcode: queryParams.jwcode, |
|
|
markets: queryParams.markets, |
|
|
|
|
|
startTime: queryParams.timeRange?.[0] || '', |
|
|
|
|
|
endTime: queryParams.timeRange?.[1] || '', |
|
|
|
|
|
payType: queryParams.payType, |
|
|
|
|
|
orderCode: queryParams.orderCode, |
|
|
|
|
|
statuses: queryParams.statuses, |
|
|
|
|
|
|
|
|
adminMarket: adminData.value.markets.split(',').filter(item => item.trim() !== '') || [], |
|
|
|
|
|
customerMarket: queryParams.customerMarket, |
|
|
|
|
|
startTime: queryParams.timeRange?.[0] ? dayjs(queryParams.timeRange[0]).format('YYYY-MM-DD HH:mm:ss') : '', |
|
|
|
|
|
endTime: queryParams.timeRange?.[1] ? dayjs(queryParams.timeRange[1]).format('YYYY-MM-DD HH:mm:ss') : '', |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -118,11 +119,9 @@ const handleSearch = () => { |
|
|
|
|
|
|
|
|
const handleReset = () => { |
|
|
const handleReset = () => { |
|
|
queryParams.jwcode = '' |
|
|
queryParams.jwcode = '' |
|
|
queryParams.markets = [] |
|
|
|
|
|
queryParams.timeRange = [] |
|
|
|
|
|
queryParams.payType = '' |
|
|
|
|
|
queryParams.orderCode = '' |
|
|
|
|
|
queryParams.statuses = [] |
|
|
|
|
|
|
|
|
queryParams.adminMarket = [] |
|
|
|
|
|
queryParams.timeRange = null |
|
|
|
|
|
queryParams.customerMarket = [] |
|
|
handleSearch() |
|
|
handleSearch() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -158,29 +157,27 @@ const exportList = ref([]) |
|
|
const exportListLoading = ref(false) |
|
|
const exportListLoading = ref(false) |
|
|
|
|
|
|
|
|
// 导出Excel |
|
|
// 导出Excel |
|
|
const handleExport = async () => { |
|
|
|
|
|
|
|
|
const handleExport = async () => { |
|
|
try { |
|
|
try { |
|
|
const params = { |
|
|
const params = { |
|
|
pageNum: queryParams.pageNum, |
|
|
pageNum: queryParams.pageNum, |
|
|
pageSize: queryParams.pageSize, |
|
|
pageSize: queryParams.pageSize, |
|
|
performanceDTO:{ |
|
|
performanceDTO:{ |
|
|
jwcode: queryParams.jwcode, |
|
|
jwcode: queryParams.jwcode, |
|
|
markets: queryParams.markets, |
|
|
|
|
|
startTime: queryParams.timeRange?.[0] || '', |
|
|
|
|
|
endTime: queryParams.timeRange?.[1] || '', |
|
|
|
|
|
payType: queryParams.payType, |
|
|
|
|
|
orderCode: queryParams.orderCode, |
|
|
|
|
|
statuses: queryParams.statuses, |
|
|
|
|
|
|
|
|
adminMarket: queryParams.adminMarket, |
|
|
|
|
|
startTime: queryParams.timeRange?.[0] ? dayjs(queryParams.timeRange[0]).format('YYYY-MM-DD HH:mm:ss') : '', |
|
|
|
|
|
endTime: queryParams.timeRange?.[1] ? dayjs(queryParams.timeRange[1]).format('YYYY-MM-DD HH:mm:ss') : '', |
|
|
|
|
|
customerMarket: queryParams.customerMarket, |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// TODO: 确认导出接口 URL |
|
|
// TODO: 确认导出接口 URL |
|
|
const res = await request({ url: '/export/exportCash', data: params }) |
|
|
|
|
|
|
|
|
const res = await exportPerformance(params) |
|
|
if(res.code == 200){ |
|
|
if(res.code == 200){ |
|
|
|
|
|
|
|
|
console.log('导出参数', params) |
|
|
console.log('导出参数', params) |
|
|
ElMessage.success(t('elmessage.exportSuccess')) |
|
|
ElMessage.success(t('elmessage.exportSuccess')) |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
console.error(error) |
|
|
console.error(error) |
|
|
@ -268,7 +265,7 @@ onMounted(() => { |
|
|
<span class="label">所属地区:</span> |
|
|
<span class="label">所属地区:</span> |
|
|
<!-- 下拉多选,使用 el-cascader 匹配地区树结构 --> |
|
|
<!-- 下拉多选,使用 el-cascader 匹配地区树结构 --> |
|
|
<el-cascader |
|
|
<el-cascader |
|
|
v-model="queryParams.markets" |
|
|
|
|
|
|
|
|
v-model="queryParams.customerMarket" |
|
|
:options="marketOptions" |
|
|
:options="marketOptions" |
|
|
:props="{ multiple: true, emitPath: false }" |
|
|
:props="{ multiple: true, emitPath: false }" |
|
|
collapse-tags |
|
|
collapse-tags |
|
|
@ -278,27 +275,8 @@ onMounted(() => { |
|
|
style="width: 220px;" |
|
|
style="width: 220px;" |
|
|
/> |
|
|
/> |
|
|
</div> |
|
|
</div> |
|
|
<div class="search-item"> |
|
|
|
|
|
<span class="label">支付平台:</span> |
|
|
|
|
|
<el-select v-model="queryParams.payType" placeholder="请选择" clearable> |
|
|
|
|
|
<el-option v-for="item in payPlatformOptions" :key="item" :label="item" :value="item" /> |
|
|
|
|
|
</el-select> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="search-item"> |
|
|
|
|
|
<span class="label">状态:</span> |
|
|
|
|
|
<el-select v-model="queryParams.statuses[0]" placeholder="请选择" clearable> |
|
|
|
|
|
<el-option v-for="item in statusOptions" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
|
|
</el-select> |
|
|
|
|
|
</div> |
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 第二行 --> |
|
|
|
|
|
<div class="search-row"> |
|
|
|
|
|
<div class="search-item"> |
|
|
|
|
|
<span class="label">订单号:</span> |
|
|
|
|
|
<el-input v-model="queryParams.orderCode" placeholder="请输入订单号" clearable /> |
|
|
|
|
|
</div> |
|
|
|
|
|
<div class="search-item" style="width: auto;"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="search-item" style="width: auto;"> |
|
|
<span class="label">付款时间:</span> |
|
|
<span class="label">付款时间:</span> |
|
|
<el-date-picker |
|
|
<el-date-picker |
|
|
v-model="queryParams.timeRange" |
|
|
v-model="queryParams.timeRange" |
|
|
@ -310,7 +288,8 @@ onMounted(() => { |
|
|
style="width: 350px;" |
|
|
style="width: 350px;" |
|
|
/> |
|
|
/> |
|
|
</div> |
|
|
</div> |
|
|
<div class="search-btn-group"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="search-btn-group"> |
|
|
<el-button type="primary" @click="handleSearch">{{ t('common.search') }}</el-button> |
|
|
<el-button type="primary" @click="handleSearch">{{ t('common.search') }}</el-button> |
|
|
<el-button type="primary" @click="handleExport">{{ t('common.exportExcel') }}</el-button> |
|
|
<el-button type="primary" @click="handleExport">{{ t('common.exportExcel') }}</el-button> |
|
|
<el-button type="primary" @click="openExportList">{{ t('common.viewExportList') }}</el-button> |
|
|
<el-button type="primary" @click="openExportList">{{ t('common.viewExportList') }}</el-button> |
|
|
@ -344,30 +323,6 @@ onMounted(() => { |
|
|
<el-table-column prop="receivedCurrency" label="到账币种" width="180" show-overflow-tooltip /> |
|
|
<el-table-column prop="receivedCurrency" label="到账币种" width="180" show-overflow-tooltip /> |
|
|
|
|
|
|
|
|
<el-table-column prop="handlingCharge" label="手续费" width="100" align="right" /> |
|
|
<el-table-column prop="handlingCharge" label="手续费" width="100" align="right" /> |
|
|
<el-table-column prop="payType" label="支付方式" width="120" align="center" /> |
|
|
|
|
|
<el-table-column prop="payTime" label="付款时间" width="180" align="center" /> |
|
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="status" label="状态" width="100" align="center" fixed="right"> |
|
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
|
<el-tag :type="row.status === 4 ? 'success' : 'warning'" effect="plain"> |
|
|
|
|
|
{{ row.status === 4 ? '已到账' : '已退款' }} |
|
|
|
|
|
</el-tag> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
|
|
|
|
|
|
<el-table-column label="操作" width="100" fixed="right" align="center"> |
|
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
|
<el-button |
|
|
|
|
|
v-if="row.orderCode.slice(0,4) == 'GOLD'" |
|
|
|
|
|
type="danger" |
|
|
|
|
|
link |
|
|
|
|
|
size="small" |
|
|
|
|
|
@click="handleRefund(row)" |
|
|
|
|
|
> |
|
|
|
|
|
退款 |
|
|
|
|
|
</el-button> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
</el-table> |
|
|
</el-table> |
|
|
|
|
|
|
|
|
<!-- 分页 --> |
|
|
<!-- 分页 --> |
|
|
@ -468,7 +423,7 @@ onMounted(() => { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.search-btn-group { |
|
|
.search-btn-group { |
|
|
margin-left: auto; // 靠右对齐 |
|
|
|
|
|
|
|
|
margin-left: 2vw; |
|
|
display: flex; |
|
|
display: flex; |
|
|
gap: 10px; |
|
|
gap: 10px; |
|
|
} |
|
|
} |
|
|
|