Browse Source

规则修改

wyq 4 years ago
parent
commit
2055590439
2 changed files with 173 additions and 83 deletions
  1. 147 81
      src/components/knowledgeExtra/AddDiagBase.vue
  2. 26 2
      src/components/knowledgeExtra/rules.js

+ 147 - 81
src/components/knowledgeExtra/AddDiagBase.vue

@@ -12,7 +12,7 @@
         :rules="rules"
       >
         <div class="content">
-          <el-form-item label="疾病名称:" class="item" prop="conceptId">
+          <el-form-item label="疾病名称:" class="item" prop="conceptId" :rules="rules.conceptId">
             <el-select
               clearable
               remote
@@ -28,7 +28,7 @@
               ></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item label="诊断依据描述:" class="item">
+          <el-form-item label="诊断依据描述:" prop="description" class="item">
             <el-input
               class="inps"
               maxlength="200"
@@ -94,7 +94,7 @@
                 <el-form-item
                   class="is-request"
                   :prop="'klDiagnoseTypeVO.'+scope.$index+'.conditionType'"
-                  :rules="[{ required: true, message: '请选择诊断依据类型',trigger: ['change'] }]"
+                  :rules="rules.conditionType"
                 >
                   <el-select
                     v-model="form.klDiagnoseTypeVO[scope.$index].conditionType"
@@ -143,7 +143,7 @@
               <template slot-scope="scope">
                 <el-form-item
                   :prop="'klDiagnoseTypeVO.'+scope.$index+'.groupVO.'+0+'.fitNo'"
-                  :rules="[{required:true,message:'请选择符合条件的数量',trigger:'change'}]"
+                  :rules="rules.fitNo"
                 >
                   <el-select v-model="scope.row.groupVO[0].fitNo">
                     <el-option
@@ -190,7 +190,7 @@
                         '.groupVO.' +
                         index +
                         '.klDiagnoseDetail.'+i+'.basDescription'"
-                        :rules="[{required:true,message:'请输入基础依据名称',trigger:'blur'}]"
+                        :rules="rules.basDescription"
                       >
                         <el-input
                           class="inp-name"
@@ -207,7 +207,7 @@
                         '.groupVO.' +
                         index +
                         '.klDiagnoseDetail.'+i+'.basType'"
-                        :rules="[{ required: true, message: '请选择基础依据类型',trigger: ['change'] }]"
+                        :rules="rules.basType"
                       >
                         <el-select
                           v-model="items.basType"
@@ -229,7 +229,7 @@
                       index +
                       '.klDiagnoseDetail.'+i+'.basLibType'"
                       v-if="!items.basNameType && v.title == '基础依据术语类型'"
-                      :rules="[{required: true,message: '请选择基础依据术语类型',trigger: ['change']}]"
+                      :rules="rules.basLibType"
                     >
                       <el-select
                         v-model="items.basLibType"
@@ -259,7 +259,7 @@
                         '.groupVO.' +
                         index +
                         '.klDiagnoseDetail.'+i+'.basConceptId'"
-                        :rules="[{required:true,message:'请输入医学标准术语',trigger:'change'}]"
+                        :rules="rules.subConceptId"
                       >
                         <el-select
                           clearable
@@ -286,6 +286,7 @@
                         index +
                         '.klDiagnoseDetail.'+i+'.dataType'"
                         v-if="items.basType===2&&!items.onlyNumType&&!items.onlyTxtType"
+                        :rules="rules.dataType"
                       >
                         <el-select
                           class="box-1"
@@ -315,6 +316,14 @@
                             '.groupVO.' +
                             index +
                             '.klDiagnoseDetail.'+i+'.maxOperator'"
+                            :rules="[
+                              {
+                                validator: (rule, value, callback) => {
+                                  maxOperator(items, rule, value, callback);
+                                },
+                                trigger: ['change']
+                              }
+                            ]"
                           >
                             <el-select
                               v-model="items.maxOperator"
@@ -334,10 +343,18 @@
                           <el-form-item
                             class="num"
                             :prop="'klDiagnoseTypeVO.' +
