Browse Source

自定义质控规则-错误扣分校验规则(之前不能输入0.5等小数)

liyanyan 1 month ago
parent
commit
cc24e43e77
1 changed files with 42 additions and 11 deletions
  1. 42 11
      src/views/recordsRoom/qc/components/CreateControlResultDialog.vue

+ 42 - 11
src/views/recordsRoom/qc/components/CreateControlResultDialog.vue

@@ -90,7 +90,7 @@
       </span>
     </el-dialog>
     <el-dialog title="添加质控规则" center :visible.sync="addRuleDialog" width="460px">
-      <el-form :inline="true" :rules="zkRules" >
+      <el-form :inline="true" :rules="zkRules" :model="addRuleForm" ref="addRuleFormRef">
         <el-form-item label="质控类型" prop="zk_type">
           <el-radio v-model="addRuleForm.zk_type"  label="1">首页质控</el-radio>
           <el-radio v-model="addRuleForm.zk_type"  label="2">病历质控</el-radio>
@@ -99,7 +99,7 @@
           <el-input v-model="addRuleForm.field" placeholder="请输入质控名称" style="width: 300px;"></el-input>
         </el-form-item>
         <el-form-item label="错误扣分" prop="down">
-          <el-input  v-model.number="addRuleForm.down"  placeholder="请输入 0.5 到 100 之间的数字" style="width: 300px;line-height: 0px;" >
+          <el-input  v-model="addRuleForm.down" placeholder="请输入 0.5 到 100 之间的数字" style="width: 300px;line-height: 0px;" >
           </el-input>
           <span style="font-size: 12px;display: flex;line-height: 15px;padding-top: 5px;">请输入0.5-100之间的数字,1位小数</span>
 
@@ -179,6 +179,29 @@ export default {
     }
   },
   data() {
+     // 自定义质控规则-错误扣分校验规则
+     const validateValue = (rule, value, callback) => {
+      if (value === '' || value === null) {
+        return callback(new Error('请输入数值'));
+      }
+      
+      if (isNaN(value)) {
+        return callback(new Error('必须为有效数字'));
+      }
+      
+      // 校验小数位数
+      const decimalPart = value.toString().split('.')[1];
+      if (decimalPart && decimalPart.length > 1) {
+        return callback(new Error('最多只能有1位小数'));
+      }
+      
+      // 校验数值范围
+      if (value < 0.5 || value > 100) {
+        return callback(new Error('数值必须在0.5到100之间'));
+      }
+      
+      callback();
+    };
     return {
       //添加质控
       zkTypeArray: [
@@ -211,8 +234,8 @@ export default {
         zk_type:[{ required: true, message: '请选择质控类型',trigger:'xx'},],
         field: [{ required: true, message: '请填写质控名称',trigger:'xx'}],
         down: [
-         // { required: true, message: '年龄不能为空'},
-          {required: true, message: '扣分需在 0.5 到 100 之间的数字',trigger:'xx' }
+          { required: true, message: '请输入数值', trigger: 'xx' },
+          { validator: validateValue, trigger: 'xx' }
         ],
         level: [{ required: true, message: '请选择缺陷类型', trigger: 'xx' }],
         type: [{ required: true, message: '请选择缺陷分类', trigger: 'xx' }],
@@ -332,14 +355,22 @@ export default {
     },
     //添加质控规则提交
     addRuleSubmit(){
-      let params = this.addRuleForm;
-      this.$axios.post('/artificial/department/addRule', params).then(res => {
-        if (res.code == 200){
-          this.getZkInfo();
-          this.addRule();
-          this.success(res.msg);
+      this.$refs.addRuleFormRef.validate((valid) => {
+        if (valid) {
+          let params = this.addRuleForm;
+          this.$axios.post('/artificial/department/addRule', params).then(res => {
+            if (res.code == 200){
+              this.getZkInfo();
+              this.addRule();
+              this.success(res.msg);
+            }
+          })
+        } else {
+          console.log('error submit!!');
+          return false;
         }
-      })
+      });
+      
     },
     // 质控分类
     querySearchCategory(queryString, cb) {