zhouna 4 vuotta sitten
vanhempi
commit
af0d3af29d

+ 91 - 62
src/components/knowledgeExtra/AddDiagBase.vue

@@ -131,68 +131,97 @@
                             that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.fitNo']=[{required: true, message: '请选择符合条件的数量',trigger: ['change'] }];
                             let list2=list1[x].klDiagnoseDetail;
                             list2.forEach((t,j)=>{
-                                const grandeObj = this.form.klDiagnoseTypeVO[i].groupVO[x].klDiagnoseDetail[j];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basDescription']=[{required: true, message: '请输入基础依据名称',trigger: ['blur'] }];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basType']=[{ required: true, message: '请选择基础依据类型',trigger: ['change'] }];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basLibType']=[{ required: true, message: '请选择基础依据术语类型',trigger: ['change'] }];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basConceptId']=[{ required: true, message: '请输入医学标准术语',trigger: ['change'] }];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.dataType']=[{ required: true, message: '请选择类型',trigger: ['change'] }];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.maxOperator']=[{
-                                    validator: (rule,value,callback)=>{
-                                        const {maxVal,minOperator,minVal}=grandeObj;
-                                        const val=value+minOperator+minVal+maxVal;
-                                        if(!val||(!value&&maxVal!=='')){
-                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
-                                        }else{
-                                            callback();
-                                        }}, trigger: 'blur'
-                                }];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.minOperator']=[{
-                                    validator: (rule,value,callback)=>{
-                                        const {maxVal,maxOperator,minVal}=grandeObj;
-                                        const val=value+maxOperator+minVal+maxVal;
-                                        if(!val||(!value&&minVal!=='')){
-                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
-                                        }else{
-                                            callback();
-                                        }}, trigger: 'blur'
-                                }];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.maxVal']=[{
-                                    validator: (rule,value,callback)=>{
-                                        const {maxOperator,minOperator,minVal}=grandeObj;
-                                        const val=value+maxOperator+minVal+minOperator;
-                                        const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
-                                        if(!val||(value==''&&maxOperator)){
-                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
-                                        }else if(value!==''&&!isNum){
-                                            callback(new Error('只能输入数字'));
-                                        }else{
-                                            callback();
-                                        }}, trigger: 'blur'
-                                }]
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.minVal']=[{
-                                    validator: (rule,value,callback)=>{
-                                        const {maxVal,minOperator,maxOperator}=grandeObj;
-                                        const val=value+maxOperator+maxVal+minOperator;
-                                        const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
-                                        if(!val||(value==''&&minOperator)){
-                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
-                                        }else if(value!==''&&!isNum){
-                                            callback(new Error('只能输入数字'));
-                                        }else{
-                                            callback();
-                                        }}, trigger: 'blur'
-                                }];
-                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.eqValue']=[{
-                                    validator: (rule,value,callback)=>{
-                                        if(value===''){
-                                            callback(new Error('不能为空~'));
-                                        }else if(value.length>200){
-                                            callback(new Error('不能超过200字'));
-                                        }else{
-                                            callback();
-                                        }}, trigger: 'blur'
-                                }];
+                                let grandeObj = this.form.klDiagnoseTypeVO[i].groupVO[x].klDiagnoseDetail[j];
+                                if(grandeObj) {
+                                    const keyTxt='klDiagnoseTypeVO.' + i + '.groupVO.' + x + '.klDiagnoseDetail.' + j;
+                                    that.rules[keyTxt + '.basDescription'] = [{
+                                        required: true,
+                                        message: '请输入基础依据名称',
+                                        trigger: ['blur']
+                                    }];
+                                    that.rules[keyTxt + '.basType'] = [{
+                                        required: true,
+                                        message: '请选择基础依据类型',
+                                        trigger: ['change']
+                                    }];
+                                    that.rules[keyTxt + '.basLibType'] = [{
+                                        required: true,
+                                        message: '请选择基础依据术语类型',
+                                        trigger: ['change']
+                                    }];
+                                    that.rules[keyTxt + '.basConceptId'] = [{
+                                        required: true,
+                                        message: '请输入医学标准术语',
+                                        trigger: ['change']
+                                    }];
+                                    that.rules[keyTxt + '.dataType'] = [{
+                                        required: true,
+                                        message: '请选择类型',
+                                        trigger: ['change']
+                                    }];
+                                    that.rules[keyTxt + '.maxOperator'] = [{
+                                        validator: (rule, value, callback) => {
+                                            const {maxVal, minOperator, minVal} = grandeObj;
+                                            const val = value + minOperator + minVal + maxVal;
+                                            if (!val || (!value && maxVal !== '')) {
+                                                callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                            } else {
+                                                callback();
+                                            }
+                                        }, trigger: 'blur'
+                                    }];
+                                    that.rules[keyTxt + '.minOperator'] = [{
+                                        validator: (rule, value, callback) => {
+                                            const {maxVal, maxOperator, minVal} = grandeObj;
+                                            const val = value + maxOperator + minVal + maxVal;
+                                            if (!val || (!value && minVal !== '')) {
+                                                callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                            } else {
+                                                callback();
+                                            }
+                                        }, trigger: 'blur'
+                                    }];
+                                    that.rules[keyTxt + '.maxVal'] = [{
+                                        validator: (rule, value, callback) => {
+                                            const {maxOperator, minOperator, minVal} = grandeObj;
+                                            const val = value + maxOperator + minVal + minOperator;
+                                            const isNum = /^(\-|\+)?\d+(\.\d+)?$/.test(value);
+                                            if (!val || (value === '' && maxOperator)) {
+                                                callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                            } else if (value !== '' && !isNum) {
+                                                callback(new Error('只能输入数字'));
+                                            } else {
+                                                callback();
+                                            }
+                                        }, trigger: 'blur'
+                                    }]
+                                    that.rules[keyTxt + '.minVal'] = [{
+                                        validator: (rule, value, callback) => {
+                                            const {maxVal, minOperator, maxOperator} = grandeObj;
+                                            const val = value + maxOperator + maxVal + minOperator;
+                                            const isNum = /^(\-|\+)?\d+(\.\d+)?$/.test(value);
+                                            console.log(val, value, minOperator)
+                                            if (!val || (value === '' && minOperator)) {
+                                                callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                            } else if (value !== '' && !isNum) {
+                                                callback(new Error('只能输入数字'));
+                                            } else {
+                                                callback();
+                                            }
+                                        }, trigger: 'blur'
+                                    }];
+                                    that.rules[keyTxt + '.eqValue'] = [{
+                                        validator: (rule, value, callback) => {
+                                            if (value === '') {
+                                                callback(new Error('不能为空~'));
+                                            } else if (value.length > 200) {
+                                                callback(new Error('不能超过200字'));
+                                            } else {
+                                                callback();
+                                            }
+                                        }, trigger: 'blur'
+                                    }];
+                                }
                             });
                         });
                     })