-                              scope.$index +
-                              '.groupVO.' +
-                              index +
-                              '.klDiagnoseDetail.'+i+'.maxVal'"
+                            scope.$index +
+                            '.groupVO.' +
+                            index +
+                            '.klDiagnoseDetail.'+i+'.maxVal'"
+                            :rules="[
+                              {
+                                validator: (rule, value, callback) => {
+                                  maxVal(items, rule, value, callback);
+                                },
+                                trigger: ['blur']
+                              }
+                            ]"
                           >
                             <el-input v-model="items.maxVal" placeholder="填写数值"></el-input>
                           </el-form-item>
@@ -358,6 +375,14 @@
                             '.groupVO.' +
                             index +
                             '.klDiagnoseDetail.'+i+'.minOperator'"
+                            :rules="[
+                              {
+                                validator: (rule, value, callback) => {
+                                  minOperator(items, rule, value, callback);
+                                },
+                                trigger: ['change']
+                              }
+                            ]"
                           >
                             <el-select
                               v-model="items.minOperator"
@@ -373,7 +398,6 @@
                               ></el-option>
                             </el-select>
                           </el-form-item>
-
                           <el-form-item
                             class="minnum"
                             :prop="'klDiagnoseTypeVO.' +
@@ -381,44 +405,68 @@
                             '.groupVO.' +
                             index +
                             '.klDiagnoseDetail.'+i+'.minVal'"
+                            :rules="[
+                              {
+                                validator: (rule, value, callback) => {
+                                  minVal(items, rule, value, callback);
+                                },
+                                trigger: ['blur']
+                              }
+                            ]"
                           >
                             <el-input v-model="items.minVal" placeholder="填写数值"></el-input>
                           </el-form-item>
-
                           <el-form-item prop="minUnit">
                             <el-input v-model.trim="items.minUnit" placeholder="填写单位"></el-input>
                           </el-form-item>
                         </div>
                       </el-form-item>
-                      
-                      <el-form-item
-                        :prop="'klDiagnoseTypeVO.' +
+                      <div>
+                        <el-form-item
+                          :prop="'klDiagnoseTypeVO.' +
                         scope.$index +
                         '.groupVO.' +
                         index +
                         '.klDiagnoseDetail.'+i+'.eqValue'"
-                        v-if="items.basType===4 || items.basType===3"
-                        maxlength="200"
-                        label="正则表达式:"
-                        class="discDesc"
-                        :rules="[{required:true,message:'不能为空~',trigger:'change'}]"
-                      >
-                        <el-input class="inp" placeholder="请输入正则表达式" v-model.trim="items.eqValue"></el-input>
-                      </el-form-item>
-                      <el-form-item
-                        :prop="'klDiagnoseTypeVO.' +
+                          v-if="items.basType===4 || items.basType===3"
+                          maxlength="200"
+                          label="正则表达式:"
+                          class="discDesc"
+                          :rules="[
+                          {
+                            required: true,
+                            message: '请输入正则表达式',
+                            trigger: 'blur'
+                          },
+
+                        ]"
+                        >
+                          <el-input class="inp" placeholder="请输入正则表达式" v-model.trim="items.eqValue"></el-input>
+                        </el-form-item>
+                      </div>
+                      <div>
+                        <el-form-item
+                          :prop="'klDiagnoseTypeVO.' +
                         scope.$index +
                         '.groupVO.' +
                         index +
                         '.klDiagnoseDetail.'+i+'.eqValue'"
-                        maxlength="200"
-                        v-if="(!items.onlyNumType&&!items.basNameType&&(items.basType===2 || items.basType===1)&&items.dataType==='2')||items.onlyTxtType"
-                        label="医学内容:"
-                        class="discDesc"
-                        :rules="[{required:true,message:'不能为空~',trigger:'change'}]"
-                      >
-                        <el-input v-model.trim="items.eqValue" class="inp" placeholder="请输入医学内容"></el-input>
-                      </el-form-item>
+                          maxlength="200"
+                          v-if="(!items.onlyNumType&&!items.basNameType&&(items.basType===2 || items.basType===1)&&items.dataType==='2')||items.onlyTxtType"
+                          label="医学内容:"
+                          class="discDesc"
+                          :rules="[
+                          {
+                            required: true,
+                            message: '请输入医学内容',
+                            trigger: 'blur'
+                          }
+                          
+                        ]"
+                        >
+                          <el-input v-model.trim="items.eqValue" class="inp" placeholder="请输入医学内容"></el-input>
+                        </el-form-item>
+                      </div>
                     </div>
                   </div>
                 </div>
