Parcourir la source

Merge remote-tracking branch 'origin/knowledgePlat' into test

zhouna il y a 4 ans
Parent
commit
54448470af

+ 3 - 3
src/components/knowledgeExtra/AddNewRule.vue

@@ -36,7 +36,7 @@
                         <span class="tip-text">注:更改规则术语类型,将会清空已填写的规则内容~</span>
                     </el-form-item>
                     <el-form-item  class="addDepartFormItem" label="医学标准术语:" prop="parConceptId">
-                        <el-select clearable filterable remote :remote-method="searchConcept" v-model="form.parConceptId">
+                        <el-select clearable filterable remote :remote-method="searchConcept" v-model.trim="form.parConceptId">
                             <el-option
                                     v-for="item in conceptList"
                                     :key="item.conceptId"
@@ -58,7 +58,7 @@
                         </el-select>
                     </el-form-item>-->
                     <el-form-item v-if="showMsg" label="附加信息:" prop="parMsg" class="parMsg">
-                        <el-input type="textarea" :rows="3" placeholder="请输入附加信息" v-model="form.parMsg"></el-input>
+                        <el-input type="textarea" :rows="3" placeholder="请输入附加信息" v-model.trim="form.parMsg"></el-input>
                     </el-form-item>
                     <el-form-item v-if="form.parHasSub===1" label="规则内容:" prop="remind" class="discDesc">
                         <SubRulesGroup v-for="(group,i) in subGroups"
@@ -308,7 +308,7 @@
                         subLenCode:this.form.parLenCode,
                         subLenName: this.form.parLenName,
                         subLibName: this.form.parlibName,
-                        subType:2,
+                        subType:obj.subType,
                         dataType:'',
                         subMaxOperator:'',
                         subMaxUnit:'',

+ 1 - 0
src/components/knowledgeExtra/RuleManager.vue

@@ -218,6 +218,7 @@
                         //this.msgDict=(data['21'].map((it)=>it.val)||[]).join(",");
                         localStorage.setItem("zskDicts",arr.join(","));
                         localStorage.setItem("zskMsgDict",(data['21'].map((it)=>it.val)||[]).join(","));