+ 27 - 10
src/components/knowledgeExtra/DiagBaseGroup.vue

@@ -7,13 +7,10 @@
                            :groupData="rules"
                            :ind="i"
                            :inx="inx"
-                           :len="data.klDiagnoseDetail.length"
                            :parInx="parInx"
-                           :isLast="isLast&&data.klDiagnoseDetail.length===1"
+                           :hideDel="isLast&&len===1"
                            :baseTypes="diagTypeList"
-                           @setRules="setRules"
                            @changeVal="handleInput"
-                           @addRule="addRule"
                            @delRule="delRule"></DiagBaseItem>
             <el-form-item label="符合条件的数量:" :prop="'klDiagnoseTypeVO.'+parInx+'.groupVO.'+inx+'.fitNo'" class="diag-num">
                 <el-select v-model="data.fitNo"
@@ -27,6 +24,10 @@
                     </el-option>
                 </el-select>
             </el-form-item>
+            <div class="inner-oper">
+                <span>新增基础依据:</span>
+                <span class="add-btn" @click="addRule"><img src="../../images/add.png" alt="新增基础依据"></span>
+            </div>
         </div>
         <div class="group-oper">
             <el-button size="small" @click="addGroup">+新增分组</el-button>
@@ -50,14 +51,16 @@
             }
         },
         computed:{
+            len:function(){
+                return util.delNullObj(this.data.klDiagnoseDetail).length;
+            },
             numArr:function(){
                 let arr=[];
-                const len = util.delNullObj(this.data.klDiagnoseDetail).length;
-                for(let i=0;i<len;i++){
+                for(let i=0;i<this.len;i++){
                     arr.push({id:i+1,name:i+1});
                 }
                 return arr;
-            }
+            },
             /*baseTypeList:function(){
 
             },*/
@@ -89,16 +92,20 @@
                     "dataType":"",
                 };
                 this.data.klDiagnoseDetail.push(temp);