@@ -436,7 +484,7 @@
 <script type="text/javascript">
 import util from '../../api/utils.js';
 import api from '@api/zskDiagBase.js';
-
+import { tableRules } from './rules';
 export default {
   name: 'AddZskDiagBase',
   data() {
@@ -502,40 +550,7 @@ export default {
         ]
       },
       id: null,
-      rules: {
-        conceptId: [
-          { required: true, message: '请输入疾病名称', trigger: ['change'] }
-        ],
-        description: [
-          {
-            validator: (rule, value, callback) => {
-              if (value && value.length > 100) {
-                callback(new Error('诊断依据描述不能超过100字'));
-              } else {
-                callback();
-              }
-            },
-            trigger: 'change'
-          }
-        ],
-        conditionType: [
-          { required: true, message: '请选择基础规则类型', trigger: ['change'] }
-        ],
-        subEqValue: [
-          {
-            validator: (rule, value, callback) => {
-              if (value === '') {
-                callback(new Error('请输入' + this.textName));
-              } else if (value.length > 200) {
-                callback(new Error(this.textName + '不能超过200字'));
-              } else {
-                callback();
-              }
-            },
-            trigger: 'blur'
-          }
-        ]
-      },
+      rules: tableRules,
       dataTypes: [
         { id: '1', name: '数值类型' },
         { id: '2', name: '文本类型' }
@@ -669,10 +684,7 @@ export default {
         }
       }
       this.i = this.form.klDiagnoseTypeVO.slice(-1)[0].depart_id + 1;
-      console.log(this.i);
     }
-
-    this.setRules();
   },
   computed: {
     numArr() {
@@ -721,6 +733,52 @@ export default {
     }
   },
   methods: {
+    // 最大值 选择rule
+    maxOperator(items, rule, value, callback) {
+      const { maxVal, minOperator, minVal } = items;
+      const val = value + minOperator + minVal + maxVal;
+      if (!val || (!value && maxVal !== '')) {
+        callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+      } else {
+        callback();
+      }
+    },
+    // 最大值 数值rule
+    maxVal(items, rule, value, callback) {
+      const { maxOperator, minOperator, minVal } = items;
+      const val = value + maxOperator + minOperator + minVal;
+      const isNum = /^(\-|\+)?\d+(\.\d+)?$/.test(value);
+      if (!val || (value == '' && maxOperator)) {
+        callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+      } else if (value !== '' && !isNum) {
+        callback(new Error('只能输入数字'));
+      } else {
+        callback();
+      }
+    },
+    // 最小值 选择rule
+    minOperator(items, rule, value, callback) {
+      const { maxVal, maxOperator, minVal } = items;
+      const val = value + maxVal + maxOperator + minVal;
+      if (!val || (!value && minVal !== '')) {
+        callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+      } else {
+        callback();
+      }
+    },
+    // 最小值 数值rule
+    minVal(items, rule, value, callback) {
+      const { maxVal, minOperator, maxOperator } = items;
+      const val = value + maxVal + minOperator + maxOperator;
+      const isNum = /^(\-|\+)?\d+(\.\d+)?$/.test(value);
+      if (!val || (value == '' && minOperator)) {
+        callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+      } else if (value !== '' && !isNum) {
+        callback(new Error('只能输入数字'));
+      } else {
+        callback();
+      }
+    },
     isMax(id) {
       const typeNum = this.form.klDiagnoseTypeVO.filter(
         item => item.depart_id === id
@@ -832,7 +890,6 @@ export default {
         //  this.$refs.form.clearValidate();
       });
       this.form.klDiagnoseTypeVO.splice(i + 1, 0, temp);
-      this.setRules();
     },
     //复制依据
     copyDiag(id, inx) {
@@ -868,7 +925,6 @@ export default {
         item.depart_id = i;
       });
       this.form.klDiagnoseTypeVO = dest;
-      this.setRules();
     },
     //删除依据
     delDiag(id, inx) {
@@ -880,7 +936,6 @@ export default {
           item.depart_id = item.depart_id - 1;
         }
       });
