feat(custom): 增加游戏数据统计

This commit is contained in:
2023-10-28 15:12:11 +08:00
parent ca08cfa52a
commit 092904f3b4
4 changed files with 222 additions and 27 deletions

View File

@@ -3,17 +3,22 @@
<n-grid class="mb-10" x-gap="12">
<n-gi :span="24">
<div flex>
<n-card w-500>
<n-card w-250>
<n-statistic label="用户总赢积分" tabular-nums>
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.win" />
</n-statistic>
</n-card>
<n-card ml-10 w-250>
<n-statistic label="用户积分(留存)" tabular-nums>
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.integral" />
</n-statistic>
</n-card>
<n-card ml-10 w-500>
<n-statistic label="用户豆子(留存)" tabular-nums>
<n-card ml-10 w-250>
<n-statistic label="总豆子" tabular-nums>
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.pulse" />
</n-statistic>
</n-card>
<n-card ml-10 w-500>
<n-card ml-10 w-250>
<n-statistic label="今日新增用户" tabular-nums>
<n-number-animation
ref="numberAnimationInstRef"
@@ -22,7 +27,7 @@
/>
</n-statistic>
</n-card>
<n-card ml-10 w-500>
<n-card ml-10 w-250>
<n-statistic label="用户总流水(元)" tabular-nums>
<n-number-animation
ref="numberAnimationInstRef"
@@ -32,7 +37,7 @@
/>
</n-statistic>
</n-card>
<n-card ml-10 w-500>
<n-card ml-10 w-250>
<n-statistic label="总佣金(积分)" tabular-nums>
<n-number-animation
ref="numberAnimationInstRef"
@@ -42,7 +47,7 @@
/>
</n-statistic>
</n-card>
<n-card ml-10 w-500>
<n-card ml-10 w-250>
<n-statistic label="平台总用户" tabular-nums>
<n-number-animation
ref="numberAnimationInstRef"
@@ -65,6 +70,30 @@
<n-input v-model:value="queryParams.word" :style="{ width: '30%' }" />
</n-input-group>
</n-gi>
<n-gi :span="24" mt-10>
<div>
<span>筛选状态</span>
<n-radio-group v-model:value="queryParams.status">
<n-radio-button
v-for="song in songs"
:key="song.value"
:value="song.value"
:label="song.label"
/>
</n-radio-group>
</div>
</n-gi>
<n-gi :span="10">
<div mt-10 flex items-center>
<span w-100>时间筛选</span>
<n-date-picker
v-model:formatted-value="queryParams.time"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
clearable
/>
</div>
</n-gi>
<n-gi span="24" mt-10 flex items-center>
<n-button type="primary" @click="getList">查询</n-button>
<n-button ml-10 @click="clear">重置</n-button>
@@ -118,7 +147,7 @@
/>
</div>
</n-col>
<n-col :span="10" v-if="tabVal === '4'">
<n-col v-if="tabVal === '4'" :span="10">
<div mt-10 flex items-center>
<span w-100>条件筛选</span>
<n-select
@@ -174,6 +203,8 @@ const loading = ref(false)
const queryParams = ref({
word: '',
selectKey: null,
status: '',
time: null,
})
const queryData = ref({
@@ -187,8 +218,28 @@ const cardData = ref({
today_user: 0,
total_number: 0,
total_user: 0,
win: 0,
})
const songs = ref([
{
value: 1,
label: '未使用',
},
{
value: 3,
label: '用户赢',
},
{
value: 4,
label: '用户输',
},
{
value: 5,
label: '已过期',
},
])
const selectOptions = [
{
label: '用户昵称',
@@ -240,6 +291,13 @@ const columns = ref([
sorter: true,
sortOrder: false,
},
{
title: '赢积分',
align: 'center',
key: 'win',
sorter: true,
sortOrder: false,
},
{
title: '用户豆子',
align: 'center',
@@ -319,6 +377,8 @@ const clear = () => {
queryParams.value = {
word: '',
selectKey: null,
status: '',
time: null,
}
getList()
}
@@ -326,7 +386,11 @@ const clear = () => {
const getList = async () => {
loading.value = true
try {
const query_data = {}
const query_data = {
Status: queryParams.value.status || '',
StartTime: queryParams.value.time === null ? '' : queryParams.value.time[0] || '',
EndTime: queryParams.value.time === null ? '' : queryParams.value.time[1] || '',
}
switch (queryParams.value.selectKey) {
case 0:
query_data['UserName'] = queryParams.value.word
@@ -348,6 +412,7 @@ const getList = async () => {
cardData.value.integral = res.data.integral
cardData.value.pulse = res.data.pulse
cardData.value.referee = res.data.referee
cardData.value.win = res.data.total_win
} catch (error) {
$message.error(error.msg)
}
@@ -573,13 +638,6 @@ const handleSorterChange = (sorter) => {
if (!loading.value) {
loading.value = true
switch (sorter.columnKey) {
case 'pulse':
columns.value[5].sortOrder = !sorter ? false : sorter.order
data.value = data.value.sort((a, b) => {
if (sorter.order === 'descend') return b.pulse - a.pulse
return a.pulse - b.pulse
})
break
case 'integral':
columns.value[4].sortOrder = !sorter ? false : sorter.order
data.value = data.value.sort((a, b) => {
@@ -587,6 +645,20 @@ const handleSorterChange = (sorter) => {
return a.integral - b.integral
})
break
case 'win':
columns.value[5].sortOrder = !sorter ? false : sorter.order
data.value = data.value.sort((a, b) => {
if (sorter.order === 'descend') return b.win - a.win
return a.win - b.win
})
break
case 'pulse':
columns.value[6].sortOrder = !sorter ? false : sorter.order
data.value = data.value.sort((a, b) => {
if (sorter.order === 'descend') return b.pulse - a.pulse
return a.pulse - b.pulse
})
break
}
loading.value = false
}