Jelajahi Sumber

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

zhouna 5 tahun lalu
induk
melakukan
c1d304a238

+ 92 - 21
src/components/diagBase/AddDiagBase.vue

@@ -22,12 +22,13 @@
                     </li>
                 </ul>
             </el-form-item>
-             <el-form-item class="isRequired" label="已选添加疾病名称:">
+             <el-form-item class="isRequired" label="已选添加疾病名称:" :class="{colorRed: !disNameExist}">
                 {{disName}}
             </el-form-item>
         </el-form>
         <div class="symptomList">
             <p class="moduleTitle">疾病特征:</p>
+            <p class="inpTips">序号输入规则“序号+.”后可输入的范围0~99;标准词只能有一个词;化验类型关联只能出现一个词,其他类型可以输入多个词;化验类型可输入结果列,其他类型不可输入</p>
             <table class="diagTable">
                 <tr class="tableTitle">
                     <td class="FeatureSort">排序</td> 
@@ -72,7 +73,7 @@
                 </tr>
             </table>
             <p class="moduleTitle">诊断公式:</p>
-            <p class="inpTips">可输入数字(0~9)规定汉字:任、一、二、三、四、五、六、七、八、九、十,其余汉字不可输入;可输入的符号:“.”、“/”、“()”</p>
+            <p class="inpTips">可输入数字(0~9);可输入规定汉字:任、一、二、三、四、五、六、七、八、九、十,其余汉字不可输入;可输入的符号:“.”、“/”、“()”  “+”;确诊还可输入“拟、诊”二字;鉴别诊断的序号不可输入公式中,数据放入后该条件无效;</p>
             <table class="diagTable">
                 <tr class="tableTitle"> 
                     <td class="FormulaSort">排序</td> 
@@ -89,7 +90,7 @@
                     </td>
                     <td class="FormulaNumber">
                         <el-tooltip :disabled="!item.verifyFormula"  class="item" effect="dark" :content="item.verifyFormula" placement="top">
-                            <input class="groupInput" :class="{borderRed:item.verifyFormula}" :title="item.formula" type="text" v-model.trim="item.formula" @input="handleInp(index,$event,'FormulaNumber')"  @click="clickItem(index,'FormulaNumber')">
+                            <input class="groupInput" :readonly="!item.type" :class="{borderRed:item.verifyFormula,inpDisabled:!item.type}" :title="item.formula" type="text" v-model.trim="item.formula" @input="handleInp(index,$event,'FormulaNumber',item.type)"  @click="clickItem(index,'FormulaNumber')">
                         </el-tooltip> 
                     </td>
                    <td class="FeatureOpera">
@@ -106,6 +107,7 @@
                      <div class="btnBox">
                          <el-button
                                 type="primary"
+                                :disabled = "isReady"
                                 @click="submitForm('save')"
                                 >校验并保存数据</el-button>
                             <el-button
@@ -170,6 +172,8 @@
             isEdit: false,
             saveDisable: false ,
             hasQuestion: 1, //是否有问题词
+            disNameExist: true, //诊断名称是否存在
+            isReady:false
         }
     },
     created(){
@@ -183,6 +187,7 @@
                 this.titleText = '修改';
                 this.disName = data.disName
                 this.id = data.id
+                this.disNameExist = data.disNameExist
                 if(data.disFeature.length) {
                     this.disFeatureList = data.disFeature
                 }   
@@ -306,7 +311,7 @@
                         diagnoseId: this.id
                     }
                     api.exportDiagnosticAll(param).then((res) => {
-                        utils.downloadExportedData(res.data,'诊断依据');
+                        utils.downloadExportedData(res.data,'诊断依据.xls');
                     })
                 }else {
                     this.warning('导出失败');
@@ -364,18 +369,65 @@
                     const errStr = "第" + (i+ 1) +"行必填项未填写"
                     errStrList.push(errStr)
                 }
+                let regex =new RegExp(`^${disFeatureList[i].type}\\.(0|[1-9]\\d?)$`,) 
+                if(disFeatureList[i].code &&!regex.test(disFeatureList[i].code)) {  //序号和类型不匹配
+                    codeErrorNum++
+                    disFeatureList[i].codeError = "序号和类型不匹配"
+                    const errStr = "疾病特征第" + (i+ 1) +"行序号和类型不匹配"
+                    errStrList.push(errStr)
+                } else { //序号和类型匹配但序号重复
+                    let codeArr =  disFeatureList.filter(item => item.code ===disFeatureList[i].code) 
+                    if(codeArr.length > 1) {
+                        codeErrorNum++
+                        disFeatureList[i].codeError = "序号重复"
+                        const errStr = "疾病特征第" + (i+ 1) +"行序号重复"
+                        errStrList.push(errStr)
+
+                    }
+                }
                 if(disFeatureList[i].type == '3' && disFeatureList[i].result && !disFeatureList[i].relation) {
                      disFeatureList[i].relationNull = "未填写关联词"
                      const errStr = "第" + (i+ 1) +"行化验项数据填写不完整"
                     errStrList.push(errStr)
                 }
