sprint 8 months ago
parent
commit
3c11b089f8
  1. 2
      backmanage/.gitignore
  2. 2181
      backmanage/package-lock.json
  3. 2
      backmanage/package.json
  4. 6
      backmanage/src/views/betRecord/index.vue
  5. 6
      backmanage/src/views/followMember/index.vue
  6. 6
      backmanage/src/views/loginlog/index.vue
  7. 212
      backmanage/src/views/person/records/changeGold.vue
  8. 66
      backmanage/src/views/person/risk/GameRoomStock.vue
  9. 36
      backmanage/src/views/person/risk/GameStock.vue
  10. 20
      backmanage/src/views/rechargeOrder/index.vue
  11. 2
      backmanage/stats.html

2
backmanage/.gitignore

@ -7,8 +7,6 @@ yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
stats.html
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

2181
backmanage/package-lock.json

File diff suppressed because it is too large

2
backmanage/package.json

@ -12,11 +12,9 @@
"preview": "vite preview"
},
"dependencies": {
"@ckeditor/ckeditor5-vue": "^7.2.0",
"@vueuse/components": "^10.2.1",
"@vueuse/core": "^10.1.2",
"axios": "^1.4.0",
"ckeditor5": "^43.2.0",
"decimal.js": "^10.4.3",
"echarts": "^5.4.2",
"element-plus": "^2.3.14",

6
backmanage/src/views/betRecord/index.vue

@ -174,11 +174,7 @@ onMounted(async () => {
<el-card class="mx-n10">
<el-table height="600" :data="data.recordResult.data">
<el-table-column align="center" prop="id" label="ID" width="60" />
<el-table-column align="center" prop="user_no" label="玩家ID" width="100">
<template #default="item">
<router-link :to="`/person/details/${item.row.user_id}`">{{ item.row.user_no }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="user_no" label="玩家ID" width="100" />
<el-table-column align="center" prop="game_id" label="游戏名称" width="150">
<el-table-column align="center" prop="game_id" label="游戏场次" width="160">
<template #default="item">

6
backmanage/src/views/followMember/index.vue

@ -141,11 +141,7 @@ onMounted(() => {
<el-card class="mx-n10">
<el-table flexd :data="data.result.data">
<el-table-column align="center" fixed prop="id" label="ID" width="100" />
<el-table-column align="center" prop="user_info.user_no" label="玩家ID" width="100">
<template #default="item">
<router-link :to="`/person/details/${item.row.user_info.id}`">{{ item.row.user_info.user_no }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="user_info.user_no" label="玩家ID" width="150" />
<el-table-column align="center" prop="user_info.nickname" label="昵称" width="150" />
<el-table-column align="center" prop="user_info.remark" label="备注" width="150" />
<el-table-column align="center" prop="user_info.vip" label="VIP" width="150" />

6
backmanage/src/views/loginlog/index.vue

@ -98,11 +98,7 @@ onMounted(() => {
<el-card class="mx-n10">
<el-table height="500" :data="data.result.data">
<el-table-column align="center" prop="id" label="ID" />
<el-table-column align="center" prop="user_info.user_no" label="玩家ID" width="100">
<template #default="item">
<router-link :to="`/person/details/${item.row.user_info.id}`">{{ item.row.user_info.user_no }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="user_info.user_no" label="玩家ID" width="100" />
<el-table-column align="center" prop="user_info.nickname" label="昵称" />
<el-table-column align="center" prop="user_info.remark" label="备注" />
<el-table-column align="center" prop="user_info.vip" label="VIP" />

212
backmanage/src/views/person/records/changeGold.vue

@ -1,136 +1,136 @@
<script setup lang="ts">
import moment from 'moment'
import { onMounted, reactive } from 'vue'
import request from '@/api/config'
import { ElMessage } from 'element-plus'
import moment from 'moment';
import { onMounted, reactive } from 'vue';
import request from "@/api/config";
import { ElMessage } from 'element-plus';
import { Search } from '@element-plus/icons-vue'
import { useRoute } from 'vue-router'
import { initPage } from '@/api/module/common_params'
import CustomPaginate from '@/components/common/CustomPaginate.vue'
import { initPage } from '@/api/module/common_params';
import CustomPaginate from "@/components/common/CustomPaginate.vue"
const route = useRoute()
const data = reactive({
search: {
user_no: '',
reason: 0,
} as any,
options: [
{ value: 0, label: '全部' },
{ value: 1, label: '下注' },
{ value: 2, label: '赢取' },
{ value: 3, label: '退还' },
{ value: 4, label: '充值' },
{ value: 10, label: '提现' },
{ value: 20, label: '转赠' },
{ value: 21, label: '接收' },
{ value: 7, label: '签到' },
{ value: 22, label: '任务' },
{ value: 23, label: '周卡' },
{ value: 24, label: '月卡' },
{ value: 13, label: '邮件' },
{ value: 18, label: 'GM充值' },
{ value: 101, label: '3Partti-初级场' },
{ value: 102, label: '3Partti-中级场' },
{ value: 103, label: '3Partti-高级场' },
{ value: 104, label: '龙虎-初级场' },
{ value: 105, label: '龙虎-中级场' },
{ value: 106, label: '龙虎-高级场' },
],
page: initPage,
result: {} as any,
search: {
user_no: "",
reason: 0,
} as any,
options: [
{ value: 0, label: "全部" },
{ value: 1, label: "下注" },
{ value: 2, label: "赢取" },
{ value: 3, label: "退还" },
{ value: 4, label: "充值" },
{ value: 10, label: "提现" },
{ value: 20, label: "转赠" },
{ value: 21, label: "接收" },
{ value: 7, label: "签到" },
{ value: 22, label: "任务" },
{ value: 23, label: "周卡" },
{ value: 24, label: "月卡" },
{ value: 13, label: "邮件" },
{ value: 18, label: "GM充值" },
{ value: 101, label: "3Partti-初级场" },
{ value: 102, label: "3Partti-中级场" },
{ value: 103, label: "3Partti-高级场" },
{ value: 104, label: "龙虎-初级场" },
{ value: 105, label: "龙虎-中级场" },
{ value: 106, label: "龙虎-高级场" },
],
page: initPage,
result: {} as any
})
const getRecord = async (page: number = 1) => {
const params = {
user_no: data.search.user_no,
reason: data.search.reason,
page: page,
limit: data.page.size,
}
const respond = await request.post('/person/changeGold', params)
if (respond.code != 0) {
ElMessage.error(respond.msg)
return
}
data.result = respond.data
console.log(respond)
const params = {
user_no: data.search.user_no,
reason: data.search.reason,
page: page,
limit: data.page.size
}
const respond = await request.post("/person/changeGold", params)
if (respond.code != 0) {
ElMessage.error(respond.msg)
return
}
data.result = respond.data
console.log(respond)
}
const handleSearch = () => {
getRecord()
getRecord()
}
onMounted(() => {
if (route.query.user_no != undefined) {
data.search.user_no = route.query.user_no
}
if (route.query.user_no != undefined) {
data.search.user_no = route.query.user_no
}
getRecord()
getRecord()
})
</script>
<template>
<div class="full-page p-20 page-content" style="position: relative">
<el-row>
<el-col :span="21">
<el-form :inline="true">
<el-form-item label="玩家ID">
<el-input v-model="data.search.user_no"></el-input>
</el-form-item>
<el-form-item label="变动类型">
<el-select v-model="data.search.reason">
<el-option v-for="item in data.options" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-form>
</el-col>
<el-col :span="3" class="text-right">
<el-button type="primary" @click="handleSearch" :icon="Search">查询</el-button>
</el-col>
</el-row>
<el-card class="mx-n10">
<el-table height="600" :data="data.result.data">
<el-table-column align="center" prop="Id" label="ID" width="100" />
<el-table-column align="center" prop="UserInfo" label="玩家ID" width="100">
<template #default="item">
<router-link :to="`/person/details/${item.row.Uid}`">{{ item.row.UserInfo }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="BeforeGold" label="变动前的金币" width="150" />
<el-table-column align="center" prop="AfterGold" label="变动后的金币" width="150" />
<el-table-column align="center" prop="ChangeGold" label="变动的金币" width="150">
<template #default="item">
<span v-if="item.row.ChangeGold <= 0" class="lose-font">{{ item.row.ChangeGold }}</span>
<span v-else="item.row.ChangeGold > 0" class="win-font">{{ item.row.ChangeGold }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="ChangeReason" label="变动的原因" width="250">
<template #default="item">
<p v-for="v in data.options">
<span v-if="item.row.ChangeReason == v.value">{{ v.label }}</span>
</p>
</template>
</el-table-column>
<el-table-column align="center" prop="ChangeRemark" label="备注" width="150" />
<el-table-column align="center" prop="ChangeExtraData" label="附加数据" width="200" />
<el-table-column align="center" prop="ChangeAt" label="时间" width="200" />
</el-table>
</el-card>
<CustomPaginate :size="data.page.size" :total="data.result.total" @new-page="(v: number) => getRecord(v)" />
</div>
<div class="full-page p-20 page-content" style="position: relative">
<el-row>
<el-col :span="21">
<el-form :inline="true">
<el-form-item label="玩家ID">
<el-input v-model="data.search.user_no"></el-input>
</el-form-item>
<el-form-item label="变动类型">
<el-select v-model="data.search.reason">
<el-option v-for="item in data.options" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
</el-form>
</el-col>
<el-col :span="3" class="text-right">
<el-button type="primary" @click="handleSearch" :icon="Search">查询</el-button>
</el-col>
</el-row>
<el-card class="mx-n10">
<el-table height="600" :data="data.result.data">
<el-table-column align="center" prop="Id" label="ID" width="100" />
<el-table-column align="center" prop="UserInfo" label="玩家ID" width="150" />
<el-table-column align="center" prop="BeforeGold" label="变动前的金币" width="150" />
<el-table-column align="center" prop="AfterGold" label="变动后的金币" width="150" />
<el-table-column align="center" prop="ChangeGold" label="变动的金币" width="150">
<template #default="item">
<span v-if="item.row.ChangeGold <= 0" class="lose-font">{{ item.row.ChangeGold }}</span>
<span v-else="item.row.ChangeGold > 0" class="win-font">{{ item.row.ChangeGold }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="ChangeReason" label="变动的原因" width="250">
<template #default="item">
<p v-for="v in data.options">
<span v-if="item.row.ChangeReason == v.value">{{ v.label }}</span>
</p>
</template>
</el-table-column>
<el-table-column align="center" prop="ChangeRemark" label="备注" width="150" />
<el-table-column align="center" prop="ChangeExtraData" label="附加数据" width="200" />
<el-table-column align="center" prop="ChangeAt" label="时间" width="200" />
</el-table>
</el-card>
<CustomPaginate :size="data.page.size" :total="data.result.total" @new-page="(v: number) => getRecord(v)" />
</div>
</template>
<style scoped>
::v-deep .el-scrollbar__bar.is-horizontal {
height: 15px !important;
height: 15px !important;
}
::v-deep .el-scrollbar__bar.is-vertical {
width: 15px !important;
width: 15px !important;
}
</style>

66
backmanage/src/views/person/risk/GameRoomStock.vue

@ -9,8 +9,7 @@ import CustomPaginate from '@/components/common/CustomPaginate.vue'
const data = reactive({
search: {
game_id: 0,
room_id: '',
user_no: '',
time_range: [moment().format('YYYY-MM-DD 00:00:00'), moment().format('YYYY-MM-DD 23:59:59')] as any,
},
options: {
@ -25,8 +24,6 @@ const data = reactive({
const getRecord = async (page: number = 1) => {
const params = {
game_id: data.search.game_id,
room_id: data.search.room_id.toString(),
start_time: data.search.time_range[0],
end_time: data.search.time_range[1],
}
@ -57,11 +54,12 @@ const nextTime = () => {
}
const handleSearch = () => {
getRecord()
}
onMounted(async () => {
;[data.options.games, data.options.rooms] = await GamesRoomsInfo()
[data.options.games, data.options.rooms] = await GamesRoomsInfo()
getRecord()
})
</script>
@ -71,24 +69,6 @@ onMounted(async () => {
<el-row>
<el-col :span="21">
<el-form :inline="true">
<el-form-item label="游戏类型">
<el-select v-model="data.search.game_id" @change="() => (data.search.room_id = '')">
<el-option label="全部" :value="0"></el-option>
<el-option v-for="item in data.options.games" :label="item.game_name" :value="item.game_id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="房间类型">
<el-select v-model="data.search.room_id">
<el-option label="全部" value=""></el-option>
<template v-if="data.options.rooms[data.search.game_id] != undefined">
<el-option
v-for="item in data.options.rooms[data.search.game_id]"
:label="item.room_name"
:value="item.room_id"
></el-option>
</template>
</el-select>
</el-form-item>
<el-form-item label="时间">
<el-date-picker
v-model="data.search.time_range"
@ -110,33 +90,33 @@ onMounted(async () => {
<el-col :span="7">
<el-alert title="数据总汇" type="success" :closable="false" class="mb-10">
<template #default>
<p class="alert-font">房间总盈利{{ data.result.total_room_win * -1 }}</p>
<p class="alert-font">房间正常盈利{{ data.result.total_normal_room_win * -1 }}</p>
<p class="alert-font">房间点控盈利{{ data.result.total_control_room_win * -1 }}</p>
<p class="alert-font">房间明水{{ data.result.total_room_light_win }}</p>
<p class="alert-font">房间暗水{{ data.result.total_room_dark_win }}</p>
<p class="alert-font">
房间盈利{{ data.result.total_room_win *-1 }} 房间明水{{ data.result.total_room_light_win }} 房间暗水{{
data.result.total_room_dark_win
}}
</p>
</template>
</el-alert>
</el-col>
<el-col :span="7">
<el-alert title="今日数据" type="warning" :closable="false" class="mb-10">
<template #default>
<p class="alert-font">房间总盈利{{ data.result.today_room_win * -1 }}</p>
<p class="alert-font">房间正常盈利{{ data.result.today_normal_room_win * -1 }}</p>
<p class="alert-font">房间点控盈利{{ data.result.today_control_room_win * -1 }}</p>
<p class="alert-font">房间明水{{ data.result.today_room_light_win }}</p>
<p class="alert-font">房间暗水{{ data.result.today_room_dark_win }}</p>
<p class="alert-font">
房间盈利{{ data.result.today_room_win *-1 }} 房间明水{{ data.result.today_room_light_win }} 房间暗水{{
data.result.today_room_dark_win
}}
</p>
</template>
</el-alert>
</el-col>
<el-col :span="7">
<el-alert title="查询数据" type="error" :closable="false">
<template #default>
<p class="alert-font">房间总盈利{{ data.result.query_room_win * -1 }}</p>
<p class="alert-font">房间正常盈利{{ data.result.query_normal_room_win * -1 }}</p>
<p class="alert-font">房间点控盈利{{ data.result.query_control_room_win * -1 }}</p>
<p class="alert-font">房间明水{{ data.result.query_room_light_win }}</p>
<p class="alert-font">房间暗水{{ data.result.query_room_dark_win }}</p>
<p class="alert-font">
房间盈利{{ data.result.query_room_win *-1 }} 房间明水{{ data.result.query_room_light_win }} 房间暗水{{
data.result.query_room_dark_win
}}
</p>
</template>
</el-alert>
</el-col>
@ -146,7 +126,9 @@ onMounted(async () => {
<el-card class="mx-n10">
<el-row justify="center" class="mb-10">
<el-col :span="3" class="text-right">
<el-button type="primary" :icon="ArrowLeft" size="small" color="#626aef" @click="prevTime"> 上一天 </el-button>
<el-button type="primary" :icon="ArrowLeft" size="small" color="#626aef" @click="prevTime">
上一天
</el-button>
</el-col>
<el-col :span="10" class="text-center">
<p>
@ -183,17 +165,17 @@ onMounted(async () => {
<el-table-column align="center" prop="current_room_config" label="当前房间配置" />
<el-table-column align="center" prop="room_total_win" label="房间总输赢">
<template #default="item">
<span :class="item.row.room_total_win <= 0 ? `lose-font` : `win-font`">{{ item.row.room_total_win * -1 }}</span>
<span :class="item.row.room_total_win <= 0 ? `lose-font` : `win-font`">{{ item.row.room_total_win *-1 }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="room_normal_win" label="房间正常输赢">
<template #default="item">
<span :class="item.row.room_normal_win <= 0 ? `lose-font` : `win-font`">{{ item.row.room_normal_win * -1 }}</span>
<span :class="item.row.room_normal_win <= 0 ? `lose-font` : `win-font`">{{ item.row.room_normal_win *-1 }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="room_control_win" label="房间点控输赢">
<template #default="item">
<span :class="item.row.room_control_win <= 0 ? `lose-font` : `win-font`">{{ item.row.room_control_win * -1 }}</span>
<span :class="item.row.room_control_win <= 0 ? `lose-font` : `win-font`">{{ item.row.room_control_win *-1 }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="light_ratio" label="明水比例" width="100">

36
backmanage/src/views/person/risk/GameStock.vue

@ -113,43 +113,43 @@ onMounted(async () => {
</el-col>
</el-row>
<!-- <el-card class="mx-n10 mb-5">
<el-card class="mx-n10 mb-5">
<el-row justify="space-between">
<el-col :span="7">
<el-alert title="数据总汇" type="success" :closable="false" class="mb-10">
<template #default>
<p class="alert-font">房间总盈利{{ data.result.total_room_win * -1 }}</p>
<p class="alert-font">房间正常盈利{{ 0 }}</p>
<p class="alert-font">房间点控盈利{{ 0 }}</p>
<p class="alert-font">房间明水{{ data.result.total_room_light_win }}</p>
<p class="alert-font">房间暗水{{ data.result.total_room_dark_win }}</p>
<p class="alert-font">
房间盈利{{ data.result.total_room_win * -1 }} 房间明水{{ data.result.total_room_light_win }} 房间暗水{{
data.result.total_room_dark_win
}}
</p>
</template>
</el-alert>
</el-col>
<el-col :span="7">
<el-alert title="今日数据" type="warning" :closable="false" class="mb-10">
<template #default>
<p class="alert-font">房间总盈利{{ data.result.today_room_win * -1 }}</p>
<p class="alert-font">房间正常盈利{{ 0 }}</p>
<p class="alert-font">房间点控盈利{{ 0 }}</p>
<p class="alert-font">房间明水{{ data.result.today_room_light_win }}</p>
<p class="alert-font">房间暗水{{ data.result.today_room_dark_win }}</p>
<p class="alert-font">
房间盈利{{ data.result.today_room_win * -1 }} 房间明水{{ data.result.today_room_light_win }} 房间暗水{{
data.result.today_room_dark_win
}}
</p>
</template>
</el-alert>
</el-col>
<el-col :span="7">
<el-alert title="查询数据" type="error" :closable="false">
<template #default>
<p class="alert-font">房间总盈利{{ data.result.query_room_win * -1 }}</p>
<p class="alert-font">房间正常盈利{{ 0 }}</p>
<p class="alert-font">房间点控盈利{{ 0 }}</p>
<p class="alert-font">房间明水{{ data.result.query_room_light_win }}</p>
<p class="alert-font">房间暗水{{ data.result.query_room_dark_win }}</p>
<p class="alert-font">
房间盈利{{ data.result.query_room_win * -1 }} 房间明水{{ data.result.query_room_light_win }} 房间暗水{{
data.result.query_room_dark_win
}}
</p>
</template>
</el-alert>
</el-col>
</el-row>
</el-card> -->
</el-card>
<el-card class="mx-n10">
<el-row justify="center" class="mb-10">
@ -172,7 +172,7 @@ onMounted(async () => {
</el-col>
</el-row>
<el-table height="620" :data="data.result.data">
<el-table height="500" :data="data.result.data">
<!-- <el-table-column align="center" prop="id" label="ID" /> -->
<el-table-column align="center" prop="create_time" label="时间" width="180" />
<el-table-column align="center" prop="user_no" label="玩家ID" width="100">

20
backmanage/src/views/rechargeOrder/index.vue

@ -73,6 +73,13 @@ const $router = useRouter();
//
var channelList: TagType[] = [];
var channelTypeList: TagType[] = [];
var channelTypeNameList = [
{ value: 1, label: "AXPay" },
{ value: 2, label: "LiuLianPay" },
{ value: 3, label: "LPay" },
{ value: 4, label: "BPay" },
];
const getPaymentChannelOptions= async () => {
const params: any = {};
const { code, data } = await fetchPaymentChannelAll(params);
@ -84,6 +91,11 @@ const getPaymentChannelOptions= async () => {
label: item.name,
}));
channelList.push(...list)
const list2 = data!.list.map((item:any) => ({
value: item.id,
label: channelTypeNameList[item.appType].label,
}));
channelTypeList.push(...list2)
return list
};
@ -176,6 +188,14 @@ const columns: TableColumnType<IRechargeOrder>[] = [
prop: "userNo",
width:"100",
},
{
label: "支付渠道类型",
uniqueKey: "payChannelId",
prop: "payChannelId",
width:"160",
renderType: "text",
optionEnumFn: channelTypeList,
},
{
label: "支付渠道",
uniqueKey: "payChannelId",

2
backmanage/stats.html

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save