Просмотр исходного кода

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

zhouna 4 лет назад
Родитель
Сommit
e1f656c288

+ 1 - 1
src/api/config.js

@@ -1,5 +1,5 @@
 // const testUrl = 'http://223.93.170.82:23650'
-const testUrl = 'http://192.168.2.236:5050'
+const testUrl = ''
 
 export default {
   host: 'http://192.168.2.121:5050',

+ 1 - 1
src/api/index.js

@@ -4,7 +4,7 @@ import config from './config.js';
 axios.default.timeout = 500000;
 axios.defaults.headers.post['Content-Type'] = "application/json;charset=utf-8";
 // axios.defaults.baseURL = 'http://192.168.2.236';
-// axios.defaults.baseURL = 'http://192.168.2.241';
+axios.defaults.baseURL = 'http://192.168.2.241';
 // axios.defaults.baseURL = 'http://192.168.3.117:5050';
 
 const urls = config.urls;

+ 78 - 18
src/components/basicKnow/AddTerm.vue

@@ -231,7 +231,7 @@
             <td :colspan="colspan" class="addSpan">+</td>
           </tr>
         </table>
-        <div class="moreInfo" v-if="showMore==1">
+        <div class="moreInfo" v-if="showMore == 1">
           <p>更多信息:</p>
           <el-form label-width="150px">
             <el-form-item label="性别:">
@@ -244,6 +244,26 @@
               <span class="ageLine">~</span>
               <el-input v-model.number="maxAge" type="number" @input="inputAge"></el-input>
             </el-form-item>
+            <el-form-item
+              v-if="data.type=='实验室检查套餐'" label="最大值与最小值:" class="ages">
+              <el-input v-model.number="minValue" type="number" @input="inputAge"></el-input>
+              <span class="ageLine">~</span>
+              <el-input v-model.number="maxValue" type="number" @input="inputAge"></el-input>
+            </el-form-item>
+            <el-form-item v-if="data.type=='实验室检查套餐'" label="范围:" class="range">
+              <el-select v-model="rangeSelect">
+                <el-option v-for="(it,i) in range" :key="i" :label="it.name" :value="it.name"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item
+              v-if="data.type=='疾病'"
+              label="ICD10编码:"
+              prop="description"
+              class="marT description"
+            >
+              <span class="necess">*</span>
+              <el-input v-model.trim="icdCode" maxlength="7" placeholder="请输入编码"></el-input>
+            </el-form-item>
             <el-form-item label="科室:" v-if="dioType" class="marT">
               <el-select v-model="dept">
                 <!-- <el-option v-for="(it,i) in deptList" :label="it.name" :value="it.name"></el-option> -->
@@ -262,7 +282,7 @@
                 <el-option v-for="(it,i) in dioTypeList" :key="i" :label="it.name" :value="it.val"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item
+            <!-- <el-form-item
               v-if="data.type=='症状'"
               label="填写单患者界面展示通俗内容:"
               prop="description"
@@ -270,8 +290,8 @@
             >
               <span class="necess">*</span>
               <el-input v-model.trim="description" maxlength="7" placeholder="请输入填写单患者界面展示通俗内容"></el-input>
-            </el-form-item>
-            <el-form-item v-if="data.type=='症状'" label="医学教育说明:" prop="explains" class="marT">
+            </el-form-item> -->
+            <!-- <el-form-item v-if="data.type=='症状'" label="医学教育说明:" prop="explains" class="marT">
               <el-input
                 type="textarea"
                 v-model.trim="explains"
@@ -279,7 +299,7 @@
                 style="width: 500px;"
                 :rows="4"
               ></el-input>
-            </el-form-item>
+            </el-form-item> -->
           </el-form>
         </div>
         <div class="btn">
@@ -320,8 +340,12 @@ export default {
       show: false,
       tmpSynonymous: [],
       sexType: '通用',
+      rangeSelect: '内',
       maxAge: 200,
       minAge: 0,
+      maxValue: null,
+      minValue: null,
+      icdCode:'',
       showMore: '',
       sex: [
         {
@@ -337,6 +361,16 @@ export default {
           value: 2
         }
       ],
+      range: [
+        {
+          name: '内',
+          value: 1
+        },
+        {
+          name: '外',
+          value: 2
+        }
+      ],
       unfit: false, //点确认时是否弹提示,
       saveDisable: false, //保存按钮禁止点击
       options: [],
@@ -490,9 +524,13 @@ export default {
             this.singleword = redata.libName;
             this.synonymous = redata.otherNames;
             this.allwords = redata.libName.concat(redata.otherNames);
-            this.showMore = redata.isHasCommon;
+            this.showMore = redata.isHasCommon; //是否支持通用扩展
             this.maxAge = redata.maxAge;
             this.minAge = redata.minAge;
+            this.maxValue = redata.maxVal;
+            this.minValue = redata.minVal;
+            this.rangeSelect = redata.scopeType == '1'?'外':'内'
+            this.icdCode = redata.icdCode;
             this.description = redata.description;
             this.explains = redata.explains;
             const type = redata.type;
@@ -715,7 +753,6 @@ export default {
           this.allwords.splice(index, 1);
         }
       } else {
-        console.log(2222)
         this.synonymous.splice(index, 1);
       }
     },
@@ -725,7 +762,7 @@ export default {
         this.warning('请输入标准词');
         return;
       }
-      if (!this.data.type && !this.unfit) {
+      if (!this.data.code && !this.unfit) {
         this.warning('请选择术语类型');
         return;
       }
@@ -789,6 +826,14 @@ export default {
       }
       // 校验是否有名称全为数字
       const pattern = /[^0-9]/g;
+      const tmpData = this.data.name
+      if(tmpData&&!tmpData.match(pattern)){
+          this.$message({
+            message: '无法输入纯数字,请输入正确数据!',
+            type: 'warning'
+          });
+          return false;
+      }
       for (let d = 0; d < detailList.length; d++) {
         let dname = detailList[d].name;
         // if(detailList[d].name && !pattern.test(detailList[d].name)){
@@ -805,10 +850,10 @@ export default {
           break;
         }
       }
-      if (this.data.type == '症状' && !this.description) {
-        this.warning('请输入填写单患者界面展示通俗内容');
-        return;
-      }
+      // if (this.data.type == '症状' && !this.description) {
+      //   this.warning('请输入填写单患者界面展示通俗内容');
+      //   return;
+      // }
       let params,sexCode=null;
       if (this.showMore == 1) {// 下拉文字转code
         this.sex.map((v, i) => {
@@ -823,15 +868,19 @@ export default {
           remark: this.data.remark,
           spell: this.data.spell,
           status: this.data.status||1,
-          libType: this.data.typeId,
-          typeId:this.data.typeId,
+          libType: this.data.typeId||this.data.code,
+          // typeId:this.data.typeId,
           synonymName: this.data.synonymName,
-          isHasCommon: this.data.isHasCommon,
+          isHasCommon: 1,
           libId: this.data.libId,
           klConceptSub:detailList,
           sexType:sexCode,
+          scopeType:this.rangeSelect == '外'?'1':'0',
           maxAge:this.maxAge,
-          minAge:this.minAge
+          minAge:this.minAge,
+          maxVal:this.maxValue,
+          minVal:this.minValue,
+          icdCode:this.icdCode||undefined
         }
       }else{
         params = {
@@ -840,15 +889,23 @@ export default {
           libName: this.data.name,
           remark: this.data.remark,
           spell: this.data.spell,
+          status: this.data.status||1,
           libType: this.data.typeId||this.data.code,
-          typeId:this.data.typeId||this.data.code,
+          // typeId:this.data.typeId||this.data.code,
           libId: this.data.libId,
-          status: this.data.status||1,
+          sexType:sexCode,
+          maxAge:this.maxAge,
+          minAge:this.minAge,
+          maxVal:this.maxValue,
+          minVal:this.minValue,
+          icdCode: this.icdCode||undefined,
+          scopeType:this.rangeSelect == '外'?1:0,
           isHasCommon: this.data.isHasCommon||0,
           synonymName: '',
           klConceptSub: detailList||[],
         };
       }
+      // console.log(this.data)
       // return false
       this.saveDisable = true; //提交保存按钮不可点击,返回结果时才可点击,防止频繁发送请求
       api.saveBaseConceptInfo(params).then(res => {
@@ -926,6 +983,9 @@ td {
     }
   }
 }
+.range {
+  margin-top: 20px;
+}
 .el-select-group__wrap::after {
   background: #fff !important;
 }

+ 7 - 4
src/components/basicKnow/SearchList.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="conceptSearch" ref="conceptSearch">
+  <div class="conceptSearch" :style="{'top':top?top:'200px'}" ref="conceptSearch">
     <h4  class="conceptTitle">术语(概念ID)搜索</h4>
     <img class="closeSearch" src="../../images/close-icon.png" @click="closeSearch" alt="">
     <p class="searchWrap">
@@ -22,7 +22,7 @@
 import api from '@api/knowledgeTree.js';
 
 export default {
-  props:['conceptList','addLevel'],
+  props:['conceptList','addLevel','top'],
   data(){
     return {
       conceptText: '',
@@ -38,13 +38,16 @@ export default {
       deep: true
     }
   },
+  destroyed(){
+    this.$emit('searchConcept','')
+  },
   methods:{
     closeSearch() {
       this.$emit('closeSearch')
     },
     selectConcept(item) {
-      this.$emit('selectConcept',item)
-      this.$emit('closeSearch')
+      this.$emit('selectConcept',{item,txt:this.conceptText})
+      // this.$emit('closeSearch')
     },
     searchConcept() {
       this.$emit('searchConcept',this.conceptText)

+ 1 - 2
src/components/cdssManage/plan/AddPlan.vue

@@ -33,7 +33,7 @@
                 <el-input v-model="form.planName" placeholder="2-30位,可输入汉字、字母、数字和下划线"></el-input>
               </el-form-item>
               <el-form-item label="方案编码" prop="planCode">
-                <el-input v-model="form.planCode" placeholder="4-15位,可输入字母、数字和下划线"></el-input>
+                <el-input v-model="form.planCode" placeholder="可输入字母、数字和下划线"></el-input>
               </el-form-item>
               <el-form-item label="方案配置">
                 <ul>
@@ -208,7 +208,6 @@ export default {
         ],
         planCode: [
           { required: true, message: '方案编码不能为空', trigger: 'change' },
-          { min: 4, max: 15, message: '长度4-15位', trigger: 'blur' },
           { required: true, validator: validatePass1, trigger: 'blur' }
         ]
       },

+ 12 - 4
src/components/knowledgeExtra/DiseaseTree.vue

@@ -55,10 +55,12 @@
         </div>
       </div>
     </div>
+    <div class="btmFix"></div>
     <SearchList 
       v-if="showSearch" 
       :conceptList="conceptList||[]" 
       :addLevel="addLevel"
+      top="120px"
       @closeSearch="closeSearch" 
       @selectConcept="selectConcept" 
       @searchConcept="searchConcept" />
@@ -239,7 +241,7 @@ export default {
         api.diseaseBaseSave(this.reparams(param)).then((res) => {
           const { data } = res
           if(data.code == '0') {
-            this.message(res.data.msg||'术语关系建立成功','success');
+            this.message(res.data.msg||'保存成功','success');
             this.$router.push({
               name: 'AboutDisease',
               params: Object.assign({}, this.$route.params, { currentPage: 1 })
@@ -275,6 +277,10 @@ export default {
       },
       searchConcept(txt) {
         let  excludedConceptIds = [];
+        if(!txt){
+          this.conceptList = []
+          return
+        }
         if(this.list.length>0) {
           this.excludedConceptIds = this.IteraNodeList(this.list[0].nodeList,excludedConceptIds, 2)
         }
@@ -292,7 +298,8 @@ export default {
           }
         })
       },
-      selectConcept(item) {
+      selectConcept(data) {
+        const {item,txt} = data
         if(this.addLevel == 0) {
           let temp = JSON.parse(JSON.stringify(this.template))
           temp.conceptId = item.conceptId
@@ -308,7 +315,8 @@ export default {
           data.nodeList.push(newChild);
         }
         this.conceptList = [];
-        this.closeSearch();
+        this.searchConcept(txt)
+        // this.closeSearch();
       },
       openSearch(e) {
         this.showSearch = true
@@ -471,7 +479,7 @@ export default {
 }
 
 .btn {
-  text-align: right;
+  text-align: center;
   margin-top: 20px;
 }
 .custom-tree-node-name {

+ 18 - 7
src/components/knowledgeExtra/KnowledgeAll.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="addMedicalMultRelationWrapper">
-    <crumbs :title="minTitle" fix="fixed" linkTo="MedicalMultRelation"></crumbs>
+    <crumbs :title="minTitle" fix="fixed" linkTo=""></crumbs>
     <TreeTab @getTreeList="getTreeList" />
     <div class="contents">
       <div class="content">
@@ -56,6 +56,7 @@
         </div>
       </div>
     </div>
+    <div class="btmFix"></div>
     <SearchList 
       v-if="showSearch" 
       :conceptList="conceptList" 
@@ -110,6 +111,10 @@ export default {
     },
     methods:{
       getTreeList(id){
+        if(id != this.id){
+          this.id = id
+          this.showSearch = false
+        }
         const params = {
           "type": id,
         }
@@ -176,7 +181,7 @@ export default {
         api.addTreeRelation(this.reparams(param)).then((res) => {
           const { data } = res
           if(data.code == '0') {
-            this.message(res.data.msg||'术语关系建立成功','success');
+            this.message(res.data.msg||'保存成功','success');
           } else {
             this.message(data.msg);
           }
@@ -210,6 +215,10 @@ export default {
       },
       searchConcept(txt) {
         let  excludedConceptIds = [];
+        if(!txt){
+          this.conceptList = []
+          return
+        }
         if(this.list[0]) {
           excludedConceptIds.push(this.list[0].conceptId)
           this.excludedConceptIds = this.IteraNodeList(this.list[0].nodeList,excludedConceptIds, 2)
@@ -228,11 +237,12 @@ export default {
           }
         })
       },
-      selectConcept(item) {
+      selectConcept(data) {
+        const {item,txt} = data
         if(this.addLevel == 0) {
           this.list.push(Object.assign({}, item,  {nodeList: [], level: 0, conceptId: item.conceptId, sonRelationId: 17}))
           this.list = JSON.parse(JSON.stringify(this.list))
-        }else {
+        }else { 
           const data = this.operaList
           const newChild = Object.assign({}, item,  {nodeList: [], level: data.level+1, conceptId: item.conceptId, relationId: 17,sonRelationId: 17});
           // const newChild = { id: id++, label: 'nodeList', level: data.level+1, children: [] };
@@ -242,7 +252,8 @@ export default {
           data.nodeList.push(newChild);
         }
         this.conceptList = [];
-        this.closeSearch();
+        this.searchConcept(txt)
+        // this.closeSearch();
       },
       openSearch(e) {
         this.showSearch = true
@@ -335,7 +346,7 @@ export default {
   color: #8F8F8F;
   padding-left: 28px;
 }
-.addBtn {
+.addBtn { 
   width: 66px;
   order: 1px solid #21CBC7;
   border-radius: 2px;
@@ -408,7 +419,7 @@ export default {
 }
 
 .btn {
-  text-align: right;
+  text-align: center;
   margin-top: 20px;
 }
 .custom-tree-node-name {

+ 5 - 4
src/components/knowledgeExtra/StaticInfo.vue

@@ -38,7 +38,7 @@
                 </el-table-column>
                 <el-table-column
                         prop="typeName"
-                        label="标准术语归"
+                        label="标准术语归"
                         width="120">
                 </el-table-column>
                 <el-table-column
@@ -272,15 +272,16 @@
       showConfirmDialog(msg,resolve){
         this.$confirm(msg, '提示', {
           confirmButtonText: '确定',
-          cancelButtonText: '取消',
-          cancelButtonClass:'cancel',
+          showCancelButton:false,
+          // cancelButtonText: '取消',
+          // cancelButtonClass:'cancel',
           type: 'warning'
         }).then(() => {
           resolve();
         }).catch(() => {});
       },
       showDelDialog(row){
-        this.showConfirmDialog('是否删除该静态知识?',()=>{
+        this.showConfirmDialog('是否禁用该静态知识?',()=>{
           api.changeBaseStatus({id:row.id,status:0}).then((res)=>{
             if(res.data.code=='0'){
               if(!this.searched){

+ 8 - 0
src/less/common.less

@@ -201,3 +201,11 @@
 }
 
 
+.btmFix {
+  position: fixed;
+  width: 100%;
+  height:10px;
+  left: 280px;
+  bottom: 0;
+  background-color: #dee2ea;
+}