Browse Source

Merge remote-tracking branch 'origin/diagBase6.0' into test

zhouna 4 years ago
parent
commit
847f6da47b

+ 3 - 0
src/api/utils.js

@@ -446,4 +446,7 @@ export default {
         });
         return obj;
     },
+    delNullObj(arr){
+      return arr.filter((it)=>it!==null);
+    }
 }

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

@@ -117,6 +117,7 @@
         methods:{
             formatData(data){       //转换字段名
                 let str = JSON.stringify(data).replace(/byIdDTO/g,"groupVO").replace(/klDiagnoseByIdDTO/g,"klDiagnoseDetail");
+                //console.log(JSON.parse(str))
                 return JSON.parse(str);
             },
             setRules(){
@@ -130,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'
+                                    }];
+                                }
                             });
                         });
                     })

+ 29 - 7
src/components/knowledgeExtra/DiagBase.vue

@@ -8,13 +8,25 @@
                 <el-form-item label="描述:">
                     <el-input size="mini" v-model="filter.description" placeholder="输入描述" clearable></el-input>
                 </el-form-item>
-                <el-form-item>
-                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                <el-form-item label="状态:">
+                    <el-select v-model="filter.status" clearable placeholder="请选择" size="mini">
+                        <el-option
+                                v-for="item in stateSelect"
+                                :key="item.id"
+                                :label="item.name"
+                                :value="item.id">
+                        </el-option>
+                    </el-select>
                 </el-form-item>
                 <el-form-item>
-                    <el-button size="mini" @click="addRule" type="warning" style="margin:0 10px">+ 新增诊断依据</el-button>
-                    <el-button size="mini" @click="update">更新数据</el-button>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
                 </el-form-item>
+                <el-form class="secLine">
+                    <el-form-item>
+                        <el-button size="mini" @click="addRule" type="warning" style="margin:0 10px">+ 新增诊断依据</el-button>
+                        <el-button size="mini" @click="update">更新数据</el-button>
+                    </el-form-item>
+                </el-form>
             </el-form>
         </crumbs>
         <div class="contents knowledgeContents">
@@ -113,6 +125,7 @@
                 filter:{
                     conceptName:'',
                     description:'',
+                    status:''
                 },
                 cacheData: {},
                 currentPage: 1,
@@ -236,6 +249,7 @@
                     size: this.pageSize,
                     conceptName: this.filter.conceptName,
                     description: this.filter.description,
+                    status:this.filter.status
                 };
                 return param;
             },
@@ -316,6 +330,8 @@
             clearFilter(){
                 this.filter={
                     conceptName:'',
+                    description:'',
+                    status:''
                 };
             },
             update(){
@@ -343,14 +359,20 @@
 <style lang="less" scoped>
     @import "../../less/admin.less";
     /deep/ .container.knowledgeTitle {
-        height: 80px;
+        height: 40px;
         min-width: 970px!important;
     }
     .demo-form-inline{
-        margin: 30px 20px 0 0;
+        margin: 0 20px 0 0;
     }
     /deep/ .contents.knowledgeContents {
-        padding: 104px 20px 0;
+        padding: 64px 20px 0;
+    }
+    /deep/ .secLine.el-form {
+        float: right;
+        display: block;
+        position: relative;
+        top: -1px;
     }
     .delete{
         color: red;

+ 30 - 12
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 = 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(){
 
             },*/
@@ -88,16 +91,21 @@
                     "minVal": "",
                     "dataType":"",
                 };
-                //this.$set(this.data,'klDiagnoseDetail',[...this.data.klDiagnoseDetail,temp]);
                 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");
+                //符合条件数量列表同步变化
+                if(this.numArr.length){
+                    this.data.fitNo=this.numArr[this.numArr.length-1].id;
+                }
             },
             addGroup(){
                 this.$emit("addGroup",this.inx);
@@ -142,9 +150,19 @@
         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;
+        /*text-align: center;*/
+        padding: 8px 0 8px 205px;;
         border-top: 4px solid #F5F5F5;
         background: #fff;
         margin: 0 20px;

+ 15 - 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;
@@ -370,6 +360,10 @@
                     width: 260px;
                 }
             }
+            .el-textarea + .el-form-item__error{
+                top:80px;
+                left: 0;
+            }
         }
 
         .el-input-number{

+ 10 - 3
src/components/knowledgeExtra/DiagBaseType.vue

@@ -26,7 +26,7 @@
                    @delGroup="delGroup"></DiagBaseGroup>
     <div class="group-oper">
         <el-button size="small" @click="addDiag">+新增依据</el-button>
-        <el-button size="small" @click="copyDiag">复制依据</el-button>
+        <el-button size="small" class="copy-btn" @click="copyDiag"><img src="../../images/copy.png" alt="">复制依据</el-button>
         <el-button :disabled="isLast" size="small" type="danger" plain @click="delDiag">-删除依据</el-button>
     </div>
           </div>
@@ -132,10 +132,17 @@
           .group-oper{
               margin: 20px 20px 0 20px;
               background: #fff;
-              padding: 8px 0;
-              text-align: center;
+              padding: 8px 0 8px 205px;;
+              /*text-align: center;*/
               .el-button{
                   margin-right: 60px;
               }
+              .copy-btn{
+                  border-color:#666;
+                  color: #666;
+                  img{
+                      margin-right: 5px;
+                  }
+              }
           }
       </style>

BIN
src/images/copy.png