|
@ -42,16 +42,13 @@ const activity = ref([]) |
|
|
const allData = ref([]) |
|
|
const allData = ref([]) |
|
|
// 搜索地区列表 |
|
|
// 搜索地区列表 |
|
|
const market = ref([]) |
|
|
const market = ref([]) |
|
|
|
|
|
|
|
|
//时间格式化 |
|
|
//时间格式化 |
|
|
const formatTime = (val) => val ? moment(val).format('YYYY-MM-DD HH:mm:ss') : '' |
|
|
const formatTime = (val) => val ? moment(val).format('YYYY-MM-DD HH:mm:ss') : '' |
|
|
|
|
|
|
|
|
// 初始化 money 和 permanentGold 和 freeGold |
|
|
// 初始化 money 和 permanentGold 和 freeGold |
|
|
const money = ref(0) |
|
|
const money = ref(0) |
|
|
const permanentGold = ref(0) |
|
|
const permanentGold = ref(0) |
|
|
const freeGold = ref(0) |
|
|
const freeGold = ref(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 定义响应式变量存储金币合计数 |
|
|
// 定义响应式变量存储金币合计数 |
|
|
const permanentGolds = ref(0) |
|
|
const permanentGolds = ref(0) |
|
|
const freeGolds = ref(0) |
|
|
const freeGolds = ref(0) |
|
@ -96,7 +93,7 @@ const getActivity = async function () { |
|
|
|
|
|
|
|
|
// 将响应结果存储到响应式数据中 |
|
|
// 将响应结果存储到响应式数据中 |
|
|
console.log('请求成功', result) |
|
|
console.log('请求成功', result) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 检查返回的数据是否为数组 |
|
|
// 检查返回的数据是否为数组 |
|
|
if (Array.isArray(result.data)) { |
|
|
if (Array.isArray(result.data)) { |
|
|
// 将字符串数组转换为 { value, label } 格式 |
|
|
// 将字符串数组转换为 { value, label } 格式 |
|
@ -143,16 +140,16 @@ const getPlatform = async () => { |
|
|
data: {}// 这里添加参数 |
|
|
data: {}// 这里添加参数 |
|
|
}) |
|
|
}) |
|
|
// 假设后端返回的是字符串数组,转换为 { value, label } 格式 |
|
|
// 假设后端返回的是字符串数组,转换为 { value, label } 格式 |
|
|
if(Array.isArray(result.data)) { |
|
|
|
|
|
|
|
|
if (Array.isArray(result.data)) { |
|
|
platform.value = result.data.map(item => ({ value: item, label: item })); |
|
|
platform.value = result.data.map(item => ({ value: item, label: item })); |
|
|
} else { |
|
|
} else { |
|
|
console.error('充值类型格式错误',result) |
|
|
|
|
|
|
|
|
console.error('充值类型格式错误', result) |
|
|
ElMessage.error('充值类型格式错误,请联系管理员') |
|
|
ElMessage.error('充值类型格式错误,请联系管理员') |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} catch (error) { |
|
|
} catch (error) { |
|
|
console.error('获取充值类型失败:', error); |
|
|
console.error('获取充值类型失败:', error); |
|
|
ElMessage.error('获取充值类型失败,请稍后重试'); |
|
|
ElMessage.error('获取充值类型失败,请稍后重试'); |
|
|
} finally { |
|
|
|
|
|
|
|
|
} finally { |
|
|
isLoadingPlatform.value = false |
|
|
isLoadingPlatform.value = false |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -182,9 +179,9 @@ const get = async function (val) { |
|
|
// 发送POST请求 |
|
|
// 发送POST请求 |
|
|
const result = await API({ |
|
|
const result = await API({ |
|
|
url: '/recharge/selectBy', |
|
|
url: '/recharge/selectBy', |
|
|
data: { |
|
|
|
|
|
...getObj.value, |
|
|
|
|
|
rechargeUser: { ...rechargeUser.value } |
|
|
|
|
|
|
|
|
data: { |
|
|
|
|
|
...getObj.value, |
|
|
|
|
|
rechargeUser: { ...rechargeUser.value } |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
// 复制一份 rechargeUser.value 并移除排序字段和排序方式 |
|
|
// 复制一份 rechargeUser.value 并移除排序字段和排序方式 |
|
@ -193,8 +190,8 @@ const get = async function (val) { |
|
|
adminId: rechargeUser.value.adminId, |
|
|
adminId: rechargeUser.value.adminId, |
|
|
startTime: rechargeUser.value.startTime, |
|
|
startTime: rechargeUser.value.startTime, |
|
|
endTime: rechargeUser.value.endTime, |
|
|
endTime: rechargeUser.value.endTime, |
|
|
jwcode: rechargeUser.value.jwcode, |
|
|
|
|
|
goodsName: rechargeUser.value.goodsName, |
|
|
|
|
|
|
|
|
jwcode: rechargeUser.value.jwcode, |
|
|
|
|
|
goodsName: rechargeUser.value.goodsName, |
|
|
payPlatform: rechargeUser.value.payPlatform |
|
|
payPlatform: rechargeUser.value.payPlatform |
|
|
}) |
|
|
}) |
|
|
const resultTotalGold = await API({ |
|
|
const resultTotalGold = await API({ |
|
@ -208,11 +205,11 @@ const get = async function (val) { |
|
|
const data = resultTotalGold.data |
|
|
const data = resultTotalGold.data |
|
|
console.log('获取到的金币数据:', data) |
|
|
console.log('获取到的金币数据:', data) |
|
|
|
|
|
|
|
|
permanentGolds.value = (Number(data.permanentGolds) || 0)/100 |
|
|
|
|
|
freeGolds.value = (Number(data.freeGolds) || 0)/100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
permanentGolds.value = (Number(data.permanentGolds) || 0) / 100 |
|
|
|
|
|
freeGolds.value = (Number(data.freeGolds) || 0) / 100 |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 将响应结果存储到响应式数据中 |
|
|
// 将响应结果存储到响应式数据中 |
|
|
console.log('请求成功', result) |
|
|
console.log('请求成功', result) |
|
|
// 存储表格数据 |
|
|
// 存储表格数据 |
|
@ -225,7 +222,7 @@ const get = async function (val) { |
|
|
// 处理免费金币 |
|
|
// 处理免费金币 |
|
|
freeGold: (Number(item.freeGold) || 0) / 100, |
|
|
freeGold: (Number(item.freeGold) || 0) / 100, |
|
|
// 处理充值金额 |
|
|
// 处理充值金额 |
|
|
money: (Number(item.money) || 0) / 100 |
|
|
|
|
|
|
|
|
money: (Number(item.money) || 0) / 100 |
|
|
})) |
|
|
})) |
|
|
console.log('tableData', tableData.value) |
|
|
console.log('tableData', tableData.value) |
|
|
// 存储分页总数 |
|
|
// 存储分页总数 |
|
@ -314,45 +311,31 @@ const get7Days = function () { |
|
|
console.log('getTime', getTime.value) |
|
|
console.log('getTime', getTime.value) |
|
|
get() |
|
|
get() |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 验证跳转输入框的数字是否合法 |
|
|
|
|
|
const checkNumber = function () { |
|
|
|
|
|
if (typeof parseInt(getObj.value.pageNum) === 'number') { |
|
|
|
|
|
console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize)) |
|
|
|
|
|
if ( |
|
|
|
|
|
getObj.value.pageNum > 0 && |
|
|
|
|
|
getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize) |
|
|
|
|
|
) { |
|
|
|
|
|
getObj.value.pageNum = parseInt(getObj.value.pageNum) |
|
|
|
|
|
console.log('输入的数字合法') |
|
|
|
|
|
get() |
|
|
|
|
|
} else { |
|
|
|
|
|
//提示 |
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
type: 'error', |
|
|
|
|
|
message: '请检查输入内容' |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
//提示 |
|
|
|
|
|
ElMessage({ |
|
|
|
|
|
type: 'error', |
|
|
|
|
|
message: '数字输入有误' |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
const exportExcel = async function () { |
|
|
|
|
|
const params = { |
|
|
|
|
|
text:'', |
|
|
|
|
|
deptid:'', |
|
|
|
|
|
sort:1, |
|
|
|
|
|
field:'', |
|
|
|
|
|
page:getObj.pageNum, |
|
|
|
|
|
size:getObj.pageSize |
|
|
|
|
|
} |
|
|
|
|
|
const res = await API({ url: '/export/exportRecharge', data: params }) |
|
|
|
|
|
if (res.code === 200) { |
|
|
|
|
|
ElMessage.success('导出成功') |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 挂载 |
|
|
// 挂载 |
|
|
onMounted(async function () { |
|
|
onMounted(async function () { |
|
|
await getAdminData() |
|
|
|
|
|
await get() |
|
|
await get() |
|
|
await getActivity() |
|
|
await getActivity() |
|
|
await getArea() |
|
|
await getArea() |
|
|
await getPlatform() |
|
|
await getPlatform() |
|
|
}) |
|
|
}) |
|
|
// 新增排序字段和排序方式 |
|
|
// 新增排序字段和排序方式 |
|
|
const sortField = ref('') |
|
|
|
|
|
const sortOrder = ref('') |
|
|
|
|
|
|
|
|
const sortField = ref() |
|
|
|
|
|
const sortOrder = ref(1) |
|
|
// 处理排序事件 |
|
|
// 处理排序事件 |
|
|
const handleSortChange = (column) => { |
|
|
const handleSortChange = (column) => { |
|
|
|
|
|
|
|
@ -366,19 +349,18 @@ const handleSortChange = (column) => { |
|
|
sortField.value = 'payTime' |
|
|
sortField.value = 'payTime' |
|
|
} else if (column.prop === 'createTime') { |
|
|
} else if (column.prop === 'createTime') { |
|
|
sortField.value = 'createTime' |
|
|
sortField.value = 'createTime' |
|
|
} else if(column.prop === 'permanentGold'){ |
|
|
|
|
|
|
|
|
} else if (column.prop === 'permanentGold') { |
|
|
sortField.value = 'permanentGold' |
|
|
sortField.value = 'permanentGold' |
|
|
} |
|
|
} |
|
|
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC' |
|
|
|
|
|
|
|
|
sortOrder.value = column.order === 'ascending' ? '1' : '0' |
|
|
console.log('传递给后端的排序字段:', sortField.value) |
|
|
console.log('传递给后端的排序字段:', sortField.value) |
|
|
|
|
|
|
|
|
console.log('传递给后端的排序方式:', sortOrder.value) |
|
|
console.log('传递给后端的排序方式:', sortOrder.value) |
|
|
get() |
|
|
get() |
|
|
} |
|
|
} |
|
|
</script> |
|
|
</script> |
|
|
|
|
|
|
|
|
<template> |
|
|
<template> |
|
|
<el-row> |
|
|
|
|
|
|
|
|
<el-row> |
|
|
<el-col> |
|
|
<el-col> |
|
|
<el-card style="margin-bottom: 20px;margin-top: 10px"> |
|
|
<el-card style="margin-bottom: 20px;margin-top: 10px"> |
|
|
<el-row style="margin-bottom: 10px"> |
|
|
<el-row style="margin-bottom: 10px"> |
|
@ -391,23 +373,19 @@ const handleSortChange = (column) => { |
|
|
<el-col :span="6"> |
|
|
<el-col :span="6"> |
|
|
<div class="head-card-element"> |
|
|
<div class="head-card-element"> |
|
|
<el-text class="mx-1" size="large">活动名称:</el-text> |
|
|
<el-text class="mx-1" size="large">活动名称:</el-text> |
|
|
<el-select v-model="rechargeUser.activity" placeholder="请选择活动名称" style="width: 180px" |
|
|
|
|
|
clearable> |
|
|
|
|
|
<el-option v-for="item in activity" :key="item.value" :label="item.label" |
|
|
|
|
|
:value="item.value" /> |
|
|
|
|
|
|
|
|
<el-select v-model="rechargeUser.activity" placeholder="请选择活动名称" style="width: 180px" clearable> |
|
|
|
|
|
<el-option v-for="item in activity" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
|
|
|
|
|
|
<el-col :span="6"> |
|
|
<el-col :span="6"> |
|
|
<div class="head-card-element" > |
|
|
|
|
|
|
|
|
<div class="head-card-element"> |
|
|
<el-text class="mx-1" size="large">所属地区:</el-text> |
|
|
<el-text class="mx-1" size="large">所属地区:</el-text> |
|
|
<el-select v-model="rechargeUser.market" placeholder="请选择所属地区" style="width: 180px" clearable> |
|
|
<el-select v-model="rechargeUser.market" placeholder="请选择所属地区" style="width: 180px" clearable> |
|
|
<el-option v-for="item in market" :key="item" :label="item" :value="item" /> |
|
|
<el-option v-for="item in market" :key="item" :label="item" :value="item" /> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
|
|
|
|
|
|
<el-col :span="6"> |
|
|
<el-col :span="6"> |
|
|
<div class="head-card-element"> |
|
|
<div class="head-card-element"> |
|
|
<el-text class="mx-1" size="large">充值类型:</el-text> |
|
|
<el-text class="mx-1" size="large">充值类型:</el-text> |
|
@ -416,28 +394,17 @@ const handleSortChange = (column) => { |
|
|
</el-select> |
|
|
</el-select> |
|
|
</div> |
|
|
</div> |
|
|
</el-col> |
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
</el-row> |
|
|
<el-row> |
|
|
<el-row> |
|
|
<el-col :span="21"> |
|
|
<el-col :span="21"> |
|
|
<div class="head-card-element"> |
|
|
<div class="head-card-element"> |
|
|
<el-text class="mx-1" size="large">充值时间:</el-text> |
|
|
<el-text class="mx-1" size="large">充值时间:</el-text> |
|
|
<el-date-picker |
|
|
|
|
|
v-model="getTime" |
|
|
|
|
|
type="datetimerange" |
|
|
|
|
|
range-separator="至" |
|
|
|
|
|
start-placeholder="起始时间" |
|
|
|
|
|
end-placeholder="结束时间" |
|
|
|
|
|
/> |
|
|
|
|
|
<el-button style="margin-left: 10px" @click="getToday()" |
|
|
|
|
|
>今</el-button |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<el-date-picker v-model="getTime" type="datetimerange" range-separator="至" start-placeholder="起始时间" |
|
|
|
|
|
end-placeholder="结束时间" /> |
|
|
|
|
|
<el-button style="margin-left: 10px" @click="getToday()">今</el-button> |
|
|
<el-button @click="getYesterday()">昨</el-button> |
|
|
<el-button @click="getYesterday()">昨</el-button> |
|
|
<el-button @click="get7Days()">近7天</el-button> |
|
|
<el-button @click="get7Days()">近7天</el-button> |
|
|
<!-- </div> |
|
|
|
|
|
</el-col> |
|
|
|
|
|
<el-col :span="3"> |
|
|
|
|
|
<div class="head-card-btn"> --> |
|
|
|
|
|
<el-button type="success" @click="reset()">重置</el-button> |
|
|
<el-button type="success" @click="reset()">重置</el-button> |
|
|
<el-button type="primary" @click="search()">查询</el-button> |
|
|
<el-button type="primary" @click="search()">查询</el-button> |
|
|
<el-button type="primary" @click="exportExcel()">导出Excel</el-button> |
|
|
<el-button type="primary" @click="exportExcel()">导出Excel</el-button> |
|
@ -457,113 +424,44 @@ const handleSortChange = (column) => { |
|
|
</div> |
|
|
</div> |
|
|
<!-- 设置表格容器的高度和滚动样式 --> |
|
|
<!-- 设置表格容器的高度和滚动样式 --> |
|
|
<div style="height: 520px; overflow-y: auto;margin-top: 10px;"> |
|
|
<div style="height: 520px; overflow-y: auto;margin-top: 10px;"> |
|
|
<el-table |
|
|
|
|
|
:data="tableData" |
|
|
|
|
|
style="width: 100%" |
|
|
|
|
|
height="520px" |
|
|
|
|
|
@sort-change="handleSortChange" |
|
|
|
|
|
> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
type="index" |
|
|
|
|
|
label="序号" |
|
|
|
|
|
width="80px" |
|
|
|
|
|
fixed="left" |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<el-table :data="tableData" style="width: 100%" height="520px" @sort-change="handleSortChange"> |
|
|
|
|
|
<el-table-column type="index" label="序号" width="80px" fixed="left"> |
|
|
<template #default="scope"> |
|
|
<template #default="scope"> |
|
|
<span>{{ |
|
|
<span>{{ |
|
|
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize |
|
|
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize |
|
|
}}</span> |
|
|
}}</span> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column |
|
|
|
|
|
fixed="left" |
|
|
|
|
|
prop="name" |
|
|
|
|
|
label="姓名" |
|
|
|
|
|
width="80px" |
|
|
|
|
|
/> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
fixed="left" |
|
|
|
|
|
prop="jwcode" |
|
|
|
|
|
label="精网号" |
|
|
|
|
|
width="80px" |
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
<el-table-column fixed="left" prop="name" label="姓名" width="80px" /> |
|
|
|
|
|
<el-table-column fixed="left" prop="jwcode" label="精网号" width="80px" /> |
|
|
<el-table-column prop="market" label="所属地区" width="100px" /> |
|
|
<el-table-column prop="market" label="所属地区" width="100px" /> |
|
|
<el-table-column |
|
|
|
|
|
prop="activity" |
|
|
|
|
|
label="活动名称" |
|
|
|
|
|
width="100px" |
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
<el-table-column prop="activity" label="活动名称" width="100px" /> |
|
|
<el-table-column prop="rateName" label="货币名称" width="110px" /> |
|
|
<el-table-column prop="rateName" label="货币名称" width="110px" /> |
|
|
<el-table-column |
|
|
|
|
|
prop="money" |
|
|
|
|
|
sortable="custom" |
|
|
|
|
|
label="充值金额" |
|
|
|
|
|
width="110px" |
|
|
|
|
|
/> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
prop="permanentGold" |
|
|
|
|
|
label="永久金币" |
|
|
|
|
|
sortable="custom" |
|
|
|
|
|
width="110px" |
|
|
|
|
|
/> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
prop="freeGold" |
|
|
|
|
|
label="免费金币" |
|
|
|
|
|
sortable="custom" |
|
|
|
|
|
width="110px" |
|
|
|
|
|
/> |
|
|
|
|
|
<el-table-column |
|
|
|
|
|
prop="payPlatform" |
|
|
|
|
|
label="充值方式" |
|
|
|
|
|
width="100px" |
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
<el-table-column prop="money" sortable="custom" label="充值金额" width="110px" /> |
|
|
|
|
|
<el-table-column prop="permanentGold" label="永久金币" sortable="custom" width="110px" /> |
|
|
|
|
|
<el-table-column prop="freeGold" label="免费金币" sortable="custom" width="110px" /> |
|
|
|
|
|
<el-table-column prop="payPlatform" label="充值方式" width="100px" /> |
|
|
<el-table-column prop="payModel" label="支付方式" width="100px" /> |
|
|
<el-table-column prop="payModel" label="支付方式" width="100px" /> |
|
|
<el-table-column |
|
|
|
|
|
prop="remark" |
|
|
|
|
|
label="备注" |
|
|
|
|
|
width="150px" |
|
|
|
|
|
show-overflow-tooltip |
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<el-table-column prop="remark" label="备注" width="150px" show-overflow-tooltip /> |
|
|
<el-table-column prop="adminName" label="提交人" width="100px" /> |
|
|
<el-table-column prop="adminName" label="提交人" width="100px" /> |
|
|
|
|
|
|
|
|
<el-table-column |
|
|
|
|
|
prop="payTime" |
|
|
|
|
|
sortable |
|
|
|
|
|
label="充值时间" |
|
|
|
|
|
width="200px" |
|
|
|
|
|
> |
|
|
|
|
|
|
|
|
<el-table-column prop="payTime" sortable label="充值时间" width="200px"> |
|
|
<template #default="scope"> |
|
|
<template #default="scope"> |
|
|
{{ |
|
|
|
|
|
moment(scope.row.payTime).format('YYYY-MM-DD HH:mm:ss') |
|
|
|
|
|
}} |
|
|
|
|
|
|
|
|
{{ moment(scope.row.payTime).format('YYYY-MM-DD HH:mm:ss') }} |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
|
|
|
|
|
|
</el-table> |
|
|
</el-table> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<!-- 分页 --> |
|
|
<!-- 分页 --> |
|
|
<div class="pagination" style="margin-top: 20px"> |
|
|
<div class="pagination" style="margin-top: 20px"> |
|
|
<el-pagination |
|
|
|
|
|
background |
|
|
|
|
|
:page-size="getObj.pageSize" |
|
|
|
|
|
:page-sizes="[5, 10, 20, 50, 100]" |
|
|
|
|
|
layout="total, sizes, prev, pager, next, jumper" |
|
|
|
|
|
:total="total" |
|
|
|
|
|
@size-change="handlePageSizeChange" |
|
|
|
|
|
@current-change="handleCurrentChange" |
|
|
|
|
|
></el-pagination> |
|
|
|
|
|
|
|
|
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]" |
|
|
|
|
|
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange" |
|
|
|
|
|
@current-change="handleCurrentChange"></el-pagination> |
|
|
</div> |
|
|
</div> |
|
|
</el-card> |
|
|
</el-card> |
|
|
</el-col> |
|
|
</el-col> |
|
|
</el-row> |
|
|
</el-row> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</template> |
|
|
</template> |
|
|
|
|
|
|
|
|
<style scoped> |
|
|
<style scoped> |
|
|
.pagination { |
|
|
.pagination { |
|
|
display: flex; |
|
|
display: flex; |
|
|