-                this.$emit("setRule");
+                this.$emit("setRules");
             },
             delRule(i){
-                if(i===0&&this.data.klDiagnoseDetail.length===1){
+                if(this.len===1){
                     this.$emit("delGroup",this.inx);
+                    this.$emit("setRules");
                     return;
                 }
                 this.data.klDiagnoseDetail.splice(i,1,null);
+                this.$emit("setRules");
                 //符合条件数量列表同步变化
-                this.data.fitNo=this.numArr[this.numArr.length-1].id;
+                if(this.numArr.length){
+                    this.data.fitNo=this.numArr[this.numArr.length-1].id;
+                }
             },
             addGroup(){
                 this.$emit("addGroup",this.inx);
@@ -143,6 +150,16 @@
         padding: 10px 0;
         /*border-bottom: 1px solid #E6E6E6;*/
     }
+    .inner-oper{
+        background: #fff;
+        padding: 10px 0 10px 21px;
+        .add-btn {
+            cursor: pointer;
+            img {
+                vertical-align: middle;
+            }
+        }
+    }
     .group-oper{
         /*text-align: center;*/
         padding: 8px 0 8px 205px;;

+ 11 - 21
src/components/knowledgeExtra/DiagBaseItem.vue

@@ -2,7 +2,7 @@
     <div class="groups-cont" v-if="groupData">
         <!--<el-form ref="groupData" label-width="150px" class="sub-condition-form" :model="groupData" :rules="rules">-->
         <div class="sub-condition-form">
-        <span v-if="!isLast" class="del-btn"  @click="delRule">删除</span><!--:class="isLast?'disable del-btn':'del-btn'"-->
+        <span v-if="!hideDel" class="del-btn"  @click="delRule">删除</span><!--:class="isLast?'disable del-btn':'del-btn'"-->
             <el-form-item label="基础依据名称:" :prop="ruleLine+ind+'.basDescription'">
                 <el-input v-model.trim = "groupData.basDescription"></el-input>
             </el-form-item>
@@ -122,17 +122,13 @@
             </el-form-item>
         </div>
         <!--</el-form>-->
-        <div class="inner-oper" v-if="ind===len-1">
-            <span>新增基础依据:</span>
-            <span class="add-btn" @click="addRule"><img src="../../images/add.png" alt="新增基础依据"></span>
-        </div>
     </div>
 </template>
 <script>
     import api from '@api/zskDiagBase.js';
     export default {
         name:'DiagBaseItem',
-        props:['groupData','ind','isLast','baseTypes','parInx','inx','len'],
+        props:['groupData','ind','baseTypes','parInx','inx','hideDel'],
         data(){
             return {
                 dicts:{},
@@ -161,10 +157,12 @@
         },
         created(){
             this.dicts=JSON.parse(localStorage.getItem("zskDiagDicts")||'{}');
-            if(this.groupData.maxOperator||this.groupData.minOperator){
-                this.groupData.dataType='1';
-            }else if(this.groupData.eqValue){
-                this.groupData.dataType='2';
+            if(this.groupData){
+                if(this.groupData.maxOperator||this.groupData.minOperator){
+                    this.groupData.dataType='1';
+                }else if(this.groupData.eqValue){
+                    this.groupData.dataType='2';
+                }
             }
             this.conceptList=[{conceptName:this.groupData.basLibName,conceptId:this.groupData.basConceptId}];
             if(this.groupData.basType){
@@ -255,12 +253,13 @@
                     console.log(error);
                 });
             },
-            addRule(){
+            /*addRule(){
                 this.$emit("addRule");
                 this.$emit('setRules');
-            },
+            },*/
             delRule(){
                 this.$emit("delRule",this.ind);
+                this.$emit('setRules');
             },
             warning(msg,type){
                 this.$message({
@@ -293,15 +292,6 @@
                 background: #ebedf1;
             }
         }
-        .inner-oper{
-            padding: 10px 0 10px 21px;
-            .add-btn {
-                cursor: pointer;
-                img {
-                    vertical-align: middle;
-                }
-            }
-        }
         .sub-condition-form{
             padding:10px 20px 9px;
             position: relative;