Browse Source

投票功能,红包功能

yuhongqi 21 hours ago
parent
commit
d4222ec38a
1 changed files with 47 additions and 7 deletions
  1. 47 7
      src/views/live/liveConfig/liveRedConf.vue

+ 47 - 7
src/views/live/liveConfig/liveRedConf.vue

@@ -197,17 +197,41 @@
             placeholder="请输入口令,最多30字"
           />
         </el-form-item>
-        <el-form-item :label="showPasswordFields ? '持续时间' : '持续时间'" prop="duration">
-          <el-input v-model="form.duration" :placeholder="showPasswordFields ? '请输入持续时间(分)' : '请输入红包有效时间 单位:分'" />
+        <el-form-item :label="showPasswordFields ? '持续时间(分)' : '持续时间(分)'" prop="duration">
+          <el-input-number
+            v-model="form.duration"
+            :min="1"
+            :precision="0"
+            :step="1"
+            :controls="true"
+            style="width: 100%"
+            :placeholder="showPasswordFields ? '请输入持续时间(分)' : '请输入红包有效时间 单位:分'"
+          />
         </el-form-item>
         <el-form-item label="直播间ID" prop="liveId">
           <el-input v-model="form.liveId" placeholder="请输入直播间ID" :disabled="canLiveId"/>
         </el-form-item>
         <el-form-item :label="showPasswordFields ? '奖励积分' : '积分'" prop="redNum">
-          <el-input v-model="form.redNum" :placeholder="showPasswordFields ? '请输入奖励积分' : '请输入积分数量'" />
+          <el-input-number
+            v-model="form.redNum"
+            :min="1"
+            :precision="0"
+            :step="1"
+            :controls="true"
+            style="width: 100%"
+            :placeholder="showPasswordFields ? '请输入奖励积分' : '请输入积分数量'"
+          />
         </el-form-item>
         <el-form-item :label="showPasswordFields ? '奖励份数' : '中奖份量'" prop="totalLots">
-          <el-input v-model="form.totalLots" :placeholder="showPasswordFields ? '请输入奖励份数' : '请输入可中奖份量'" />
+          <el-input-number
+            v-model="form.totalLots"
+            :min="1"
+            :precision="0"
+            :step="1"
+            :controls="true"
+            style="width: 100%"
+            :placeholder="showPasswordFields ? '请输入奖励份数' : '请输入可中奖份量'"
+          />
         </el-form-item>
         <el-form-item :label="showPasswordFields ? '标题' : '红包标题'" prop="desc">
           <el-input v-model="form.desc" :placeholder="showPasswordFields ? '请输入标题' : '请输入红包描述'" />
@@ -246,6 +270,19 @@ export default {
         callback()
       }
     }
+    /** 正整数:禁止空、0、负数、小数 */
+    const validatePositiveInt = (label) => (rule, value, callback) => {
+      if (value === null || value === undefined || value === '') {
+        callback(new Error(label + '不能为空'))
+        return
+      }
+      const str = String(value).trim()
+      if (!/^[1-9]\d*$/.test(str)) {
+        callback(new Error(label + '须为正整数(不能为0、负数或小数)'))
+        return
+      }
+      callback()
+    }
     return {
       //字典
       redStatusOptions: [],
@@ -301,16 +338,19 @@ export default {
           { validator: validatePassword, trigger: "blur" }
         ],
         duration: [
-          { required: true, message: "有效时间 单位:分不能为空", trigger: "blur" }
+          { required: true, message: "持续时间不能为空", trigger: "blur" },
+          { validator: validatePositiveInt('持续时间'), trigger: ['blur', 'change'] }
         ],
         liveId: [
           { required: true, message: "直播间ID不能为空", trigger: "blur" }
         ],
         redNum: [
-          { required: true, message: "积分数量不能为空", trigger: "blur" }
+          { required: true, message: "奖励积分不能为空", trigger: "blur" },
+          { validator: validatePositiveInt('奖励积分'), trigger: ['blur', 'change'] }
         ],
         totalLots: [
-          { required: true, message: "份量不能为空", trigger: "blur" }
+          { required: true, message: "奖励份数不能为空", trigger: "blur" },
+          { validator: validatePositiveInt('奖励份数'), trigger: ['blur', 'change'] }
         ],
         desc: [
           { required: true, message: "描述不能为空", trigger: "blur" }