addMoney.vue 5.44 KB
Newer Older
qd01's avatar
1  
qd01 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
<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>