+                        localStorage.setItem("zskNumDict",data['22'][0].val);
                     }
                 }).catch((error) => {
                     console.log(error);

+ 51 - 23
src/components/knowledgeExtra/SubConditions.vue

@@ -33,7 +33,7 @@
                 </el-select>
             </el-form-item>
             <el-form-item  class="addDepartFormItem" label="医学标准术语:" prop="subConceptId">
-                <el-select clearable remote filterable :disabled="disabled" :remote-method="searchConcept" v-model="groupData.subConceptId">
+                <el-select clearable remote filterable :disabled="disabled" :remote-method="searchConcept" v-model.trim="groupData.subConceptId">
                     <el-option
                             v-for="item in conceptList"
                             :key="item.conceptId"
@@ -42,7 +42,7 @@
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item v-if="groupData.subType===2" label="选择类型:" prop="dataType">
+            <el-form-item v-if="groupData.subType===2&&showDataType" label="选择类型:" prop="dataType">
                 <el-select v-model="groupData.dataType"
                            placeholder="请选择"
                            size="small" @change="dataTypeChange">
@@ -56,7 +56,7 @@
             </el-form-item>
             <el-form-item class="min-margin" v-if="groupData.dataType==='1'" label="最大值:">
                 <div class="select-item clearfix">
-                    <el-col :span="2">
+                    <el-col :span="3">
                         <el-form-item prop="subMaxOperator">
                             <el-select v-model="groupData.subMaxOperator"
                                        placeholder="请选择"
@@ -70,21 +70,21 @@
                             </el-select>
                         </el-form-item>
                     </el-col>
-                    <el-col :span="2">
+                    <el-col :span="3">
                         <el-form-item prop="subMaxValue">
                             <el-input type="text" v-model="groupData.subMaxValue" placeholder="填写数值"/>
                         </el-form-item>
                     </el-col>
-                    <el-col :span="2">
+                    <el-col :span="3">
                         <el-form-item prop="subMaxUnit">
-                            <el-input  type="text" v-model="groupData.subMaxUnit" placeholder="填写单位"/>
+                            <el-input  type="text" v-model.trim="groupData.subMaxUnit" placeholder="填写单位"/>
                         </el-form-item>
                     </el-col>
                 </div>
             </el-form-item>
             <el-form-item class="min-margin" v-if="groupData.dataType==='1'" label="最小值:">
                 <div class="select-item clearfix">
-                    <el-col :span="2">
+                    <el-col :span="3">
                         <el-form-item prop="subMinOperator">
                             <el-select v-model="groupData.subMinOperator"
                                        placeholder="请选择"
@@ -98,23 +98,23 @@
                             </el-select>
                         </el-form-item>
                     </el-col>
-                    <el-col :span="2">
+                    <el-col :span="3">
                         <el-form-item prop="subMinValue">
                             <el-input type="text" v-model="groupData.subMinValue" placeholder="填写数值"/>
                         </el-form-item>
                     </el-col>
-                    <el-col :span="2">
+                    <el-col :span="3">
                         <el-form-item prop="subMinUnit">
-                            <el-input  type="text" v-model="groupData.subMinUnit" placeholder="填写单位"/>
+                            <el-input  type="text" v-model.trim="groupData.subMinUnit" placeholder="填写单位"/>
                         </el-form-item>
                     </el-col>
                 </div>
             </el-form-item>
-            <el-form-item v-if="groupData.subType!==6&&groupData.dataType==='2'" label="医学内容:" prop="subEqValue" class="discDesc">
-                <el-input type="textarea" rows="3" placeholder="请输入医学内容" v-model="groupData.subEqValue"></el-input>
+            <el-form-item v-if="groupData.subType!==6&&groupData.dataType==='2'" label="医学内容:" prop="subEqValue" class="discDesc is-required">
+                <el-input type="textarea" rows="3" placeholder="请输入医学内容" v-model.trim="groupData.subEqValue"></el-input>
             </el-form-item>
-            <el-form-item v-if="groupData.subType===6" label="正则表达式:" prop="subEqValue" class="discDesc">
-                <el-input type="textarea" rows="3" placeholder="请输入正则表达式" v-model="groupData.subEqValue"></el-input>
+            <el-form-item v-if="groupData.subType===6" label="正则表达式:" prop="subEqValue" class="discDesc is-required">
+                <el-input type="textarea" rows="3" placeholder="请输入正则表达式" v-model.trim="groupData.subEqValue"></el-input>
             </el-form-item>
         </el-form>
         <div class="inner-oper" v-if="showAdd">
@@ -132,6 +132,7 @@
             return {
                 baseTermTypeList:[],
                 typeList:[],
+                numTypes:'',    //只有数值类型的类型id
                 operMaxList:[
                     {name:'<=',key:'<='},
                     {name:'<',key:'<'},
@@ -178,8 +179,8 @@
                         validator: (rule,value,callback)=>{
                             const {subMaxOperator,subMinOperator,subMinValue}=this.groupData;
                             const val=value+subMaxOperator+subMinValue+subMinOperator;
-                            const isNum=/^\d+$/.test(value);
-                            if(!val){
+                            const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
+                            if(!val||(value==''&&subMaxOperator)){
                                 callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
                             }else if(value!==''&&!isNum){
                                 callback(new Error('只能输入数字'));
@@ -191,8 +192,8 @@
                         validator: (rule,value,callback)=>{
                             const {subMaxValue,subMinOperator,subMaxOperator}=this.groupData;
                             const val=value+subMaxOperator+subMaxValue+subMinOperator;
-                            const isNum=/^\d+$/.test(value);
-                            if(!val){
+                            const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
+                            if(!val||(value==''&&subMinOperator)){
                                 callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
                             }else if(value!==''&&!isNum){
                                 callback(new Error('只能输入数字'));
@@ -200,7 +201,16 @@
                                 callback();
                             }}, trigger: 'blur'
                     }],
-                    subEqValue:[{ required: true, message: '请输入'+this.groupData.subType===6?"正则表达式":"医学内容",trigger: ['blur'] }],
+                    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'
+                    }],
                 },
             }
         },
@@ -224,7 +234,7 @@
             },
             'firstPlace':{
                 handler:function(val) {
-                    if (!val) return;
+                    if (this.ind!==0||!val) return;
                     const dict = localStorage.getItem("zskDicts").match(new RegExp(val.checkedType+'-\\d+','g'))||[];
                     const types = dict[0].split("-");
                     const sub = this.baseTypes.find((it) => it.ruleType === +types[0] && it.type === +types[2]);
@@ -240,16 +250,26 @@
             }
         },
         created(){
+            this.numTypes = localStorage.getItem("zskNumDict");
             this.conceptList=[{conceptName:this.groupData.subLibName||this.groupData.subConceptName,conceptId:this.groupData.subConceptId}];
             if(this.groupData.subLenCode){
                 this.baseTermTypeList=[{name:this.groupData.subLenName,code:this.groupData.subLenCode}];
             }
         },
+        computed:{
+            showDataType:function(){
+               return (this.numTypes+',').indexOf(this.groupData.subLenCode+',')===-1;
+            },
+            textName:function(){
+                return this.groupData.subType!==6&&this.groupData.dataType==='2'?'医学内容':'正则表达式';
+            }
+        },
         methods:{
             dataTypeChange(val){
-                this.groupData.subEqOperator=val==='2'?'=':undefined;
                 this.groupData.dataType=val;
-                this.clearNumText();
+                this.groupData.subEqOperator=(val==='2'?'=':'');
+                this.clearNumText();console.log(322,this.groupData)
+                this.$emit("changeVal",this.groupData,this.ind);
             },
             subTypeChange(val){        //基础规则类型修改
                 this.groupData.subLenCode='';
@@ -265,7 +285,11 @@
             },
             subCodeChange(val){        //基础规则术语类型修改
                 this.groupData.subLenCode=val;
-                this.groupData.dataType='';
+                if((this.numTypes+',').indexOf(val+',')>-1){
+                    this.groupData.dataType='1';
+                }else{
+                    this.groupData.dataType='';
+                }
                 this.clearConcept();
                 this.clearNumText();
             },
@@ -411,6 +435,7 @@
         .el-form-item__error{
             top: auto;
             white-space: nowrap;
+            background: #fff;
         }
         .el-input-number{
             width: 95px;
@@ -420,5 +445,8 @@
             height: 15px;
             line-height: 16px;
         }
+        .el-col-3 {
+            width: 94px;
+        }
     }
 </style>