Merge pull request 'feat(custom): 新增记录' (#1) from dev into test
Reviewed-on: #1
This commit is contained in:
@@ -1,22 +1,26 @@
|
|||||||
# 资源公共路径,需要以 /开头和结尾
|
# 资源公共路径,需要以 /开头和结尾
|
||||||
VITE_PUBLIC_PATH='/'
|
VITE_PUBLIC_PATH='/'
|
||||||
|
|
||||||
# 是否启用MOCK
|
# 是否启用MOCK
|
||||||
VITE_USE_MOCK=false
|
VITE_USE_MOCK=false
|
||||||
|
|
||||||
# 是否启用代理
|
# 是否启用代理
|
||||||
VITE_USE_PROXY=true
|
VITE_USE_PROXY=true
|
||||||
|
|
||||||
# base api
|
# base api
|
||||||
VITE_BASE_API='https://test.wanzhuanyongcheng.cn/admin'
|
VITE_BASE_API='https://test.wanzhuanyongcheng.cn/admin'
|
||||||
|
|
||||||
VITE_WS1_URL='game.wanzhuanyongcheng.cn/dice/home'
|
VITE_WS1_URL='game.wanzhuanyongcheng.cn/dice/home'
|
||||||
|
|
||||||
VITE_WS_URL='test.wanzhuanyongcheng.cn/admin/data'
|
VITE_WS_URL='test.wanzhuanyongcheng.cn/admin/data'
|
||||||
|
|
||||||
VITE_MER_LOGIN_URL='//localhost:3100/login'
|
VITE_MER_LOGIN_URL='//localhost:3100/login'
|
||||||
|
|
||||||
VITE_GAME_API='https://www.jdt168.com'
|
VITE_GAME_API='https://www.jdt168.com'
|
||||||
|
|
||||||
# 是否启用监控
|
# 转盘相关
|
||||||
VITE_SENTRY=false
|
VITE_TRUN_WS_URL='test.wanzhuanyongcheng.cn/admin/turntable'
|
||||||
|
VITE_TRUN_WS1_URL='game2.wanzhuanyongcheng.cn/turntable/home'
|
||||||
|
|
||||||
|
# 是否启用监控
|
||||||
|
VITE_SENTRY=false
|
||||||
|
|||||||
@@ -58,32 +58,32 @@ function getMenuItem(route, basePath = '') {
|
|||||||
|
|
||||||
if (!visibleChildren.length) return menuItem
|
if (!visibleChildren.length) return menuItem
|
||||||
|
|
||||||
if (visibleChildren.length === 1) {
|
// if (visibleChildren.length === 1) {
|
||||||
// 单个子路由处理
|
// // 单个子路由处理
|
||||||
const singleRoute = visibleChildren[0]
|
// const singleRoute = visibleChildren[0]
|
||||||
menuItem = {
|
// menuItem = {
|
||||||
...menuItem,
|
// ...menuItem,
|
||||||
label: singleRoute.meta?.title || singleRoute.name,
|
// label: singleRoute.meta?.title || singleRoute.name,
|
||||||
key: singleRoute.name,
|
// key: singleRoute.name,
|
||||||
path: resolvePath(menuItem.path, singleRoute.path),
|
// path: resolvePath(menuItem.path, singleRoute.path),
|
||||||
icon: getIcon(singleRoute.meta),
|
// icon: getIcon(singleRoute.meta),
|
||||||
}
|
// }
|
||||||
const visibleItems = singleRoute.children
|
// const visibleItems = singleRoute.children
|
||||||
? singleRoute.children.filter((item) => item.name && !item.isHidden)
|
// ? singleRoute.children.filter((item) => item.name && !item.isHidden)
|
||||||
: []
|
// : []
|
||||||
|
|
||||||
if (visibleItems.length === 1) {
|
// if (visibleItems.length === 1) {
|
||||||
menuItem = getMenuItem(visibleItems[0], menuItem.path)
|
// menuItem = getMenuItem(visibleItems[0], menuItem.path)
|
||||||
} else if (visibleItems.length > 1) {
|
// } else if (visibleItems.length > 1) {
|
||||||
menuItem.children = visibleItems
|
// menuItem.children = visibleItems
|
||||||
.map((item) => getMenuItem(item, menuItem.path))
|
// .map((item) => getMenuItem(item, menuItem.path))
|
||||||
.sort((a, b) => a.order - b.order)
|
// .sort((a, b) => a.order - b.order)
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
menuItem.children = visibleChildren
|
menuItem.children = visibleChildren
|
||||||
.map((item) => getMenuItem(item, menuItem.path))
|
.map((item) => getMenuItem(item, menuItem.path))
|
||||||
.sort((a, b) => a.order - b.order)
|
.sort((a, b) => a.order - b.order)
|
||||||
}
|
// }
|
||||||
return menuItem
|
return menuItem
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,4 +6,6 @@ export default {
|
|||||||
getMerType: () => request.post('/store/getOther'),
|
getMerType: () => request.post('/store/getOther'),
|
||||||
// 一键登录
|
// 一键登录
|
||||||
login: (data) => request.post('/store/easy/login', data),
|
login: (data) => request.post('/store/easy/login', data),
|
||||||
|
// 退积分
|
||||||
|
outJf: (data) => request.post('/store/set/integral', data),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,6 +153,39 @@
|
|||||||
</n-form>
|
</n-form>
|
||||||
</n-drawer-content>
|
</n-drawer-content>
|
||||||
</n-drawer>
|
</n-drawer>
|
||||||
|
<!-- 退积分 -->
|
||||||
|
<n-modal v-model:show="showModalJf">
|
||||||
|
<n-card
|
||||||
|
style="width: 600px"
|
||||||
|
title="退积分"
|
||||||
|
:bordered="false"
|
||||||
|
size="huge"
|
||||||
|
role="dialog"
|
||||||
|
aria-modal="true"
|
||||||
|
>
|
||||||
|
<n-form ref="formRefJf" :model="model" :rules="rulesJf" label-placement="left">
|
||||||
|
<n-grid :cols="24" :x-gap="24">
|
||||||
|
<n-form-item-gi :span="12" label="商家名称:">
|
||||||
|
<n-input v-model:value="model.name" disabled placeholder="商家名称" />
|
||||||
|
</n-form-item-gi>
|
||||||
|
<n-form-item-gi :span="24" label="退积分:" path="number">
|
||||||
|
<n-input-number
|
||||||
|
v-model:value="model.number"
|
||||||
|
placeholder="请输入积分"
|
||||||
|
clearable
|
||||||
|
:precision="3"
|
||||||
|
/>
|
||||||
|
</n-form-item-gi>
|
||||||
|
<n-form-item-gi span="24">
|
||||||
|
<n-button class="w-100" attr-type="button" type="primary" @click="handleOutClick">
|
||||||
|
提交
|
||||||
|
</n-button>
|
||||||
|
<n-button class="ml-10 w-100" @click="handleClearOutClick">取消</n-button>
|
||||||
|
</n-form-item-gi>
|
||||||
|
</n-grid>
|
||||||
|
</n-form>
|
||||||
|
</n-card>
|
||||||
|
</n-modal>
|
||||||
</CommonPage>
|
</CommonPage>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -165,12 +198,67 @@ const vPerms = resolveDirective('perms')
|
|||||||
|
|
||||||
const isEdit = computed(() => drawerTitle.value === '编辑商户')
|
const isEdit = computed(() => drawerTitle.value === '编辑商户')
|
||||||
|
|
||||||
|
const showModalJf = ref(false)
|
||||||
|
|
||||||
|
const formRefJf = ref(null)
|
||||||
|
|
||||||
|
const model = ref({
|
||||||
|
name: '',
|
||||||
|
bid: null,
|
||||||
|
number: null,
|
||||||
|
})
|
||||||
|
|
||||||
|
const rulesJf = ref({
|
||||||
|
number: {
|
||||||
|
required: true,
|
||||||
|
type: 'number',
|
||||||
|
message: '请输入退积分',
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const handleOutClick = (e) => {
|
||||||
|
e.preventDefault()
|
||||||
|
formRefJf.value?.validate(async (errors) => {
|
||||||
|
if (!errors) {
|
||||||
|
try {
|
||||||
|
await api.outJf({
|
||||||
|
bid: model.value.bid,
|
||||||
|
number: model.value.number,
|
||||||
|
})
|
||||||
|
$message.success('成功')
|
||||||
|
handleClearOutClick()
|
||||||
|
await getMertype()
|
||||||
|
await getList()
|
||||||
|
showModalJf.value = false
|
||||||
|
} catch (error) {
|
||||||
|
$message.error(error.msg)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$message.error('Invalid')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleClearOutClick = () => {
|
||||||
|
formRefJf.value?.restoreValidation()
|
||||||
|
model.value = {
|
||||||
|
number: null,
|
||||||
|
}
|
||||||
|
showModalJf.value = false
|
||||||
|
}
|
||||||
|
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{
|
{
|
||||||
title: '商户名称',
|
title: '商户名称',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
key: 'name',
|
key: 'name',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '电话',
|
||||||
|
align: 'center',
|
||||||
|
key: 'phone',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '状态',
|
title: '状态',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
@@ -179,6 +267,16 @@ const columns = ref([
|
|||||||
return h('span', row.status === 1 ? '正常' : '禁用')
|
return h('span', row.status === 1 ? '正常' : '禁用')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '积分',
|
||||||
|
align: 'center',
|
||||||
|
key: 'integral',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
align: 'center',
|
||||||
|
key: 'add_time',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
@@ -202,6 +300,24 @@ const columns = ref([
|
|||||||
),
|
),
|
||||||
[[vPerms, ['/admin/store/edit']]]
|
[[vPerms, ['/admin/store/edit']]]
|
||||||
),
|
),
|
||||||
|
withDirectives(
|
||||||
|
h(
|
||||||
|
NButton,
|
||||||
|
{
|
||||||
|
class: 'ml-10',
|
||||||
|
type: 'primary',
|
||||||
|
text: true,
|
||||||
|
size: 'small',
|
||||||
|
onClick: () => {
|
||||||
|
model.value.name = row.name
|
||||||
|
model.value.bid = row.bid
|
||||||
|
showModalJf.value = true
|
||||||
|
},
|
||||||
|
},
|
||||||
|
() => '退积分'
|
||||||
|
),
|
||||||
|
[[vPerms, ['/admin/store/set/integral']]]
|
||||||
|
),
|
||||||
withDirectives(
|
withDirectives(
|
||||||
h(
|
h(
|
||||||
NButton,
|
NButton,
|
||||||
|
|||||||
@@ -27,17 +27,23 @@ export default {
|
|||||||
// 全部投注用户
|
// 全部投注用户
|
||||||
allUser: () => request.post('/all/draw/user', {}),
|
allUser: () => request.post('/all/draw/user', {}),
|
||||||
|
|
||||||
// 吹气球相关
|
// 转盘相关
|
||||||
// 游戏状态
|
// 游戏状态
|
||||||
getisBalloonStart: () => request.post('/getisBalloonStart'),
|
getisBalloonStart: () => request.post('/getisTurntableStart'),
|
||||||
// 修改游戏状态
|
// 修改游戏状态
|
||||||
setisBalloonStart: (data) => request.post('/isBalloonStart', data),
|
setisBalloonStart: (data) => request.post('/isTurntableStart', data),
|
||||||
|
// 你猜
|
||||||
|
setZsNum: () => request.post('/setTurntable'),
|
||||||
// 全部开奖记录
|
// 全部开奖记录
|
||||||
getBalloonList: () => request.post('/balloon/draw'),
|
getBalloonList: () => request.post('/turntable/draw'),
|
||||||
// 本局投注记录
|
// 本局投注记录
|
||||||
getBalloonUser: () => request.post('/now/balloon/draw/user'),
|
getBalloonUser: () => request.post('/now/turntable/draw/user'),
|
||||||
// 全部投注记录
|
// 全部投注记录
|
||||||
getAllBalloonUser: () => request.post('/all/balloon/draw/user'),
|
getAllBalloonUser: () => request.post('/all/turntable/draw/user'),
|
||||||
// 统计全部投注和中奖列表
|
// 统计全部投注和中奖列表
|
||||||
getUserList: () => request.post('/user/balloon/list'),
|
getTjList: () => request.post('/user/turntable/list'),
|
||||||
|
// 宙斯记录
|
||||||
|
getZsBalloon: (data) => request.post('/turntable/log', data),
|
||||||
|
// 宙斯中奖
|
||||||
|
getZsBalloonUser: (data) => request.post('/log/turntable/list', data),
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
v-model:value="gameStatus"
|
v-model:value="gameStatus"
|
||||||
:checked-value="1"
|
:checked-value="1"
|
||||||
:unchecked-value="2"
|
:unchecked-value="2"
|
||||||
@update:value="handleUpdateValue"
|
@update:value="handleUpdateValue1"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div ml-20 flex items-center>
|
<div ml-20 flex items-center>
|
||||||
@@ -19,6 +19,69 @@
|
|||||||
<n-button type="primary" @click="openModal(2)">预览</n-button>
|
<n-button type="primary" @click="openModal(2)">预览</n-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div flex>
|
||||||
|
<div>
|
||||||
|
预开期数:
|
||||||
|
<span text-25>{{ list[0]?.Periods || 0 }}</span>
|
||||||
|
</div>
|
||||||
|
<div ml-20>
|
||||||
|
剩余开奖时间:
|
||||||
|
<span text-25>{{ time || 0 }}</span>
|
||||||
|
</div>
|
||||||
|
<div ml-20>
|
||||||
|
本局总下注:
|
||||||
|
<span text-25>{{ totalA || 0 }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
第
|
||||||
|
<span text-25>{{ data[0]?.Periods || 0 }}</span>
|
||||||
|
期开奖结果:
|
||||||
|
<span text-20>{{ data[0]?.Name || 0 }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<n-spin size="large" :show="show">
|
||||||
|
<div flex flex-wrap justify-between>
|
||||||
|
<n-card
|
||||||
|
v-for="item in list"
|
||||||
|
:key="item.ID"
|
||||||
|
class="mb-10 mt-10 h-120 w-250 flex-shrink-0 cursor-pointer"
|
||||||
|
:title="item.name"
|
||||||
|
>
|
||||||
|
<p text-25 op-60 :style="{ color: item.count === 0 ? 'green' : 'red' }">
|
||||||
|
{{ item.count }}
|
||||||
|
</p>
|
||||||
|
</n-card>
|
||||||
|
<div h-0 w-250></div>
|
||||||
|
<div h-0 w-250></div>
|
||||||
|
</div>
|
||||||
|
</n-spin>
|
||||||
|
<n-spin size="large" :show="show1">
|
||||||
|
<div flex flex-wrap justify-between>
|
||||||
|
<n-card
|
||||||
|
v-for="item in list1"
|
||||||
|
:key="item.ID"
|
||||||
|
class="mb-10 mt-10 h-150 w-250 flex-shrink-0 cursor-pointer"
|
||||||
|
:title="`${item.NumName}(${item.Name})`"
|
||||||
|
>
|
||||||
|
<p text-25 op-60 :style="{ color: item.Total === 0 ? 'green' : 'red' }">
|
||||||
|
{{ item.Total }}
|
||||||
|
</p>
|
||||||
|
<n-popconfirm @positive-click="handleUpdateValue(item.ID)">
|
||||||
|
<template #trigger>
|
||||||
|
<n-button>你猜</n-button>
|
||||||
|
</template>
|
||||||
|
一切都将一去杳然,任何人都无法将其捕获。
|
||||||
|
</n-popconfirm>
|
||||||
|
</n-card>
|
||||||
|
<div h-0 w-250></div>
|
||||||
|
<div h-0 w-250></div>
|
||||||
|
<div h-0 w-250></div>
|
||||||
|
<div h-0 w-250></div>
|
||||||
|
</div>
|
||||||
|
</n-spin>
|
||||||
<n-modal v-model:show="showModal">
|
<n-modal v-model:show="showModal">
|
||||||
<n-card
|
<n-card
|
||||||
style="width: 900px"
|
style="width: 900px"
|
||||||
@@ -79,21 +142,100 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import api from '../../api'
|
import api from '../../api'
|
||||||
|
import { getToken } from '@/utils'
|
||||||
|
|
||||||
|
const ws = new WebSocket(`wss://${import.meta.env.VITE_TRUN_WS_URL}`)
|
||||||
|
|
||||||
|
const ws1 = new WebSocket(`wss://${import.meta.env.VITE_TRUN_WS1_URL}`)
|
||||||
|
|
||||||
const gameStatus = ref(2)
|
const gameStatus = ref(2)
|
||||||
|
|
||||||
|
const t_1 = ref()
|
||||||
|
const t_2 = ref()
|
||||||
|
|
||||||
|
const show = ref(true)
|
||||||
|
const show1 = ref(true)
|
||||||
|
|
||||||
|
const list = ref([])
|
||||||
|
const list1 = ref([])
|
||||||
|
const totalA = ref(0)
|
||||||
|
|
||||||
|
const time = ref(0)
|
||||||
|
|
||||||
|
const data = ref([])
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
clearInterval(t_1.value)
|
||||||
|
clearInterval(t_2.value)
|
||||||
|
})
|
||||||
|
|
||||||
|
ws.onopen = () => {
|
||||||
|
t_1.value = setInterval(() => {
|
||||||
|
ws.send('ping')
|
||||||
|
}, 2500)
|
||||||
|
}
|
||||||
|
|
||||||
|
ws1.onopen = () => {
|
||||||
|
t_2.value = setInterval(() => {
|
||||||
|
ws1.send('ping')
|
||||||
|
}, 2500)
|
||||||
|
}
|
||||||
|
|
||||||
|
ws.onmessage = (e) => {
|
||||||
|
const res = JSON.parse(e.data)
|
||||||
|
list.value = res.betting.sort((a, b) => b.Total - a.Total)
|
||||||
|
show.value = false
|
||||||
|
list1.value = res.list.sort((a, b) => b.Total - a.Total)
|
||||||
|
show1.value = false
|
||||||
|
totalA.value = res.total
|
||||||
|
}
|
||||||
|
|
||||||
|
ws1.onmessage = (e) => {
|
||||||
|
const res = JSON.parse(e.data)
|
||||||
|
switch (res.code) {
|
||||||
|
case 200:
|
||||||
|
// let num = res.data
|
||||||
|
time.value = res.data
|
||||||
|
break
|
||||||
|
case 301:
|
||||||
|
$message.error(res.msg)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
get_status()
|
get_status()
|
||||||
|
get_kj_jl()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const get_kj_jl = async () => {
|
||||||
|
try {
|
||||||
|
const res = await api.getBalloonList()
|
||||||
|
data.value = res.data.data
|
||||||
|
} catch (error) {
|
||||||
|
$message.error(error.msg)
|
||||||
|
throw error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const get_status = async () => {
|
const get_status = async () => {
|
||||||
const res = await api.getisBalloonStart()
|
const res = await api.getisBalloonStart()
|
||||||
gameStatus.value = res.data.balloonStart
|
gameStatus.value = res.data.diceStart
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleUpdateValue = async (e) => {
|
const handleUpdateValue = async (e) => {
|
||||||
|
const res = await api.setDS({
|
||||||
|
status: 1,
|
||||||
|
id: e,
|
||||||
|
user_id: getToken(),
|
||||||
|
Periods: list.value[0]?.Periods,
|
||||||
|
})
|
||||||
|
$message.success(res.msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleUpdateValue1 = async (e) => {
|
||||||
await api.setisBalloonStart({
|
await api.setisBalloonStart({
|
||||||
Start: e,
|
start: e,
|
||||||
})
|
})
|
||||||
$message.success('修改成功')
|
$message.success('修改成功')
|
||||||
get_status()
|
get_status()
|
||||||
@@ -144,7 +286,7 @@ const { value: tempCol } = ref([
|
|||||||
sortOrder: false,
|
sortOrder: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '购买秒数',
|
title: '购买选项',
|
||||||
key: 'DrawTime',
|
key: 'DrawTime',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ const columns = ref([
|
|||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '开奖秒数',
|
title: '开奖号码',
|
||||||
key: 'Name',
|
key: 'Name',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
@@ -167,7 +167,7 @@ const getList = async () => {
|
|||||||
dataObj.StartTime = range.value[0]
|
dataObj.StartTime = range.value[0]
|
||||||
dataObj.EndTime = range.value[1]
|
dataObj.EndTime = range.value[1]
|
||||||
}
|
}
|
||||||
const res = await api.getUserList(dataObj)
|
const res = await api.getTjList(dataObj)
|
||||||
const newData = res.data.data || []
|
const newData = res.data.data || []
|
||||||
data.value = newData
|
data.value = newData
|
||||||
option.value.xAxis.data = []
|
option.value.xAxis.data = []
|
||||||
|
|||||||
189
src/views/game/balloon/zs/index.vue
Normal file
189
src/views/game/balloon/zs/index.vue
Normal file
@@ -0,0 +1,189 @@
|
|||||||
|
<template>
|
||||||
|
<CommonPage show-footer :title="$route.title">
|
||||||
|
<n-data-table
|
||||||
|
:max-height="500"
|
||||||
|
:loading="loading"
|
||||||
|
:columns="columns"
|
||||||
|
:data="data"
|
||||||
|
:bordered="true"
|
||||||
|
:virtual-scroll="true"
|
||||||
|
:pagination="pagination"
|
||||||
|
remote
|
||||||
|
/>
|
||||||
|
<!-- -->
|
||||||
|
<n-modal v-model:show="showModal">
|
||||||
|
<n-card
|
||||||
|
style="width: 800px"
|
||||||
|
title="宙斯的眷顾"
|
||||||
|
:bordered="false"
|
||||||
|
size="huge"
|
||||||
|
role="dialog"
|
||||||
|
aria-modal="true"
|
||||||
|
>
|
||||||
|
<n-data-table
|
||||||
|
:loading="zsLoading"
|
||||||
|
:columns="zsColumns"
|
||||||
|
:data="zsData"
|
||||||
|
:pagination="zsPagination"
|
||||||
|
:bordered="false"
|
||||||
|
/>
|
||||||
|
</n-card>
|
||||||
|
</n-modal>
|
||||||
|
</CommonPage>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import api from '../../api.js'
|
||||||
|
import { NButton } from 'naive-ui'
|
||||||
|
import { h, ref, onMounted } from 'vue'
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
|
const columns = ref([
|
||||||
|
{
|
||||||
|
title: '期数',
|
||||||
|
key: 'periods',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '开奖号码',
|
||||||
|
key: 'betting_name',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '开奖数字',
|
||||||
|
key: 'betting_number',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作人',
|
||||||
|
key: 'name',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '开奖时间',
|
||||||
|
key: 'draw_time',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作时间',
|
||||||
|
key: 'add_time',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作IP',
|
||||||
|
key: 'ip',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
slot: 'action',
|
||||||
|
align: 'center',
|
||||||
|
render: (row) => {
|
||||||
|
return [
|
||||||
|
h(
|
||||||
|
NButton,
|
||||||
|
{
|
||||||
|
strong: true,
|
||||||
|
secondary: true,
|
||||||
|
onClick: () => {
|
||||||
|
openModal(row)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ default: () => '查看' }
|
||||||
|
),
|
||||||
|
]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
const data = ref([])
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getData()
|
||||||
|
})
|
||||||
|
|
||||||
|
const pagination = ref({
|
||||||
|
page: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
itemCount: 0,
|
||||||
|
onChange: (page) => {
|
||||||
|
pagination.value.page = page
|
||||||
|
getData()
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const getData = async () => {
|
||||||
|
const res = await api.getZsBalloon({
|
||||||
|
pageNum: pagination.value.page,
|
||||||
|
pageSize: pagination.value.pageSize,
|
||||||
|
})
|
||||||
|
data.value = res.data.data || []
|
||||||
|
pagination.value.itemCount = res.data.total
|
||||||
|
}
|
||||||
|
|
||||||
|
const showModal = ref(false)
|
||||||
|
|
||||||
|
const zsLoading = ref(false)
|
||||||
|
|
||||||
|
const zsColumns = ref([
|
||||||
|
{
|
||||||
|
title: '期数',
|
||||||
|
key: 'Periods',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '数字',
|
||||||
|
key: 'PeriodsNum',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '总投注(豆子)',
|
||||||
|
key: 'NumberSum',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '赔付(积分)',
|
||||||
|
key: 'TotalCount',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '选中用户',
|
||||||
|
key: 'User',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '电话号码',
|
||||||
|
key: 'Phone',
|
||||||
|
align: 'center',
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|
||||||
|
const zsData = ref([])
|
||||||
|
|
||||||
|
const zsPagination = ref({
|
||||||
|
page: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
itemCount: 0,
|
||||||
|
onChange: (page) => {
|
||||||
|
zsPagination.value.page = page
|
||||||
|
getData()
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const openModal = async (row) => {
|
||||||
|
showModal.value = true
|
||||||
|
zsLoading.value = true
|
||||||
|
const res = await api.getZsBalloonUser({
|
||||||
|
periods: row.periods,
|
||||||
|
draw_time: row.draw_time,
|
||||||
|
pageNum: zsPagination.value.page,
|
||||||
|
pageSize: zsPagination.value.pageSize,
|
||||||
|
})
|
||||||
|
zsData.value = res.data.data || []
|
||||||
|
zsPagination.value.itemCount = res.data.total
|
||||||
|
zsLoading.value = false
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
Reference in New Issue
Block a user