-                let regex =new RegExp(`${disFeatureList[i].type}\\.[1-9]\\d?`) 
-                if(disFeatureList[i].code &&!regex.test(disFeatureList[i].code)) {
-                    codeErrorNum++
-                    disFeatureList[i].codeError = "序号和类型不匹配"
-                    const errStr = "疾病特征第" + (i+ 1) +"行序号和类型不匹配"
+               
+                if(disFeatureList[i].type == '3' && !disFeatureList[i].result ) { //化验项下面诊断公式如果有用到,判断是否填写结果项
+                    const regex2 = new RegExp(`(?<=\\D|\\s?)${disFeatureList[i].code}(?=\\D|\\s?)`)
+                    //  const regex2 = new RegExp(`、\\s*、{1,}`) 
+                    //  const regex2 = new RegExp(`([^0-9]|\\s{0,1})${disFeatureList[i].code}([^0-9]|\\s{0,1})`)
+                    console.log(disFormulaList)
+                    let hasError = disFormulaList.find(item => {return regex2.test(item.formula)})
+                    if(hasError) {
+                        if(!disFeatureList[i].relation) {
+                            disFeatureList[i].verifyRelation = "数据异常"
+                        }
+                        disFeatureList[i].verifyResult = "数据异常"
+                        const errStr = "第" + (i+ 1) +"行化验项数据异常"
+                        errStrList.push(errStr)
+                    }
+                }
+                 if(disFeatureList[i].type == '4' && !disFeatureList[i].relation ) { //辅检项下面诊断公式如果有用到,判断是否填写结果项(辅检结果是填在关联词列)
+                    const regex2 = new RegExp(`(?<=\\D|\\s?)${disFeatureList[i].code}(?=\\D|\\s?)`)
+                    let hasError = disFormulaList.find(item => {return regex2.test(item.formula)})
+                  
+                    if(hasError) {
+                        disFeatureList[i].verifyRelation = "数据异常"
+                        const errStr = "第" + (i+ 1) +"行辅捡项数据异常"
+                        errStrList.push(errStr)
+                    }
+                }
+                let regex1 =new RegExp(`、\\s*、{1,}`) 
+                if(disFeatureList[i].relation &&regex1.test(disFeatureList[i].relation)) { //不能输入连续的、
+                    disFeatureList[i].verifyRelation ='数据异常'
+                    const errStr = "疾病特征第" + (i+ 1) +"行数据异常"
                     errStrList.push(errStr)
-                } 
+                }
+                if(disFeatureList[i].result &&regex1.test(disFeatureList[i].result)) {
+                    disFeatureList[i].verifyResult ='数据异常'
+                    const errStr = "疾病特征第" + (i+ 1) +"行数据异常"
+                    errStrList.push(errStr)
+                }
+                
                 
             }
             this.disFeatureList = JSON.parse(JSON.stringify(disFeatureList))
@@ -387,10 +439,21 @@
                        const errStr = "诊断公式第" + (i+ 1) +"行诊断公式不能为空"
                        errStrList.push(errStr)
                    } else if(disFormulaList[i].formula&&!disFormulaList[i].type) {
-                       disFormulaList[i].verifyType = "诊断类型不能为空"
+                        disFormulaList[i].verifyType = "诊断类型不能为空"
                         const errStr = "诊断公式第" + (i+ 1) +"行诊断类型不能为空"
-                       errStrList.push(errStr)
-                       formulaListErrNum++;
+                        errStrList.push(errStr)
+                        formulaListErrNum++;
+                   }
+                   if(disFormulaList[i].type == 91 && disFormulaList[i].formula.indexOf("拟诊") > -1) { //确诊项如果有拟诊这两个字,判断公式列表中有没有拟诊这项
+                       const noError = disFormulaList.filter(item => item.type == 92).length > 0
+                       if(!noError) {
+                           disFormulaList[i].verifyFormula = "公式格式错误"
+                            const errStr = "诊断公式第" + (i+ 1) +"行公式格式错误"
+                            errStrList.push(errStr)
+                            formulaListErrNum++;
+                       } else {
+                            disFormulaList[i].verifyFormula = ""
+                       }
                    }
             }
             if(disFormulaList.length) {
@@ -427,17 +490,20 @@
                 id: this.id,
                 modifier: this.modifier
             }
