119 lines
3.3 KiB
Vue
119 lines
3.3 KiB
Vue
<template>
|
|
<sa-search-bar
|
|
ref="searchBarRef"
|
|
v-model="formData"
|
|
label-width="100px"
|
|
:showExpand="false"
|
|
@reset="handleReset"
|
|
@search="handleSearch"
|
|
@expand="handleExpand"
|
|
>
|
|
<el-col v-bind="setSpan(6)">
|
|
<el-form-item label="用户名" prop="username">
|
|
<el-input v-model="formData.username" placeholder="请输入用户名" clearable />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col v-bind="setSpan(6)">
|
|
<el-form-item label="昵称" prop="name">
|
|
<el-input v-model="formData.name" placeholder="请输入昵称" clearable />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col v-bind="setSpan(6)">
|
|
<el-form-item label="手机号" prop="phone">
|
|
<el-input v-model="formData.phone" placeholder="手机号模糊查询" clearable />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col v-bind="setSpan(6)">
|
|
<el-form-item label="状态" prop="status">
|
|
<el-select v-model="formData.status" placeholder="全部" clearable style="width: 100%">
|
|
<el-option label="启用" :value="1" />
|
|
<el-option label="禁用" :value="0" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col v-bind="setSpan(6)">
|
|
<el-form-item label="平台币" prop="coin">
|
|
<el-input-number
|
|
v-model="formData.coin"
|
|
:min="0"
|
|
:precision="2"
|
|
placeholder="精确搜索"
|
|
controls-position="right"
|
|
style="width: 100%"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col v-bind="setSpan(6)">
|
|
<el-form-item label="彩金池配置" prop="lottery_config_id">
|
|
<el-select
|
|
v-model="formData.lottery_config_id"
|
|
placeholder="全部"
|
|
clearable
|
|
style="width: 100%"
|
|
>
|
|
<el-option
|
|
v-for="item in lotteryConfigOptions"
|
|
:key="item.id"
|
|
:label="item.name"
|
|
:value="item.id"
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</sa-search-bar>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import api from '../../../api/player/index'
|
|
|
|
interface Props {
|
|
modelValue: Record<string, any>
|
|
}
|
|
interface Emits {
|
|
(e: 'update:modelValue', value: Record<string, any>): void
|
|
(e: 'search', params: Record<string, any>): void
|
|
(e: 'reset'): void
|
|
}
|
|
const props = defineProps<Props>()
|
|
const emit = defineEmits<Emits>()
|
|
const isExpanded = ref<boolean>(false)
|
|
const lotteryConfigOptions = ref<Array<{ id: number; name: string }>>([])
|
|
|
|
/** 从玩家控制器获取 DiceLotteryConfig id/name 列表,用于 lottery_config_id 筛选 */
|
|
onMounted(async () => {
|
|
try {
|
|
lotteryConfigOptions.value = await api.getLotteryConfigOptions()
|
|
} catch {
|
|
lotteryConfigOptions.value = []
|
|
}
|
|
})
|
|
|
|
const searchBarRef = ref()
|
|
const formData = computed({
|
|
get: () => props.modelValue,
|
|
set: (val) => emit('update:modelValue', val)
|
|
})
|
|
|
|
function handleReset() {
|
|
searchBarRef.value?.ref.resetFields()
|
|
emit('reset')
|
|
}
|
|
|
|
async function handleSearch() {
|
|
emit('search', formData.value)
|
|
}
|
|
|
|
function handleExpand(expanded: boolean) {
|
|
isExpanded.value = expanded
|
|
}
|
|
|
|
const setSpan = (span: number) => ({
|
|
span,
|
|
xs: 24,
|
|
sm: span >= 12 ? span : 12,
|
|
md: span >= 8 ? span : 8,
|
|
lg: span,
|
|
xl: span
|
|
})
|
|
</script>
|