<template> <div class="app-container"> <el-form :model="form" :rules="rules" ref="form" label-width="120px"> <!-- 加钱类型选择 --> <el-form-item label="加钱类型" prop="type"> <el-radio-group v-model="form.type"> <el-radio label="1">单个用户</el-radio> <el-radio label="3">全部实名用户</el-radio> </el-radio-group> </el-form-item> <!-- 单个用户时显示手机号搜索 --> <template v-if="form.type === '1'"> <el-form-item label="用户手机号" prop="phone"> <el-input v-model="form.phone" placeholder="请输入用户手机号" style="width: 300px" > <el-button slot="append" @click="searchUser">查询</el-button> </el-input> </el-form-item> <!-- 用户信息展示 --> <el-form-item label="用户信息" v-if="userInfo"> <div class="user-info"> <p>用户ID:{{ userInfo.userId }}</p> <p>用户名:{{ userInfo.nickName }}</p> <p>手机号:{{ userInfo.phonenumber }}</p> </div> </el-form-item> </template> <!-- 加钱表单 --> <template v-if="form.type === '3' || userInfo"> <el-form-item label="钱包类型" prop="walletType"> <el-select v-model="form.walletType" placeholder="请选择钱包类型"> <el-option label="虚拟币" value="5" /> <el-option label="团队奖励" value="6" /> </el-select> </el-form-item> <el-form-item label="增加金额" prop="addSum"> <el-input-number v-model="form.addSum" :min="0" :precision="0" :step="100" /> </el-form-item> <el-form-item label="备注" prop="bz"> <el-input v-model="form.bz" type="textarea" placeholder="请输入备注信息" /> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">确认添加</el-button> <el-button @click="resetForm">重置</el-button> </el-form-item> </template> </el-form> </div> </template> <script> import request from '@/utils/request' export default { name: 'AddMoney', data() { const validateForm = (rule, value, callback) => { if (this.form.type === '1' && !this.userInfo) { callback(new Error('请先查询用户信息')) } else { callback() } } return { form: { phone: '', userId: '', walletType: '5', addSum: 0, bz: '', type: '1' // 默认单个用户 }, rules: { type: [ { required: true, message: '请选择加钱类型', trigger: 'change' } ], phone: [ { required: true, message: '请输入手机号', trigger: 'blur' }, { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' } ], walletType: [ { required: true, message: '请选择钱包类型', trigger: 'change' }, { validator: validateForm, trigger: 'blur' } ], addSum: [ { required: true, message: '请输入金额', trigger: 'blur' } ], bz: [ { required: true, message: '请输入备注', trigger: 'blur' } ] }, userInfo: null } }, methods: { // 搜索用户 searchUser() { if (!this.form.phone) { this.$message.warning('请输入手机号') return } request({ url: '/system/user/sysList', method: 'get', params: { pageNum: 1, pageSize: 10, phonenumber: this.form.phone } }).then(response => { if (response.rows && response.rows.length > 0) { this.userInfo = response.rows[0] this.form.userId = this.userInfo.userId } else { this.$message.warning('未找到该用户') this.userInfo = null this.form.userId = '' } }) }, // 提交表单 submitForm() { this.$refs.form.validate(valid => { if (valid) { if (this.form.type === '3') { // 全量加钱时的确认提示 this.$confirm('您正在给所有实名用户加钱,这可能会占用较多服务器资源,是否继续?', '警告', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.doSubmit() }) } else { this.doSubmit() } } }) }, // 执行提交 doSubmit() { request({ url: '/yw2/addQbye', method: 'put', data: this.form }).then(() => { this.$message.success('添加成功') this.resetForm() }) }, // 重置表单 resetForm() { this.$refs.form.resetFields() this.userInfo = null this.form.userId = '' this.form.type = '1' } }, watch: { // 监听类型变化,重置相关字段 'form.type'(newVal) { if (newVal === '3') { this.userInfo = null this.form.userId = '' this.form.phone = '' } } } } </script> <style scoped> .user-info { background: #f5f7fa; padding: 15px; border-radius: 4px; } .user-info p { margin: 5px 0; color: #606266; } </style>