Browse Source

点控配置1

master
sprint 4 months ago
parent
commit
d8a7259865
  1. 12
      backmanage/src/api/module/common_params.ts
  2. 123
      backmanage/src/views/person/risk/GameControllerConfig.vue
  3. 186
      backmanage/src/views/person/risk/GameControllerList.vue
  4. 189
      backmanage/src/views/person/risk/GameControllerLog.vue
  5. 36
      backmanage/src/views/person/risk/GameControllerRecord.vue
  6. 28
      backmanage/src/views/userSearch/changeGameController.vue

12
backmanage/src/api/module/common_params.ts

@ -7,12 +7,12 @@ export const initPage = {
//点控类型
export const optionsPointControl: any[] = [
{ value: "1000", label: "1000 (系统赢)" },
{ value: "2000", label: "2000 (系统赢)" },
{ value: "3000", label: "3000 (系统赢)" },
{ value: "-1000", label: "-1000 (系统输)" },
{ value: "-2000", label: "-2000 (系统输)" },
{ value: "-3000", label: "-3000 (系统输)" },
{ value: 1000, label: "1000 (系统赢)" },
{ value: 2000, label: "2000 (系统赢)" },
{ value: 3000, label: "3000 (系统赢)" },
{ value: -1000, label: "-1000 (系统输)" },
{ value: -2000, label: "-2000 (系统输)" },
{ value: -3000, label: "-3000 (系统输)" },
]
//邮件模板

123
backmanage/src/views/person/risk/GameControllerConfig.vue

@ -41,8 +41,8 @@ interface FormData {
vip_status: number
vip_values: number | string
channel_status: number
channel_values: number
point_gear: string
channel_values: Array<string>
point_gear: number | string
point_coin: number | string
lower_rate: number | string
upper_rate: number | string
@ -76,6 +76,7 @@ const data = reactive({
{ label: '小于等于', value: 4 },
],
point: optionsPointControl,
channel: [] as any,
},
})
@ -96,6 +97,20 @@ const getRecord = async (page: number = 1) => {
data.result = respond.data
}
const getChannelList = async () => {
const respond: any = await request.post('/person/channelList')
if (respond.code != 0) {
ElMessage.error(respond.msg)
return
}
data.options.channel = []
for (const item of respond.data) {
data.options.channel.push({ label: item.name, value: item.p_token + '|' + item.ad_token })
}
}
const addBox = (action: number, item: any) => {
data.form = {
id: 0,
@ -134,8 +149,8 @@ const addBox = (action: number, item: any) => {
vip_status: 0,
vip_values: 0,
channel_status: 0,
channel_values: 0,
point_gear: '1000',
channel_values: [],
point_gear: 1000,
point_coin: '',
lower_rate: '',
upper_rate: '',
@ -149,7 +164,53 @@ const addBox = (action: number, item: any) => {
}
const editBox = (action: number, item: any) => {
data.form = item
const current = JSON.parse(JSON.stringify(item))
data.form = {
id: current.id,
new_register_status: decodeStatus(current.new_register_status).status,
new_register_type: decodeStatus(current.new_register_status).type,
today_winlose_status: decodeStatus(current.today_winlose_status).status,
today_winlose_type: decodeStatus(current.today_winlose_status).type,
today_winlose_values: current.today_winlose_values,
total_winlose_status: decodeStatus(current.total_winlose_status).status,
total_winlose_type: decodeStatus(current.total_winlose_status).type,
total_winlose_values: current.total_winlose_values,
today_deposit_status: decodeStatus(current.today_deposit_status).status,
today_deposit_type: decodeStatus(current.today_deposit_status).type,
today_deposit_values: current.today_deposit_values,
total_deposit_status: decodeStatus(current.total_deposit_status).status,
total_deposit_type: decodeStatus(current.total_deposit_status).type,
total_deposit_values: current.total_deposit_values,
today_withdraw_status: decodeStatus(current.today_withdraw_status).status,
today_withdraw_type: decodeStatus(current.today_withdraw_status).type,
today_withdraw_values: current.today_withdraw_values,
total_withdraw_status: decodeStatus(current.total_withdraw_status).status,
total_withdraw_type: decodeStatus(current.total_withdraw_status).type,
total_withdraw_values: current.total_withdraw_values,
today_surplus_status: decodeStatus(current.today_surplus_status).status,
today_surplus_type: decodeStatus(current.today_surplus_status).type,
today_surplus_values: current.today_surplus_values,
total_surplus_status: decodeStatus(current.total_surplus_status).status,
total_surplus_type: decodeStatus(current.total_surplus_status).type,
total_surplus_values: current.total_surplus_values,
device_num_status: decodeStatus(current.device_num_status).status,
device_num_type: decodeStatus(current.device_num_status).type,
device_num_values: current.device_num_values,
ip_num_status: decodeStatus(current.ip_num_status).status,
ip_num_type: decodeStatus(current.ip_num_status).type,
ip_num_values: current.ip_num_values,
vip_status: current.vip_status,
vip_values: current.vip_values,
channel_status: current.channel_status,
channel_values: JSON.parse(current.channel_values),
point_gear: current.point_gear,
point_coin: current.point_coin,
lower_rate: current.lower_rate,
upper_rate: current.upper_rate,
loop_times: current.loop_times,
remark: current.remark,
} as FormData
data.dialog = true
data.request.action = action
@ -174,10 +235,22 @@ const submitData = async () => {
return
}
//4
if (data.form.point_gear as number > 0 && parseInt(data.form.point_coin as string) > 0) {
ElMessage.error('点控输作弊值必须小于0')
return
}
//4
if (data.form.point_gear as number < 0 && parseInt(data.form.point_coin as string) < 0) {
ElMessage.error('点控赢作弊值必须大于0')
return
}
const params = {
id: data.form.id,
remark: data.form.remark,
point_gear: data.form.point_gear,
point_gear: parseInt(data.form.point_gear as string),
point_coin: parseInt(data.form.point_coin as string),
lower_rate: parseInt(data.form.lower_rate as string),
upper_rate: parseInt(data.form.upper_rate as string),
@ -205,7 +278,8 @@ const submitData = async () => {
ip_num_values: parseInt(data.form.ip_num_values as string),
vip_status: data.form.vip_status,
vip_values: parseInt(data.form.vip_values as string),
channel_status: encodeStatus(data.form.channel_status, data.form.channel_values),
channel_status: data.form.channel_status,
channel_values: JSON.stringify(data.form.channel_values),
}
const respond = await request.post(data.request.url, params)
@ -233,6 +307,7 @@ const decodeStatus = (combinedValue: number) => {
onMounted(async () => {
getRecord()
getChannelList()
})
</script>
@ -250,10 +325,8 @@ onMounted(async () => {
<el-table-column align="center" prop="remark" label="策略名称" />
<el-table-column align="center" prop="point_gear" label="控制挡位" />
<el-table-column align="center" prop="point_coin" label="控制金额" />
<el-table-column align="center" prop="lower_rate" label="浮动区间" >
<template #default="item">
{{ item.row.lower_rate }}% - {{ item.row.upper_rate }}%
</template>
<el-table-column align="center" prop="lower_rate" label="浮动区间">
<template #default="item"> {{ item.row.lower_rate }}% - {{ item.row.upper_rate }}% </template>
</el-table-column>
<el-table-column align="center" prop="loop_times" label="循环次数">
<template #default="item">{{ item.row.loop_times == -1 ? '∞' : item.row.loop_times }}</template>
@ -299,9 +372,9 @@ onMounted(async () => {
</el-form-item>
<el-form-item label="循环次数" label-width="130" prop="loop_times">
<el-input v-model="data.form.loop_times" type="number"></el-input>
<p style="color: red; font-size: 12px">-1:不限; 0:不循环; >0循环次数</p>
<p style="color: red; font-size: 12px">循环次数-1: 不限, 0 - : 次数</p>
</el-form-item>
<el-form-item label="是否新用户" label-width="130" prop="">
<el-form-item label="新注册用户" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.new_register_status" :active-value="1" :inactive-value="0"></el-switch>
@ -319,7 +392,7 @@ onMounted(async () => {
<el-col :span="10"></el-col>
</el-row>
</el-form-item>
<el-form-item label="用户今日输赢" label-width="130" prop="">
<el-form-item label="今日输赢" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.today_winlose_status" :active-value="1" :inactive-value="0"></el-switch>
@ -342,7 +415,7 @@ onMounted(async () => {
</template>
</el-row>
</el-form-item>
<el-form-item label="用户总输赢" label-width="130" prop="">
<el-form-item label="总输赢" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.total_winlose_status" :active-value="1" :inactive-value="0"></el-switch>
@ -364,7 +437,7 @@ onMounted(async () => {
</template>
</el-row>
</el-form-item>
<el-form-item label="用户今日充值" label-width="130" prop="">
<el-form-item label="今日充值" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.today_deposit_status" :active-value="1" :inactive-value="0"></el-switch>
@ -386,7 +459,7 @@ onMounted(async () => {
</template>
</el-row>
</el-form-item>
<el-form-item label="用户总充值" label-width="130" prop="">
<el-form-item label="总充值" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.total_deposit_status" :active-value="1" :inactive-value="0"></el-switch>
@ -408,7 +481,7 @@ onMounted(async () => {
</template>
</el-row>
</el-form-item>
<el-form-item label="用户今日提现" label-width="130" prop="">
<el-form-item label="今日提现" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.today_withdraw_status" :active-value="1" :inactive-value="0"></el-switch>
@ -430,7 +503,7 @@ onMounted(async () => {
</template>
</el-row>
</el-form-item>
<el-form-item label="用户总提现" label-width="130" prop="">
<el-form-item label="总提现" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.total_withdraw_status" :active-value="1" :inactive-value="0"></el-switch>
@ -452,7 +525,7 @@ onMounted(async () => {
</template>
</el-row>
</el-form-item>
<el-form-item label="今日冲提差" label-width="130" prop="">
<el-form-item label="今日冲提差" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.today_surplus_status" :active-value="1" :inactive-value="0"></el-switch>
@ -474,7 +547,7 @@ onMounted(async () => {
</template>
</el-row>
</el-form-item>
<el-form-item label="用户总冲提差" label-width="130" prop="">
<el-form-item label="总冲提差" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.total_surplus_status" :active-value="1" :inactive-value="0"></el-switch>
@ -541,7 +614,7 @@ onMounted(async () => {
</template>
</el-row>
</el-form-item>
<el-form-item label="用户VIP等级" label-width="130" prop="">
<el-form-item label="VIP等级" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.vip_status" :active-value="1" :inactive-value="0"></el-switch>
@ -554,16 +627,16 @@ onMounted(async () => {
</el-col>
</el-row>
</el-form-item>
<el-form-item label="用户进入渠道" label-width="130" prop="">
<el-form-item label="来源渠道" label-width="130" prop="">
<el-row class="full-select" justify="space-between">
<el-col :span="3">
<el-switch v-model="data.form.channel_status" :active-value="1" :inactive-value="0"></el-switch>
</el-col>
<template v-if="data.form.channel_status == 1">
<el-col :span="10">
<el-select v-model="data.form.channel_values" class="full-select">
<el-select v-model="data.form.channel_values" class="full-select" multiple clearable>
<el-option
v-for="item in data.options.section"
v-for="item in data.options.channel"
:key="item.value"
:label="item.label"
:value="item.value"

186
backmanage/src/views/person/risk/GameControllerList.vue

@ -11,125 +11,119 @@ import CustomPaginate from '@/components/common/CustomPaginate.vue'
const route = useRoute()
const data = reactive({
search: {
user_no: '',
cheat_type: 0,
channel_id: 0,
} as any,
options: {
control: optionsPointControl,
},
page: initPage,
result: {} as any,
dialog: false,
destroy: { show: false, nickname: '' },
form: {} as any,
loading: false,
search: {
user_no: '',
cheat_type: 0,
channel_id: 0,
} as any,
page: initPage,
result: {} as any,
dialog: false,
destroy: { show: false, nickname: '' },
form: {} as any,
loading: false,
})
const getRecord = async (page: number = 1) => {
data.loading = true
const params = {
user_no: data.search.user_no,
start_time: data.search.start_time,
end_time: data.search.end_time,
cheat_type: data.search.cheat_type,
channel_id: data.search.channel_id,
page: page,
limit: data.page.size,
}
const respond = await request.post('/person/gameControllerList', params)
data.loading = false
if (respond.code != 0) {
ElMessage.error(respond.msg)
return
}
data.loading = true
const params = {
user_no: data.search.user_no,
start_time: data.search.start_time,
end_time: data.search.end_time,
cheat_type: data.search.cheat_type,
channel_id: data.search.channel_id,
page: page,
limit: data.page.size,
}
const respond = await request.post('/person/gameControllerList', params)
data.loading = false
if (respond.code != 0) {
ElMessage.error(respond.msg)
return
}
data.result = respond.data
data.result = respond.data
}
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-date-picker
v-model="data.search.time_range"
style="width: 360px"
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
></el-date-picker>
</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>
<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-date-picker
v-model="data.search.time_range"
style="width: 360px"
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
></el-date-picker>
</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" v-loading="data.loading">
<el-table-column align="center" prop="id" label="ID" width="100">
<el-table-column align="center" prop="id" width="100"></el-table-column>
</el-table-column>
<el-table-column align="center" prop="user_no" label="玩家ID" width="100">
<template #default="item">
<router-link :to="`/person/details/${item.row.user_no}`">{{ item.row.user_no }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="nickname" label="昵称" />
<el-table-column align="center" prop="created_at" label="最后更新时间" />
<el-table-column align="center" prop="cheat_type" label="作弊率">
<template #default="item">
<template v-for="v in data.options.control">
<span v-if="v.value == item.row.cheat_type">{{ v.label }}</span>
</template>
</template>
</el-table-column>
<el-table-column align="center" prop="cheat_value" label="作弊值" >
<template #default="item">
<span :class="item.row.cheat_value <= 0 ? `lose-font` : 'win-font'">{{ item.row.cheat_value }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="cheat_value" label="点控状态">
<template #default="item">
<span v-if="item.row.cheat_value <= 0">已完成</span>
<span v-else>生效中</span>
</template>
</el-table-column>
<el-table-column align="center" prop="manager_name" label="操作人"/>
<el-table-column align="center" prop="remark" label="操作理由" width="300" />
</el-table>
</el-card>
<el-card class="mx-n10">
<el-table height="600" :data="data.result.data" v-loading="data.loading">
<el-table-column align="center" prop="id" label="ID" />
<el-table-column align="center" prop="user_no" label="玩家ID">
<template #default="item">
<router-link :to="`/person/details/${item.row.user_no}`">{{ item.row.user_no }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="nickname" label="昵称" />
<el-table-column align="center" prop="config_id" label="当前配置ID">
<template #default="item">
{{ item.row.config_id == 0 ? '-' : item.row.config_id }}
</template>
</el-table-column>
<el-table-column align="center" prop="cheat_type" label="作弊率" />
<el-table-column align="center" prop="cheat_value" label="作弊值" />
<el-table-column align="center" prop="loop_times" label="剩余次数">
<template #default="item">
{{ item.row.loop_times == -1 ? '∞' : item.row.loop_times }}
</template>
</el-table-column>
<el-table-column align="center" prop="finish_config_id" label="已结束配置" />
<el-table-column align="center" prop="remark" label="备注" />
<el-table-column align="center" prop="manager_name" label="操作人">
<template #default="item">
{{ item.row.manager_name == '' ? '系统' : item.row.manager_name }}
</template>
</el-table-column>
<el-table-column align="center" prop="created_at" label="最后更新时间" width="170" />
</el-table>
</el-card>
<CustomPaginate :size="data.page.size" :total="data.result.total" @new-page="(v) => getRecord(v)" />
</div>
<CustomPaginate :size="data.page.size" :total="data.result.total" @new-page="(v) => 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>

189
backmanage/src/views/person/risk/GameControllerLog.vue

@ -1,5 +1,4 @@
<script setup lang="ts">
import moment from 'moment'
import { onMounted, reactive } from 'vue'
import request from '@/api/config'
import { ElMessage } from 'element-plus'
@ -11,125 +10,121 @@ import CustomPaginate from '@/components/common/CustomPaginate.vue'
const route = useRoute()
const data = reactive({
search: {
user_no: '',
cheat_type: 0,
channel_id: 0,
} as any,
options: {
control: optionsPointControl,
},
page: initPage,
result: {} as any,
dialog: false,
destroy: { show: false, nickname: '' },
form: {} as any,
loading: false,
search: {
user_no: '',
cheat_type: 0,
channel_id: 0,
} as any,
options: {
control: optionsPointControl,
},
page: initPage,
result: {} as any,
dialog: false,
destroy: { show: false, nickname: '' },
form: {} as any,
loading: false,
})
const getRecord = async (page: number = 1) => {
data.loading = true
const params = {
user_no: data.search.user_no,
start_time: data.search.start_time,
end_time: data.search.end_time,
cheat_type: data.search.cheat_type,
channel_id: data.search.channel_id,
page: page,
limit: data.page.size,
}
const respond = await request.post('/person/gameControllerLog', params)
data.loading = false
if (respond.code != 0) {
ElMessage.error(respond.msg)
return
}
data.loading = true
const params = {
user_no: data.search.user_no,
start_time: data.search.start_time,
end_time: data.search.end_time,
cheat_type: data.search.cheat_type,
channel_id: data.search.channel_id,
page: page,
limit: data.page.size,
}
const respond = await request.post('/person/gameControllerLog', params)
data.loading = false
if (respond.code != 0) {
ElMessage.error(respond.msg)
return
}
data.result = respond.data
data.result = respond.data
}
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-date-picker
v-model="data.search.time_range"
style="width: 360px"
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
></el-date-picker>
</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>
<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-date-picker
v-model="data.search.time_range"
style="width: 360px"
type="datetimerange"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
></el-date-picker>
</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" v-loading="data.loading">
<el-table-column align="center" prop="id" label="ID" width="100">
<el-table-column align="center" prop="id" width="100"></el-table-column>
</el-table-column>
<el-table-column align="center" prop="user_no" label="玩家ID" width="100">
<template #default="item">
<router-link :to="`/person/details/${item.row.user_no}`">{{ item.row.user_no }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="nickname" label="昵称" />
<el-table-column align="center" prop="created_at" label="添加时间" />
<el-table-column align="center" prop="cheat_type" label="作弊率">
<template #default="item">
<template v-for="v in data.options.control">
<span v-if="v.value == item.row.cheat_type">{{ v.label }}</span>
</template>
</template>
</el-table-column>
<el-table-column align="center" prop="cheat_value" label="作弊值" >
<template #default="item">
<span :class="item.row.cheat_value <= 0 ? `lose-font` : 'win-font'">{{ item.row.cheat_value }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="cheat_value" label="点控状态">
<template #default="item">
<span v-if="item.row.status == 1">生效中</span>
<span v-if="item.row.status == 2">已失效</span>
</template>
</el-table-column>
<el-table-column align="center" prop="manager_name" label="操作人"/>
<el-table-column align="center" prop="remark" label="操作理由" width="300" />
</el-table>
</el-card>
<el-card class="mx-n10">
<el-table height="600" :data="data.result.data" v-loading="data.loading">
<el-table-column align="center" prop="id" label="ID"></el-table-column>
<el-table-column align="center" prop="user_no" label="玩家ID">
<template #default="item">
<router-link :to="`/person/details/${item.row.user_no}`">{{ item.row.user_no }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="nickname" label="昵称" />
<el-table-column align="center" prop="cheat_type" label="作弊率" />
<el-table-column align="center" prop="cheat_value" label="作弊值">
<template #default="item">
<span :class="item.row.cheat_value <= 0 ? `lose-font` : 'win-font'">{{ item.row.cheat_value }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="cheat_value" label="点控状态">
<template #default="item">
<span v-if="item.row.status == 1">生效中</span>
<span v-if="item.row.status == 2">已失效</span>
</template>
</el-table-column>
<el-table-column align="center" prop="manager_name" label="操作人">
<template #default="item">
{{ item.row.manager_name == '' ? '系统' : item.row.manager_name }}
</template>
</el-table-column>
<el-table-column align="center" prop="remark" label="操作理由" />
<el-table-column align="center" prop="created_at" label="时间" width="170" />
</el-table>
</el-card>
<CustomPaginate :size="data.page.size" :total="data.result.total" @new-page="(v) => getRecord(v)" />
</div>
<CustomPaginate :size="data.page.size" :total="data.result.total" @new-page="(v) => 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>

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

@ -30,17 +30,6 @@ const data = reactive({
loading: false,
})
//
const getChannelList = async () => {
const respond = await request.post('/person/channelList')
if (respond.code != 0) {
ElMessage.error(respond.msg)
return
}
data.options.channel = respond.data
}
const getRecord = async (page: number = 1) => {
data.loading = true
const params = {
@ -73,7 +62,6 @@ onMounted(async () => {
;[data.options.games, data.options.rooms] = await GamesRoomsInfo()
getChannelList()
getRecord()
})
</script>
@ -101,12 +89,6 @@ onMounted(async () => {
<el-option v-for="item in data.options.control" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="玩家来源">
<el-select v-model="data.search.channel_id">
<el-option label="全部" :value="0"></el-option>
<el-option v-for="item in data.options.channel" :label="item.Name" :value="item.Id"></el-option>
</el-select>
</el-form-item>
</el-form>
</el-col>
<el-col :span="3" class="text-right">
@ -117,15 +99,14 @@ onMounted(async () => {
<el-card class="mx-n10">
<el-table height="600" :data="data.result.data" v-loading="data.loading">
<el-table-column align="center" prop="id" label="ID" width="100" />
<el-table-column align="center" prop="created_at" label="时间" />
<el-table-column align="center" prop="user_no" label="玩家ID" width="100">
<template #default="item">
<router-link :to="`/person/details/${item.row.user_no}`">{{ item.row.user_no }}</router-link>
</template>
</el-table-column>
<el-table-column align="center" prop="nickname" label="昵称" />
<el-table-column align="center" prop="game_id" label="游戏名称" width="160">
<el-table-column align="center" prop="game_id" label="游戏场次" width="160">
<el-table-column align="center" prop="game_id" label="游戏名称">
<el-table-column align="center" prop="game_id" label="游戏场次">
<template #default="item">
<p v-for="v in data.options.games">
<span v-if="item.row.game_id == v.game_id" class="game-info">{{ v.game_name }}</span>
@ -136,8 +117,8 @@ onMounted(async () => {
</template>
</el-table-column>
</el-table-column>
<el-table-column align="center" prop="bet_amount" label="房间下注" width="100">
<el-table-column align="center" prop="bet_amount" label="玩家下注" width="100">
<el-table-column align="center" prop="bet_amount" label="房间下注">
<el-table-column align="center" prop="bet_amount" label="玩家下注">
<template #default="item">
<p>{{ item.row.bet_amount }}</p>
<p>{{ item.row.user_amount }}</p>
@ -150,16 +131,13 @@ onMounted(async () => {
<span v-else="item.row.win_amount > 0" class="win-font">{{ item.row.win_amount }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="cheat_type" label="作弊率" width="100">
<template #default="item">
<span>{{ item.row.cheat_type == 0 ? `-` : item.row.cheat_type }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="cheat_value" label="作弊值" width="165">
<el-table-column align="center" prop="cheat_type" label="作弊率" />
<el-table-column align="center" prop="cheat_value" label="作弊值">
<template #default="item">
<span :class="item.row.cheat_value <= 0 ? `lose-font` : 'win-font'">{{ item.row.cheat_value }}</span>
</template>
</el-table-column>
<el-table-column align="center" prop="created_at" label="时间" width="170" />
</el-table>
</el-card>

28
backmanage/src/views/userSearch/changeGameController.vue

@ -10,20 +10,14 @@ const data = reactive({
form: {
uid: props.uid,
user_no: props.user_no,
cheat_type: 0,
cheat_type: 1000,
cheat_value: "",
remark: "",
cheat_name: "",
},
options: {
cheat_type: optionsPointControl,
games: [] as any,
room: [
{ value: 0, label: "初级场" },
{ value: 1, label: "中级场" },
{ value: 2, label: "高级场" },
],
},
currentCheatValue: 0,
})
@ -35,20 +29,15 @@ const getPointControl = async () => {
return
}
for (const item of data.options.cheat_type) {
if (item.value == respond.data.cheat_type) {
data.form.cheat_name = item.label
break
}
}
data.form.cheat_type = respond.data.cheat_type
data.form.cheat_value = respond.data.cheat_value
data.form.remark = respond.data.remark
data.currentCheatValue = respond.data.cheat_value
}
const clearPointControl = () => {
data.form.cheat_name = ""
data.form.cheat_type = 1000
data.form.cheat_value = ""
data.form.remark = ""
}
@ -60,13 +49,13 @@ const onSubmit = async () => {
}
//4
if (data.form.cheat_type <= 4 && parseInt(data.form.cheat_value) > 0) {
if (data.form.cheat_type > 0 && parseInt(data.form.cheat_value) > 0) {
ElMessage.error("点控输作弊值必须小于0")
return
}
//4
if (data.form.cheat_type > 4 && parseInt(data.form.cheat_value) < 0) {
if (data.form.cheat_type < 0 && parseInt(data.form.cheat_value) < 0) {
ElMessage.error("点控赢作弊值必须大于0")
return
}
@ -112,7 +101,8 @@ onMounted(() => {
<el-input :value="data.form.user_no" disabled></el-input>
</el-form-item>
<el-form-item label="当前作弊情况" label-width="100">
<el-input :value="`挡位 ${data.form.cheat_name} 剩余值 ${data.form.cheat_value}`" disabled></el-input>
<el-input v-if="data.currentCheatValue == 0" :value="`-`" disabled></el-input>
<el-input v-else :value="`挡位 ${data.form.cheat_type} 剩余值 ${data.form.cheat_value}`" disabled></el-input>
</el-form-item>
<el-form-item label="新赠作弊率" label-width="100">
<el-select v-model="data.form.cheat_type" style="width: 100%;">

Loading…
Cancel
Save