+            this.isReady = true
             return api.diagBaseVerifyData(param).then((res) => {
                 const data = res.data.data
+                this.isReady=false
                 if(type =='save') {
                     if(data.hasQuestion) {
-                        this.warning('校验完成请先调整问题词,该数据已保存')
+                        this.warning('校验完成请先调整错误数据,该数据已保存')
                     } else {
                         this.warning('校验成功', 'success')
                     }
                 }
                 
                 this.id = data.id
+                this.disNameExist = data.disNameExist
                 this.disFeatureList = data.disFeature
                 if(data.disformula.length) {
                     this.disFormulaList = data.disformula
@@ -455,7 +521,7 @@
                 }  
                 this.hasQuestion = data.hasQuestion
                 
-            })
+            }).catch(()=>{this.isReady=false})
         },
         
         showConfirmDialog(msg, resolve) {
@@ -481,8 +547,13 @@
             } else if(type==='FeatureStand') {  //关联词不能输入顿号
                 this.disFeatureList[index].standard = value.replace(/、/g,'')
             } else if ( type === 'FormulaNumber') {
-                //计算公式只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、0-9、/、.、(、)、(、)
-                this.disFormulaList[index].formula =  value.replace(/[^\u4EFB\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u53410-9\/\.+\(\)\(\)]/g,'').replace(/[\(]/g, '(').replace(/[\)]/g, ')').replace(/' '/g, '')
+                //计算公式确诊只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、拟、诊、0-9、/、.、(、)、(、)
+                if(itemType == 91) {
+                    this.disFormulaList[index].formula =  value.replace(/[^\u4EFB\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u5341\u62df\u8bca0-9\/\.+\(\)\(\)]/g,'').replace(/[\(]/g, '(').replace(/[\)]/g, ')').replace(/' '/g, '')
+                } else {    //计算公式其他只能输入以下内容: 任、一、二、三、四、五、六、七、八、九、十、0-9、/、.、(、)、(、)
+                    this.disFormulaList[index].formula =  value.replace(/[^\u4EFB\u4E00\u4E8C\u4E09\u56DB\u4E94\u516D\u4E03\u516B\u4E5D\u53410-9\/\.+\(\)\(\)]/g,'').replace(/[\(]/g, '(').replace(/[\)]/g, ')').replace(/' '/g, '')
+                    
+                }
             } else if ( type === 'FeatureRelate') {
                 if(itemType == 3) {
                     this.disFeatureList[index].relation = value.replace(/、/g,'')
@@ -522,6 +593,7 @@
                     return this.disFeatureList = JSON.parse(JSON.stringify(this.disFeatureList))
                 case 'FormulaType':
                      this.disFormulaList[index].verifyType =''
+                     this.disFormulaList[index].formula =''
                     return this.disFormulaList = JSON.parse(JSON.stringify(this.disFormulaList))
                 case 'FormulaNumber':
                     this.disFormulaList[index].verifyFormula =''
@@ -538,7 +610,6 @@
     }
   }
 </script>
-
 <style lang="less">
     @import '../../less/common.less';
     .AddDiagBaseWrapper {
@@ -670,7 +741,7 @@
             color: red;
         }
         .borderRed {
-            border: 1px solid red !important;
+            border: 3px solid red ;
         }
         .colorRed {
             color: red;
@@ -727,10 +798,10 @@
                 }
         .selectType {
             input {
-                border: 1px solid red;
+                border: 3px solid red;
             }
             input:hover {
-                border: 1px solid red;
+                border: 3px solid red;
             }
         }
         .moduleTitle {

+ 7 - 1
src/components/diagBase/DiagBase.vue

@@ -123,6 +123,7 @@ export default {
         }
     },
     created() {
+      
         this.$nextTick(()=>{
           this.getDropList()
           this.getDataList()
@@ -155,7 +156,9 @@ export default {
         },
         getDataList(isTurnPage) {
             const param = this.getFilterItems(isTurnPage);
-            this.searched = true;
+            setTimeout(()=>{
+              this.searched = true;
+            },0)
             api.diagBasePage(param).then((res) => {
                 this.list = res.data.data.records
                 this.total = res.data.data.total;
@@ -301,6 +304,9 @@ export default {
 
 <style lang="less">
     @import "../../less/admin.less";
+    .el-form--inline .el-form-item__content {
+      vertical-align: text-bottom;
+    }
     .delete{
        color: red;
     }

+ 2 - 1
src/components/icss/IndeptLabel.vue

@@ -267,7 +267,8 @@
       warning(msg,type){
         this.$message({
           showClose: true,
-          message:msg,
+          dangerouslyUseHTMLString: true,
+          message:'<p>'+msg+'</p>',
           type:type||'warning'
         })
       },

+ 8 - 7
src/components/icss/LabelGroup.vue

@@ -137,12 +137,12 @@ export default {
         
     },
   watch: {
-    'filter': {
-      handler: function () {
-        this.searched = false;
-      },
-      deep: true
-    }
+      'filter': {
+        handler: function () {
+          this.searched = false;
+        },
+        deep: true
+      }
   },
   beforeRouteEnter(to, from, next) {
     next(vm => {
@@ -267,7 +267,8 @@ export default {
         warning(msg,type){
           this.$message({
             showClose: true,
-            message:msg,
+            dangerouslyUseHTMLString: true,
+            message:'<p>'+msg+'</p>',
             type:type||'warning'
           })
         },

+ 2 - 2
vue.config.js

@@ -1,7 +1,7 @@
 const path = require('path');
 // const proxy_path = 'http://192.168.2.236:80';
-// const proxy_path = 'http://192.168.2.241:88';
-const proxy_path = 'http://192.168.2.236:88';
+const proxy_path = 'http://192.168.2.241:88';
+// const proxy_path = 'http://192.168.2.236:88';
 // const proxy_path = 'http://192.168.3.101:5050';
 // const proxy_path = 'http://192.168.3.117:5050';//周铁刚
 // const proxy_path = 'http://192.168.3.115:5050';