添加对话框

This commit is contained in:
liuxiaobo 2025-06-22 23:09:28 +08:00
parent 76fa896ab4
commit 2e55da8c02
3 changed files with 159 additions and 3 deletions

View File

@ -18,6 +18,7 @@
"/src/view/example/index.vue": "Example",
"/src/view/example/upload/scanUpload.vue": "scanUpload",
"/src/view/example/upload/upload.vue": "Upload",
"/src/view/gameuser/addResourceDialog.vue": "AddResourceDialog",
"/src/view/gameuser/index.vue": "Index",
"/src/view/init/index.vue": "Init",
"/src/view/layout/aside/asideComponent/asyncSubmenu.vue": "AsyncSubmenu",

View File

@ -0,0 +1,131 @@
<template>
<el-dialog title="添加资源" v-model="dialogVisible" width="500px" @close="onClose">
<el-form :model="form" label-width="100px" ref="resourceForm" :rules="rules">
<el-form-item label="玩家ID">
<el-input v-model="localUserId" disabled></el-input>
</el-form-item>
<el-form-item label="玩家昵称">
<el-input v-model="localNickname" disabled></el-input>
</el-form-item>
<el-form-item label="资源类型:" prop="resourceType">
<el-select v-model="form.resourceType" placeholder="请选择资源类型" style="width: 100%">
<el-option v-for="item in resourceTypes" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
<el-form-item label="数量:" prop="amount">
<el-input
v-model="form.amount"
placeholder="请输入数量"
@input="validateNumber"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="onClose">取消</el-button>
<el-button type="primary" @click="onClick">确认添加</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
value: { // v-model 使 value prop
type: Boolean,
default: false
},
userId: {
type: Number,
default: null
},
nickname:{
type:String,
default:'',
},
},
data(){
return {
dialogVisible:this.value,
localUserId:this.userId,
localNickname:this.nickname,
form:{
resourceType:'gold',
amount:'',
reason:''
},
resourceTypes:[
{value:'gold', label:'金币'},
{value:'diamond', label:'钻石'},
],
rules:{
resourceType:[
{required:true, message:'请选择资源类型', trigger:'change'},
],
amount:[
{required:true, message:'请输入数量', trigger:'blur'},
{validator:this.validateAmount,trigger: 'blur'}
]
}
}
},
watch:{
value(newVal){
// console.log("1userid:", this.userId)
// console.log("visible prop changed:", newVal)
this.dialogVisible = newVal
},
dialogVisible(newVal){
// console.log("2userid:", this.userId)
// console.log("dialogVisible visible prop changed:", newVal)
this.$emit('input', newVal) // v-model 使 input
}
},
methods:{
onClose(){
this.dialogVisible = false
// console.log("dialogVisible:", this.dialogVisible)
// console.log("userid:", this.localUserId+' nickname:'+this.localNickname)
// this.$emit('input', false) // v-model 使 input
},
validateAmount(rule, value, callback){
if(!value){
callback(new Error('请输入数量'))
}else if (!/^\d+$/.test(value)) {
callback(new Error('请输入正整数'))
} else if (parseInt(value) < 1) {
callback(new Error('数量必须大于0'))
} else {
callback()
}
},
validateNumber(value){
this.form.amount = value.replace(/[^\d]/g, '')
},
onClick(){
this.$refs.resourceForm.validate((valid)=>{
if(valid){
const resourceData = {
userId: this.userId,
...this.form,
amount: parseInt(this.form.amount) //
}
this.$emit('confirm', resourceData)
this.dialogVisible = false
}
})
}
}
}
</script>
<style scoped>
.dialog-footer {
text-align: center;
}
</style>

View File

@ -28,17 +28,25 @@
</el-table-column>
<el-table-column label="操作" width="200">
<template #default="scope">
<el-button size="small" type="danger">封号|解封</el-button>
<el-button size="small">添加资源</el-button>
<el-button size="small" type="danger" >封号|解封</el-button>
<el-button size="small" @click="openAddResourceDialog(scope.row)">添加资源</el-button>
</template>
</el-table-column>
</el-table>
<!-- 添加资源对话框 -->
<add-resource-dialog
v-model="dialogVisible"
:user-id="selectedUserId"
:nickname="selectedNickname"
/>
</div>
</div>
</template>
<script>
import AddResourceDialog from '@/view/gameuser/addResourceDialog.vue'
import {
getUserById,
getAccountByUid,
@ -46,8 +54,17 @@ import {
export default {
name: 'UserManagement',
components:{
AddResourceDialog,
},
data() {
return {
//
dialogVisible: false,
selectedUserId: null,
selectedNickname:null,
searchInfo :{
id: 0,
nickname: '',
@ -80,6 +97,13 @@ export default {
}
},
methods:{
openAddResourceDialog(user){
this.selectedUserId = user.id
this.selectedNickname = user.nickname
// console.log("open dialog.user:"+this.selectedUserId+' nickname:'+this.selectedNickname)
this.dialogVisible = true
},
async onGetUser(){
//
const loading = this.$loading({
@ -118,7 +142,7 @@ export default {
return
}
const retAccount = await getAccountByUid({id:+response.data.user.account_id})
console.error('获取玩家帐号数据:', retAccount)
// console.error(':', retAccount)
this.userList = [
{
id:response.data.user.id,