-      this.setRules();
     },
     //新增组
     addGroup(i) {
@@ -914,11 +969,9 @@ export default {
         ]
       };
       this.form.klDiagnoseTypeVO[i].groupVO.splice(i + 1, 0, temp);
-      this.setRules();
     },
     delGroup(id, i) {
       this.form.klDiagnoseTypeVO.splice(i, 1);
-      this.setRules();
     },
     //新增基础依据
     addRule(row, index, i) {
@@ -944,7 +997,6 @@ export default {
         dataType: ''
       };
       this.form.klDiagnoseTypeVO[index].groupVO[i].klDiagnoseDetail.push(temp);
-      this.setRules();
     },
     delRule(row, inx, index, i) {
       if (
@@ -958,7 +1010,6 @@ export default {
           1
         );
       }
-      this.setRules();
     },
     //诊断依据类型修改
     basTypeChange(val, inx) {
@@ -1035,6 +1086,9 @@ export default {
       this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
         i
       ].conceptList = [];
+      this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
+        i
+      ].basConceptId = '';
       if ((this.numTypes + ',').indexOf(val + ',') > -1) {
         this.form.klDiagnoseTypeVO[inx].groupVO[index].klDiagnoseDetail[
           i
@@ -1421,8 +1475,18 @@ export default {
     }
     .inps {
       width: 500px !important;
-      .el-input__inner {
+      font-size: 14px;
+      /deep/ .el-input__inner {
         width: 500px !important;
+        font-size: 14px;
+      }
+    }
+    .item {
+      /deep/.el-form-item__label {
+        font-size: 14px;
+      }
+      /deep/.el-input__inner {
+        font-size: 14px;
       }
     }
   }
@@ -1511,6 +1575,7 @@ export default {
           top: 38px;
           left: 10px;
           white-space: nowrap;
+          width: 360px;
         }
       }
       .last-box-s {
@@ -1519,6 +1584,7 @@ export default {
           top: 38px;
           left: 0px;
           white-space: nowrap;
+          width: 260px;
         }
       }
       /deep/ .el-form-item__error {

+ 26 - 2
src/components/knowledgeExtra/rules.js

@@ -41,8 +41,11 @@ export const formRules = {
 }
 
 export const tableRules = {
+  conceptId: [
+    { required: true, message: '请输入疾病名称', trigger: ['change'] }
+  ],
   subDescription: [
-    { required: true, message: "请输入基础规则名称", trigger: ["change","blur"] },
+    { required: true, message: "请输入基础规则名称", trigger: ["change", "blur"] },
     {
       validator: (rule, value, callback) => {
         if (value && value.length > 100) {
@@ -51,12 +54,25 @@ export const tableRules = {
           callback();
         }
       },
-      trigger: ["change","blur"]
+      trigger: ["change", "blur"]
     }
   ],
+  conditionType: [
+    { required: true, message: "请选择诊断依据类型", trigger: ["blur"] }
+  ],
+  fitNo: [
+    { required: true, message: "请选择符合条件的数量", trigger: ["blur"] }
+  ],
+
+  basDescription: [
+    { required: true, message: "请输入基础依据名称", trigger: ["blur"] }
+  ],
   subType: [
     { required: true, message: "请选择基础规则类型", trigger: ["change"] }
   ],
+  basType: [
+    { required: true, message: "请选择基础依据类型", trigger: ["blur"] }
+  ],
   subLenCode: [
     {
       required: true,
@@ -64,9 +80,17 @@ export const tableRules = {
       trigger: ["blur"]
     }
   ],
+  basLibType: [
+    {
+      required: true,
+      message: "请选择基础依据术语类型",
+      trigger: ["blur"]
+    }
+  ],
   subConceptId: [
     { required: true, message: "请输入医学标准术语", trigger: ["blur"] }
   ],
+  
   dataType: [
     { required: true, message: "请选择类型", trigger: ["change"] }
   ],