Parcourir la source

Merge remote-tracking branch 'origin/test'

zhouna il y a 4 ans
Parent
commit
07d37c0840

+ 30 - 0
src/api/cdss.js

@@ -1,6 +1,17 @@
 import axios from 'axios';
 import config from '@api/config.js';
 const urls = config.urls;
+function request(config) {
+  const instance = axios.create({
+    baseURL: "http://192.168.2.241:7010",
+    timeout: 500000,
+    headers: {
+      'Content-Type': "application/json;charset=utf-8"
+    }
+  })
+  return instance(config)
+}
+
 export default {
   getTremList(param) {
     return axios.post(urls.getConceptKnowledgeCDSS, param);
@@ -400,4 +411,23 @@ export default {
   dataDiseaseVerify(param) {
     return axios.post(urls.dataDiseaseVerify, param);
   },
+
+  getEntityPageCDSS(param) {
+    return request({ method: 'post', url: urls.getEntityPageCDSS, data: param });
+  },
+  isEntitymanExistCDSS(param) {
+    return request({ method: 'post', url: urls.isEntitymanExistCDSS, data: param });
+  },
+  saveEntity(param) {
+    return request({ method: 'post', url: urls.saveEntity, data: param });
+  },
+  getEntitymanById(param) {
+    return request({ method: 'post', url: urls.getEntitymanById, data: param });
+  },
+  dataEntityVerify(param) {
+    return request({ method: 'post', url: urls.dataEntityVerify, data: param });
+  },
+  BatchUpdateHasInfoStatus(param) {
+    return request({ method: 'post', url: urls.BatchUpdateHasInfoStatus, data: param });
+  },
 };

+ 30 - 25
src/api/config.js

@@ -297,7 +297,7 @@ export default {
     'getQCTemplist': testUrl + '/api/mrman/qc/qcModuleInfo/page', // 获取模板列表
     'saveOrUpdateQCTemp': '/api/mrman/qc/qcModuleInfo/saveOrUpdateModuleInfo', //新增或修改模板
     'delQCTemp': '/api/mrman/qc/qcModuleInfo/delete', //删除模板
-    'getQCTempDetail':testUrl +  '/api/mrman/qc/qcModuleInfo/getById', //获取模板详情
+    'getQCTempDetail': testUrl + '/api/mrman/qc/qcModuleInfo/getById', //获取模板详情
     'getQCName': '/api/mrman/qc/qcQuestionInfo/index', //获取字段名称
     'getQcFlawList': '/api/mrman/qcCasesEntry/indexCaseEntry',   //获取缺陷列表
     'getModuleTypeList': '/api/mrman/qc/qcModuleInfo/index', //获取模块类型列表
@@ -325,8 +325,8 @@ export default {
     'getQcEntryTypeDetail': testUrl + '/api/mrman/qc/qcEntryType/getById', //质控条目与质控类型关系--根据entryId和医院id返回内容
     'getQcEntryTypeByHospital': testUrl + '/api/mrman/qc/qcEntryType/getTypeByHospital', //质控条目与质控类型关系--根据医院获取质控类型列表
     'getQcEntryTypeIndex': testUrl + '/api/mrman/qc/qcEntryType/index', //质控条目与质控类型关系--根据医院和条目检索未被选择的质控类型
-    'ifNeedUnbind':testUrl + '/api/mrman/qc/qcType/getOrCancel',   //判断质控类型是否已被绑定、解除绑定
-    'qcTypeList':testUrl + '/api/mrman/qc/qcType/indexData',    //其他质控类型列表
+    'ifNeedUnbind': testUrl + '/api/mrman/qc/qcType/getOrCancel',   //判断质控类型是否已被绑定、解除绑定
+    'qcTypeList': testUrl + '/api/mrman/qc/qcType/indexData',    //其他质控类型列表
     'saveQcEntryType': '/api/mrman/qc/qcEntryType/saveOrUpdate', //质控条目与质控类型关系--保存
     'getStdList': '/api/mrman/stdBehospitalInfo/getSthospitalInfoPage',//标准病例列表
     'delStdRecord': '/api/mrman/stdBehospitalInfo/clearSthospitalInfo',//删除标准病例
@@ -371,9 +371,9 @@ export default {
     'deleteDiseaseRecordCDSS': '/api/cdssman/tran/diseaseConfig/deleteRecord',   //诊断-删除映射关系
     'exportDiseaseRecordCDSS': '/api/cdssman/tran/diseaseConfig/exportExcel',   //诊断-数据导出
     'importDiseaseRecordCDSS': '/api/cdssman/tran/diseaseConfig/importExcel',   //诊断-数据导入
-    'exportDiseaseModuleCDSS': '/api/cdssman/tran/diseaseConfig/exportExcelModule',   
-    'precDiseaseDataMatch': '/api/cdssman/tran/diseaseConfig/precDataMatch',   
-    'dataDiseaseVerify': '/api/cdssman/tran/diseaseConfig/dataVerify',   
+    'exportDiseaseModuleCDSS': '/api/cdssman/tran/diseaseConfig/exportExcelModule',
+    'precDiseaseDataMatch': '/api/cdssman/tran/diseaseConfig/precDataMatch',
+    'dataDiseaseVerify': '/api/cdssman/tran/diseaseConfig/dataVerify',
 
     'getLisPageCDSS': '/api/cdssman/tran/lisConfig/getPage',   //检验列表
     'lisIsExistRecordCDSS': '/api/cdssman/tran/lisConfig/isExistRecord',   //检验-映射关系是否已存在
@@ -381,9 +381,9 @@ export default {
     'deleteLisRecordCDSS': '/api/cdssman/tran/lisConfig/deleteRecord',   //检验-删除映射关系
     'exportLisRecordCDSS': '/api/cdssman/tran/lisConfig/exportExcel',   //检验-数据导出
     'importLisRecordCDSS': '/api/cdssman/tran/lisConfig/importExcel',   //检验-数据导入
-    'exportLisModuleCDSS': '/api/cdssman/tran/lisConfig/exportExcelModule',   
-    'precLisDataMatch': '/api/cdssman/tran/lisConfig/precDataMatch',   
-    'dataLisVerify': '/api/cdssman/tran/lisConfig/dataVerify',   
+    'exportLisModuleCDSS': '/api/cdssman/tran/lisConfig/exportExcelModule',
+    'precLisDataMatch': '/api/cdssman/tran/lisConfig/precDataMatch',
+    'dataLisVerify': '/api/cdssman/tran/lisConfig/dataVerify',
 
     'getpacsPageCDSS': '/api/cdssman/tran/pacsConfig/getPage',   //检查列表
     'pacsIsExistRecordCDSS': '/api/cdssman/tran/pacsConfig/isExistRecord',   //检查-映射关系是否已存在
@@ -391,9 +391,9 @@ export default {
     'deletePacsRecordCDSS': '/api/cdssman/tran/pacsConfig/deleteRecord',   //检查-删除映射关系
     'exportPacsRecordCDSS': '/api/cdssman/tran/pacsConfig/exportExcel',   //检查-数据导出
     'importPacsRecordCDSS': '/api/cdssman/tran/pacsConfig/importExcel',   //检查-数据导入
-    'exportPacsModuleCDSS': '/api/cdssman/tran/pacsConfig/exportExcelModule', 
-    'precPacsDataMatch': '/api/cdssman/tran/pacsConfig/precDataMatch', 
-    'dataPacsVerify': '/api/cdssman/tran/pacsConfig/dataVerify', 
+    'exportPacsModuleCDSS': '/api/cdssman/tran/pacsConfig/exportExcelModule',
+    'precPacsDataMatch': '/api/cdssman/tran/pacsConfig/precDataMatch',
+    'dataPacsVerify': '/api/cdssman/tran/pacsConfig/dataVerify',
 
     'getDrugPageCDSS': '/api/cdssman/tran/drugConfig/getPage',   //药品列表
     'drugIsExistRecordCDSS': '/api/cdssman/tran/drugConfig/isExistRecord',   //药品-映射关系是否已存在
@@ -401,9 +401,9 @@ export default {
     'deleteDrugRecordCDSS': '/api/cdssman/tran/drugConfig/deleteRecord',   //药品-删除映射关系
     'exportDrugRecordCDSS': '/api/cdssman/tran/drugConfig/exportExcel',   //药品-数据导出
     'importDrugRecordCDSS': '/api/cdssman/tran/drugConfig/importExcel',   //药品-数据导入
-    'exportDrugModuleCDSS': '/api/cdssman/tran/drugConfig/exportExcelModule',   
-    'precDrugDataMatch': '/api/cdssman/tran/drugConfig/precDataMatch',  
-    'dataDrugVerify': '/api/cdssman/tran/drugConfig/dataVerify',  
+    'exportDrugModuleCDSS': '/api/cdssman/tran/drugConfig/exportExcelModule',
+    'precDrugDataMatch': '/api/cdssman/tran/drugConfig/precDataMatch',
+    'dataDrugVerify': '/api/cdssman/tran/drugConfig/dataVerify',
 
     'getOperationPageCDSS': '/api/cdssman/tran/operationConfig/getPage',   //手术/操作列表
     'operationIsExistRecordCDSS': '/api/cdssman/tran/operationConfig/isExistRecord',   //手术/操作-映射关系是否已存在
@@ -411,9 +411,9 @@ export default {
     'deleteOperationRecordCDSS': '/api/cdssman/tran/operationConfig/deleteRecord',   //手术/操作-删除映射关系
     'exportOperationRecordCDSS': '/api/cdssman/tran/operationConfig/exportExcel',   //手术/操作-数据导出
     'importOperationRecordCDSS': '/api/cdssman/tran/operationConfig/importExcel',   //手术/操作-数据导入
-    'exportOperationModuleCDSS': '/api/cdssman/tran/operationConfig/exportExcelModule', 
-    'precOperationDataMatch': '/api/cdssman/tran/operationConfig/precDataMatch', 
-    'dataOperationVerify': '/api/cdssman/tran/operationConfig/dataVerify', 
+    'exportOperationModuleCDSS': '/api/cdssman/tran/operationConfig/exportExcelModule',
+    'precOperationDataMatch': '/api/cdssman/tran/operationConfig/precDataMatch',
+    'dataOperationVerify': '/api/cdssman/tran/operationConfig/dataVerify',
 
     'getFusionPageCDSS': '/api/cdssman/tran/transfusionConfig/getPage',   //输血列表
     'fusionIsExistRecordCDSS': '/api/cdssman/tran/transfusionConfig/isExistRecord',   //输血-映射关系是否已存在
@@ -421,9 +421,9 @@ export default {
     'deleteFusionRecordCDSS': '/api/cdssman/tran/transfusionConfig/deleteRecord',   //输血-删除映射关系
     'exportFusionRecordCDSS': '/api/cdssman/tran/transfusionConfig/exportExcel',   //输血-数据导出
     'importFusionRecordCDSS': '/api/cdssman/tran/transfusionConfig/importExcel',   //输血-数据导入
-    'exportFusionModuleCDSS': '/api/cdssman/tran/transfusionConfig/exportExcelModule',  
-    'precFusionDataMatch': '/api/cdssman/tran/transfusionConfig/precDataMatch',  
-    'dataFusionVerify': '/api/cdssman/tran/transfusionConfig/dataVerify',  
+    'exportFusionModuleCDSS': '/api/cdssman/tran/transfusionConfig/exportExcelModule',
+    'precFusionDataMatch': '/api/cdssman/tran/transfusionConfig/precDataMatch',
+    'dataFusionVerify': '/api/cdssman/tran/transfusionConfig/dataVerify',
 
     'getDeptPageCDSS': '/api/cdssman/tran/deptConfig/getPage',   //科室列表
     'deptIsExistRecordCDSS': '/api/cdssman/tran/deptConfig/isExistRecord',   //科室-映射关系是否已存在
@@ -432,9 +432,9 @@ export default {
     'exportDeptRecordCDSS': '/api/cdssman/tran/deptConfig/exportExcel',   //科室-数据导出
     'importDeptRecordCDSS': '/api/cdssman/tran/deptConfig/importExcel',   //科室-数据导入
     'exportDeptModuleCDSS': '/api/cdssman/tran/deptConfig/exportExcelModule',   //科室-数据导入模板导出
-    'precDeptDataMatch': '/api/cdssman/tran/deptConfig/precDataMatch',   
-    'dataDeptVerify': '/api/cdssman/tran/deptConfig/dataVerify',   
-   
+    'precDeptDataMatch': '/api/cdssman/tran/deptConfig/precDataMatch',
+    'dataDeptVerify': '/api/cdssman/tran/deptConfig/dataVerify',
+
     // 'saveHospitalInfoRecordCDSS': '/api/cdssman/tran/hospitalInfo/saveRecord',   //医院信息——修改医院信息
 
     'modifyConnectStatusCDSS': '/api/cdssman/hospitalInfo/modifyConnectStatus',   //医院信息——修改医院信息 
@@ -455,10 +455,15 @@ export default {
     'revStopPlansCDSS': '/api/cdssman/plan/revStopPlans',   //停用启用方案配置
     'savePlanInfoDatasCDSS': '/api/cdssman/plan/savePlanInfoDatas',   //保存更新方案配置信息
 
+    'getEntityPageCDSS': '/entityman/getEntityPage',   //知识图谱分页
+    'isEntitymanExistCDSS': '/entityman/isExist',   //知识图谱-唯一校验
+    'saveEntity': '/entityman/saveEntity',   //知识图谱
+    'getEntitymanById': '/entityman/getById',   //查看实体对象
+    'dataEntityVerify': '/entityman/dataVerify',   //术语关联校验(静态知识、术语关联、开单合理性规则)
 
 
+    'BatchUpdateHasInfoStatus': '/staticKnowledge/BatchUpdateHasInfoStatus',   //术语关联校验(静态知识、术语关联、开单合理性规则)
 
-    
     'getVersionInfoAllsCDSS': '/api/cdssman/versionInfo/getVersionInfoAlls',   //获取版本信息
     'saveVersionInfoAllsCDSS': '/api/cdssman/versionInfo/saveVersionInfoAlls',   //保存版本信息
     'cancelVersionInfoAllsCDSS': '/api/cdssman/versionInfo/cancelVersionInfoAlls',   //删除版本信息

+ 1 - 1
src/api/index.js

@@ -3,7 +3,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.241';
+// axios.defaults.baseURL = 'http://192.168.2.236';
 // axios.defaults.baseURL = 'http://192.168.2.241';
 // axios.defaults.baseURL = 'http://192.168.3.117:5050';
 

+ 28 - 12
src/components/cdssManage/MedicinePrompt.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <crumbs title="医学术语静态知识维护">
+    <crumbs title="医学术语静态知识维护" style="min-width: 1088px">
       <el-form :inline="true" class="demo-form-inline">
         <el-form-item label="术语分类:" class="selectMedicine">
           <el-select size="mini" v-model="filter.libType" placeholder="请选择" clearable>
@@ -25,16 +25,16 @@
           <el-button
             size="mini"
             type="warning"
-            style="margin:0 10px"
-            @click="addMedicalPrompt"
-          >添加静态知识</el-button>
+            @click="reIdentification"
+          >{{!reLoading?'更新图谱标识':'正在更新中...'}}</el-button>
+          <el-button size="mini" type="warning" @click="addMedicalPrompt">添加静态知识</el-button>
         </el-form-item>
       </el-form>
     </crumbs>
     <div class="contents">
       <el-table :data="list" border style="width: 100%">
-        <el-table-column type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
-        <el-table-column prop="gmtModified" label="操作时间" width="180" ></el-table-column>
+        <el-table-column type="index" :index="indexMethod" label="编号" width="80"></el-table-column>
+        <el-table-column prop="gmtModified" label="操作时间" width="180"></el-table-column>
         <el-table-column prop="name" label="标准术语" :show-overflow-tooltip="true"></el-table-column>
         <el-table-column prop="typeName" label="术语分类" width="120"></el-table-column>
         <el-table-column prop="title" label="内容概览" width="240" :show-overflow-tooltip="true"></el-table-column>
@@ -117,7 +117,8 @@ export default {
         title: '',
         status: '',
         libType: ''
-      }
+      },
+      reLoading: false //更新图谱标识
     };
   },
   created() {
@@ -125,7 +126,7 @@ export default {
     //返回时避免参数未赋值就获取列表
     setTimeout(function() {
       that.getDataList();
-      that.getListDicCDSS()
+      that.getListDicCDSS();
     });
     // this.typeList = config.emData;
     // 非首页 编辑页返回 设置 this.currentPage
@@ -149,7 +150,22 @@ export default {
     });
   },
   methods: {
-     getListDicCDSS() {
+    //更新图谱标识
+    reIdentification() {
+      this.reLoading = true;
+      api.BatchUpdateHasInfoStatus().then(res => {
+        this.reLoading = false;
+        if (res.data.code === '0' && res.data.data === true) {
+          // 更新成功
+          this.warning('更新成功', 'success');
+        } else {
+          // 更新失败
+          this.warning('更新失败');
+        }
+      });
+    },
+
+    getListDicCDSS() {
       api.getListDicCDSS().then(res => {
         if (res.data.code === '0') {
           this.typeList = res.data.data && res.data.data['10'];
@@ -230,7 +246,7 @@ export default {
               '检验细项',
               '检查',
               '检查子项',
-              '手术和操作',
+              '手术和操作'
             ];
             this.list = data.records = data.records.filter(item => {
               item.typeName = temp[item.type];
@@ -411,12 +427,12 @@ export default {
   /deep/ .el-icon-circle-close {
     position: relative;
     // top: -2px;
-    left:12px;
+    left: 12px;
   }
 }
 
 body {
-  .el-tooltip__popper{
+  .el-tooltip__popper {
     max-width: 400px;
   }
 }

+ 1 - 1
src/components/cdssManage/dept/DeptManage.vue

@@ -2,7 +2,7 @@
   <div>
     <crumbs :title="title + hospitaiName" linkTo="MedicalTermCDSS">
       <el-form :inline="true" class="demo-form-inline">
-        <el-form-item>
+        <el-form-item style="marginBottom: 0px">
           <el-button type="text" class="downTemplate" @click="exportModule">导入模板下载</el-button>
           <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" />
           <el-button size="mini" @click="importPage">{{uploadInfo}}</el-button>

+ 1 - 1
src/components/cdssManage/disease/Disease.vue

@@ -2,7 +2,7 @@
   <div>
     <crumbs :title="title + hospitaiName" linkTo="MedicalTermCDSS">
       <el-form :inline="true" class="demo-form-inline">
-        <el-form-item>
+        <el-form-item style="marginBottom: 0px">
           <el-button type="text" class="downTemplate" @click="exportModule">导入模板下载</el-button>
           <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" />
           <el-button size="mini" @click="importPage">{{uploadInfo}}</el-button>

+ 1 - 1
src/components/cdssManage/drug/DrugManage.vue

@@ -2,7 +2,7 @@
   <div>
     <crumbs :title="title + hospitaiName" linkTo="MedicalTermCDSS">
       <el-form :inline="true" class="demo-form-inline">
-        <el-form-item>
+        <el-form-item style="marginBottom: 0px">
           <el-button type="text" class="downTemplate" @click="exportModule">导入模板下载</el-button>
           <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" />
           <el-button size="mini" @click="importPage">{{uploadInfo}}</el-button>

+ 1 - 1
src/components/cdssManage/fusion/Fusion.vue

@@ -2,7 +2,7 @@
   <div>
     <crumbs :title="title + hospitaiName" linkTo="MedicalTermCDSS">
       <el-form :inline="true" class="demo-form-inline">
-        <el-form-item>
+        <el-form-item style="marginBottom: 0px">
           <el-button type="text" class="downTemplate" @click="exportModule">导入模板下载</el-button>
           <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" />
           <el-button size="mini" @click="importPage">{{uploadInfo}}</el-button>

+ 584 - 0
src/components/cdssManage/knowledge/AddKnowledge.vue

@@ -0,0 +1,584 @@
+<template>
+  <div class="wrapper">
+    <crumbs
+      :title="isEdit ? '知识图谱标准术语维护-修改' : '知识图谱标准术语维护-添加'"
+      class="topBack"
+      :param="$route.params"
+      linkTo="KnowledgeManage"
+    ></crumbs>
+    <div class="AddPlanBox">
+      <el-row :gutter="20">
+        <el-col :span="16">
+          <el-form ref="form" :model="form" label-width="110px" :rules="rules">
+            <el-form-item label="术语分类" class="selectMedicine" prop="labelType">
+              <el-select
+                v-model="form.labelType"
+                placeholder="请选择术语分类"
+                clearable
+                filterable
+                style="width: 100%"
+                :disabled="isEdit"
+              >
+                <el-option
+                  v-for="item in terminologyData"
+                  :label="item.name"
+                  :value="item.val"
+                  :key="item.orderNo"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="术语名称" prop="name">
+              <el-input
+                v-model.trim="form.name"
+                placeholder="请输入术语名称"
+                @blur="handlePinyin($event)"
+                @input="handlePinyinInput"
+                :disabled="form.labelType===''"
+              ></el-input>
+            </el-form-item>
+            <el-form-item label="术语拼音" prop="pycode">
+              <el-input
+                v-model.trim="form.pycode"
+                placeholder="请输入术语拼音"
+                ref="pycode"
+              ></el-input>
+            </el-form-item>
+            <!-- 诊断 -->
+            <DiseaseForm v-if="form.labelType==='医保疾病名称'" :data="form" @handleInput="handleInput"></DiseaseForm>
+            <!-- 手术和操作 -->
+            <OperationForm
+              v-else-if="form.labelType==='医保手术和操作名称'"
+              ref="operationForm"
+              :data="form"
+              @handleInput="handleInput"
+            ></OperationForm>
+            <!-- 检查 | 检查子项 -->
+            <PacsForm
+              v-else-if="form.labelType==='辅助检查名称' || form.labelType === '辅助检查子项目名称'"
+              :key="form.labelType"
+              :data="form"
+              @handleInput="handleInput"
+            ></PacsForm>
+            <!-- 检验细项 -->
+            <PacsDetailForm
+              v-else-if="form.labelType==='实验室检查名称' "
+              :data="form"
+              @handleInput="handleInput"
+            ></PacsDetailForm>
+            <!-- 实验室检查细项(开单合理性) -->
+            <LabPacsForm
+              v-else-if="form.labelType==='实验室检查' "
+              :data="form"
+              @handleInput="handleInput"
+            ></LabPacsForm>
+            <!-- 化验细项及结果(推理)-->
+            <AssayForm
+              v-else-if="form.labelType==='化验细项及结果' "
+              ref="assayForm"
+              :data="form"
+              @handleInput="handleInput"
+            ></AssayForm>
+            <!-- 药物过敏原-->
+            <DrugAllergensForm
+              v-else-if="form.labelType==='药物过敏原'"
+              ref="drugAllergensForm"
+              :data="form"
+              @handleInput="handleInput"
+            ></DrugAllergensForm>
+            <!-- 药品注册名称-->
+            <DrugRegNameForm
+              v-else-if="form.labelType==='药品注册名称' "
+              :data="form"
+              @handleInput="handleInput"
+            ></DrugRegNameForm>
+            <!-- 药品代码通用名-->
+            <DrugGeneNameForm
+              v-else-if="form.labelType==='药品代码通用名' "
+              ref="drugGeneNameForm"
+              :data="form"
+              @handleInput="handleInput"
+            ></DrugGeneNameForm>
+            <!-- 体征 | 实验室检查危急值-->
+            <CommonForm
+              v-else-if="form.labelType==='实验室检查危急值' || form.labelType === '体征'"
+              :key="form.labelType"
+              :data="form"
+              @handleInput="handleInput"
+            ></CommonForm>
+            <el-form-item label="静态术语标识">
+              <span style="paddingLeft: 12px; color: #606266">{{form.is_kl === 1? '有' : '无'}}</span>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="onSubmit" :disabled="saveDisable">确定</el-button>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-row>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from '@api/cdss.js';
+import pinyin from '../../../js/Convert_Pinyin.js';
+import DiseaseForm from './DiseaseForm';
+import OperationForm from './OperationForm';
+import PacsForm from './PacsForm';
+import PacsDetailForm from './PacsDetailForm';
+import LabPacsForm from './LabPacsForm';
+import AssayForm from './AssayForm';
+import DrugAllergensForm from './DrugAllergensForm';
+import DrugRegNameForm from './DrugRegNameForm';
+import DrugGeneNameForm from './DrugGeneNameForm';
+import CommonForm from './CommonForm';
+export default {
+  components: {
+    DiseaseForm,
+    OperationForm,
+    PacsForm,
+    PacsDetailForm,
+    LabPacsForm,
+    AssayForm,
+    DrugAllergensForm,
+    DrugRegNameForm,
+    DrugGeneNameForm,
+    CommonForm
+  },
+  data() {
+    let reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/;
+    let checkFrequency = (rule, value, callback) => {
+      let pycode = this.$refs.pycode.value;
+      if (reg.test(pycode && pycode.trim())) {
+        callback('术语拼音仅支持字母、数字和标点符号');
+      } else {
+        callback();
+      }
+    };
+    return {
+      form: {
+        age: '', //年龄
+        alias: '', //别名(医保诊断名称、药物过敏原、药品注册名称)
+        category: '', //诊断分类(医保诊断名称属性:1、2,无默认值)
+        conflict_geiyao: '', //禁忌给药途径(药品注册名称属性)
+        conflict_gender: '', //禁忌性别(药品注册名称属性)
+        dept: '', //诊断所属科室(医保诊断名称属性)
+        gender: '', //性别
+        highriskcond: '', //高危条件(医保手术和操作属性)
+        // id: 0,
+        is_kl: 0, //静态知识标识(0-无,1-有,默认0)
+        labelType: '', //术语类型-知识图谱标签类型(详情见字典)
+        maxAge: '', // 最大值(实验室检查名称)
+        maxval: '', //最小值(实验室检查名称)
+        medtype: '', //药品类型(药物过敏原属性:药品、药品类别)
+        minAge: '', //年龄下限(医保诊断名称属性)
+        minval: '', //年龄上限(医保诊断名称属性)
+        name: '', //术语名称
+        opgrade: '', //手术等级(医保手术和操作属性:0、1、2、3、4,默认0)
+        pycode: '', //拼音编码
+        range: 0, //范围(0-范围内,1-范围外,默认0)
+        result: '', //结果(药物过敏原、药品注册名称)
+        risklevel: '', //药品高危级别(药品注册名称属性)
+        special: '否', //特殊标志(化验细项及结果属性:是)
+        status: 1, //状态(0-禁用,1-启用,默认1)
+        unit: '', //单位(实验室检查名称、实验室检查、体征、实验室检查危急值)
+        min_pack_num: null, //最小包装数量(药品代码通用名属性)
+        reg_JiXin: '', //注册剂型(药品代码通用名属性)
+        benWei_Code: '', //药品本位码(药品代码通用名属性)
+        min_pack_unit: '', //最小包装单位(药品代码通用名属性)
+        reg_GuiGe: '', //注册规格(药品代码通用名属性)
+        pack_CaiLiao: '', //包装材质(药品代码通用名属性)
+        producer: '', //药品企业(药品代码通用名属性)
+        license_num: '', //批准文号(药品代码通用名属性)
+        min_prod_unit: '', //最小制剂单位(药品代码通用名属性)
+        stand_reg_JiXin: '' //标准注册剂型(药品代码通用名属性)
+      },
+      saveDisable: false, //保存按钮禁止点击
+      rules: {
+        labelType: [
+          { required: true, message: '请选择术语分类', trigger: 'change' }
+        ],
+        name: [
+          { required: true, message: '请输入术语名称', trigger: 'change' },
+          { max: 100, message: '最多输入100字', trigger: 'blur' }
+        ],
+        pycode: [
+          { required: true, message: '请输入术语拼音', trigger: 'change' },
+          { max: 100, message: '最多输入100个字符', trigger: ['blur', 'change']},
+          {
+            required: true,
+            validator: checkFrequency,
+            trigger: ['blur', 'change']
+          }
+        ]
+      },
+      isEdit: false,
+      terminologyData: [], // 术语分类
+      nameFlag: '', // 判断术语名称是否被修改
+      isValidate: true,
+      id: '',
+      isTrans: true // 拼音是否转换成功
+    };
+  },
+  watch: {},
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    // init
+    _initData() {
+      const { isEdit, data } = this.$route.params;
+      this._getTerminologyData();
+      if (isEdit) {
+        this.isEdit = true;
+        this.id = data.id;
+        this.nameFlag = data.name; //判断术语名称是否被修改
+        this._getEntitymanById(data.id);
+      }
+    },
+
+    // 根据ID获取实例
+    _getEntitymanById(id) {
+      api.getEntitymanById({ id }).then(res => {
+        if (res.data.code === '0') {
+          this.form.age = res.data.data.age;
+          this.form.alias = res.data.data.alias;
+          this.form.category = res.data.data.category;
+          this.form.conflict_geiyao = res.data.data.conflict_geiyao;
+          this.form.conflict_gender = res.data.data.conflict_gender;
+          this.form.dept = res.data.data.dept;
+          this.form.gender = res.data.data.gender;
+          this.form.highriskcond = res.data.data.highriskcond;
+          this.form.is_kl = res.data.data.is_kl;
+          this.form.labelType = res.data.data.labelType;
+          this.form.maxAge = res.data.data.maxAge;
+          this.form.maxval = res.data.data.maxval;
+          this.form.medtype = res.data.data.medtype;
+          this.form.minAge = res.data.data.minAge;
+          this.form.minval = res.data.data.minval;
+          this.form.name = res.data.data.name;
+          this.form.opgrade = res.data.data.opgrade;
+          this.form.pycode = res.data.data.pycode;
+          this.form.range = res.data.data.range;
+          this.form.result = res.data.data.result;
+          this.form.risklevel = res.data.data.risklevel;
+          this.form.special = res.data.data.special;
+          this.form.status = res.data.data.status;
+          this.form.unit = res.data.data.unit;
+          this.form.min_pack_num = res.data.data.min_pack_num; //最小包装数量(药品代码通用名属性)
+          this.form.reg_JiXin = res.data.data.reg_JiXin; //注册剂型(药品代码通用名属性)
+          this.form.benWei_Code = res.data.data.benWei_Code; //药品本位码(药品代码通用名属性)
+          this.form.min_pack_unit = res.data.data.min_pack_unit; //最小包装单位(药品代码通用名属性)
+          this.form.reg_GuiGe = res.data.data.reg_GuiGe; //注册规格(药品代码通用名属性)
+          this.form.pack_CaiLiao = res.data.data.pack_CaiLiao; //包装材质(药品代码通用名属性)
+          this.form.producer = res.data.data.producer; //药品企业(药品代码通用名属性)
+          this.form.license_num = res.data.data.license_num; //批准文号(药品代码通用名属性)
+          this.form.min_prod_unit = res.data.data.min_prod_unit; //最小制剂单位(药品代码通用名属性)
+          this.form.stand_reg_JiXin = res.data.data.stand_reg_JiXin; //标准注册剂型(药品代码通用名属性)
+        }
+      });
+    },
+
+    handleInput(data) {
+      const { type } = data;
+      if (type !== '') {
+        this.form[type] = data.value;
+      }
+    },
+
+    // 获取术语分类 字典
+    _getTerminologyData() {
+      api.getListDicCDSS().then(res => {
+        if (res.data.code === '0') {
+          this.terminologyData = res.data.data && res.data.data['8'];
+        }
+      });
+    },
+
+    // 处理参数
+    _getParams() {
+      const {
+        age,
+        alias,
+        category,
+        conflict_geiyao,
+        conflict_gender,
+        dept,
+        gender,
+        highriskcond,
+        is_kl,
+        labelType,
+        maxAge,
+        maxval,
+        medtype,
+        minAge,
+        minval,
+        name,
+        opgrade,
+        pycode,
+        range,
+        result,
+        risklevel,
+        special,
+        status,
+        unit,
+        min_pack_num, //最小包装数量(药品代码通用名属性)
+        reg_JiXin, //注册剂型(药品代码通用名属性)
+        benWei_Code, //药品本位码(药品代码通用名属性)
+        min_pack_unit, //最小包装单位(药品代码通用名属性)
+        reg_GuiGe, //注册规格(药品代码通用名属性)
+        pack_CaiLiao, //包装材质(药品代码通用名属性)
+        producer, //药品企业(药品代码通用名属性)
+        license_num, //批准文号(药品代码通用名属性)
+        min_prod_unit, //最小制剂单位(药品代码通用名属性)
+        stand_reg_JiXin //标准注册剂型(药品代码通用名属性)
+      } = this.form;
+      let params = {
+        age, //年龄
+        alias, //别名(医保诊断名称、药物过敏原、药品注册名称)
+        category, //诊断分类(医保诊断名称属性:1、2,无默认值)
+        conflict_geiyao, //禁忌给药途径(药品注册名称属性)
+        conflict_gender, //禁忌性别(药品注册名称属性)
+        dept, //诊断所属科室(医保诊断名称属性)
+        gender, //性别
+        highriskcond, //高危条件(医保手术和操作属性)
+        is_kl, //静态知识标识(0-无,1-有,默认0)
+        labelType, //术语类型-知识图谱标签类型(详情见字典)
+        maxAge, // 最大值(实验室检查名称)
+        maxval, //最小值(实验室检查名称)
+        medtype, //药品类型(药物过敏原属性:药品、药品类别)
+        minAge, //年龄下限(医保诊断名称属性)
+        minval, //年龄上限(医保诊断名称属性)
+        name, //术语名称
+        opgrade, //手术等级(医保手术和操作属性:0、1、2、3、4,默认0)
+        pycode, //拼音编码
+        range, //范围(0-范围内,1-范围外,默认0)
+        result, //结果(药物过敏原、药品注册名称)
+        risklevel, //药品高危级别(药品注册名称属性)
+        special, //特殊标志(化验细项及结果属性:是)
+        status: 1, //状态(0-禁用,1-启用,默认1)
+        unit, //单位(实验室检查名称、实验室检查、体征、实验室检查危急值)
+        min_pack_num, //最小包装数量(药品代码通用名属性)
+        reg_JiXin, //注册剂型(药品代码通用名属性)
+        benWei_Code, //药品本位码(药品代码通用名属性)
+        min_pack_unit, //最小包装单位(药品代码通用名属性)
+        reg_GuiGe, //注册规格(药品代码通用名属性)
+        pack_CaiLiao, //包装材质(药品代码通用名属性)
+        producer, //药品企业(药品代码通用名属性)
+        license_num, //批准文号(药品代码通用名属性)
+        min_prod_unit, //最小制剂单位(药品代码通用名属性)
+        stand_reg_JiXin //标准注册剂型(药品代码通用名属性)
+      };
+      if (this.isEdit) {
+        params = { ...params, id: this.id };
+      }
+      return params;
+    },
+    onSubmit() {
+      const { currentPage, isEdit } = this.$route.params;
+      let numberpage = 1;
+      if (isEdit) {
+        numberpage = currentPage;
+      }
+      // if (this.isValidate === false || this.isTrans === false) return; // 术语名称已存在
+      if (this.isValidate === false) return; // 术语名称已存在ss
+      let goOn = true;
+      if (this.form.labelType === '药物过敏原') {
+        this.$refs.drugAllergensForm.$refs.drugAllergensForm &&
+          this.$refs.drugAllergensForm.$refs.drugAllergensForm.validate(
+            valid => {
+              if (valid) {
+              } else {
+                goOn = false;
+              }
+            }
+          );
+      }
+      if (this.form.labelType === '医保手术和操作名称') {
+        this.$refs.operationForm.$refs.operationForm &&
+          this.$refs.operationForm.$refs.operationForm.validate(valid => {
+            if (valid) {
+            } else {
+              goOn = false;
+            }
+          });
+      }
+      // if (this.form.labelType === '化验细项及结果') {
+      //   this.$refs.assayForm.$refs.assayForm &&
+      //     this.$refs.assayForm.$refs.assayForm.validate(valid => {
+      //       if (valid) {
+      //       } else {
+      //         goOn = false;
+      //       }
+      //     });
+      // }
+      if (this.form.labelType === '药品代码通用名') {
+        this.$refs.drugGeneNameForm.$refs.drugGeneNameForm &&
+          this.$refs.drugGeneNameForm.$refs.drugGeneNameForm.validate(valid => {
+            if (valid) {
+            } else {
+              goOn = false;
+            }
+          });
+      }
+      this.$refs.form.validate(async valid => {
+        if (valid) {
+          if (!goOn) return;
+          this.saveDisable = true;
+          let params = this._getParams();
+          if (this.isTrans === false) {
+            this.saveDisable = false;
+            return;
+          }
+          let res = await api.dataEntityVerify(params);
+          if (!res.data.data) {
+            this.$alert(`${res.data.msg}`, '提示', {
+              confirmButtonText: '确定',
+              type: 'warning'
+            })
+              .then(() => {
+                api.saveEntity(params).then(res => {
+                  if (res.data.code === '0') {
+                    this.$message({
+                      showClose: true,
+                      message: '保存成功',
+                      type: 'success',
+                      duration: 1000
+                    });
+                    this.$router.push({
+                      name: 'KnowledgeManage',
+                      params: Object.assign({}, this.$route.params, {
+                        currentPage: numberpage
+                      })
+                    });
+                  } else if (res.data.code === '00020007') {
+                    this.$message({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                      duration: 1000
+                    });
+                  } else {
+                    this.$message({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                      duration: 1000
+                    });
+                  }
+                  this.saveDisable = false;
+                });
+              })
+              .catch(() => {
+                this.saveDisable = false;
+                this.$message({
+                  showClose: true,
+                  message: '保存失败',
+                  type: 'error',
+                  duration: 1000
+                });
+              });
+          } else if (res.data.data) {
+            api.saveEntity(params).then(res => {
+              if (res.data.code === '0') {
+                this.$message({
+                  showClose: true,
+                  message: '保存成功',
+                  type: 'success',
+                  duration: 1000
+                });
+                this.$router.push({
+                  name: 'KnowledgeManage',
+                  params: Object.assign({}, this.$route.params, {
+                    currentPage: numberpage
+                  })
+                });
+              } else if (res.data.code === '00020007') {
+                this.$message({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'error',
+                  duration: 1000
+                });
+              } else {
+                this.$message({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'error',
+                  duration: 1000
+                });
+              }
+              this.saveDisable = false;
+            });
+          }
+        } else {
+          goOn = false;
+        }
+      });
+    },
+
+    handlePinyinInput(val) {
+      this.isTrans = false;
+    },
+
+    // 处理拼音转换&验证唯一性
+    handlePinyin(e) {
+      if (this.nameFlag === e.target.value) {
+        this.isTrans = true;
+        this.isValidate = true; // 校验通过
+        this.form.pycode = pinyin.getCamelChars(e.target.value);
+      } else {
+        const { is_kl, name, labelType } = this.form;
+        let params = {
+          is_kl,
+          labelType,
+          name,
+          status: 0
+        };
+        api.isEntitymanExistCDSS(params).then(res => {
+          if (res.data.code === '0') {
+            // console.log(res.data.data, 'res.data.data');
+            if (res.data.data === true) {
+              this.isValidate = false; // 校验不通过
+              // 已存在
+              this.$refs.form.clearValidate();
+              // 手动操作校验、展示登录错误信息
+              this.rules.name.push({
+                // js新增一个自定义校验
+                validator: (rule, value, callback) => {
+                  callback('术语名称已存在');
+                },
+                trigger: 'blur'
+              });
+              this.$refs.form.validateField('name'); // 手动校验
+              this.rules.name = this.rules.name.slice(0, 1); // 删除校验
+            } else {
+              this.isValidate = true; // 校验通过
+              this.isTrans = true;
+              // 不存在
+              this.form.pycode = pinyin.getCamelChars(e.target.value);
+            }
+          }
+        });
+      }
+    }
+  }
+};
+</script>
+<style lang="less" scoped>
+.wrapper {
+  min-width: 940px;
+  .AddPlanBox {
+    padding: 20px 60px 120px 60px;
+    margin: 70px 20px 0 20px;
+    background: #fff;
+  }
+  .topBack {
+    top: 0;
+  }
+  .el-button {
+    float: right;
+  }
+}
+</style>

+ 78 - 0
src/components/cdssManage/knowledge/AssayForm.vue

@@ -0,0 +1,78 @@
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="assayForm"
+        ref="assayForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+      >
+        <el-form-item label="特异性" label-width="110px">
+          <el-select
+            v-model="assayForm.special"
+            placeholder="请选择特异性"
+            clearable
+            @change="handleValue('special')"
+            style="width: 100%"
+            ref="special"
+          >
+            <el-option label="是" value="是"></el-option>
+            <el-option label="否" value="否"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'AssayForm',
+  props: ['data'],
+  data() {
+    // let checkFrequency = (rule, value, callback) => {
+    //   let special = this.$refs.special.value;
+    //   if (special === '' || special === null) {
+    //     callback('请选择特殊');
+    //   } else {
+    //     callback();
+    //   }
+    // };
+
+    return {
+      assayForm: {
+        special: ''
+      },
+      // rules: {
+      //   special: [
+      //     {
+      //       required: true,
+      //       validator: checkFrequency,
+      //       trigger: ['blur', 'change']
+      //     }
+      //   ]
+      // }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.assayForm.special = this.data.special;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.assayForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+</style>

+ 57 - 0
src/components/cdssManage/knowledge/CommonForm.vue

@@ -0,0 +1,57 @@
+
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="commonForm"
+        ref="commonForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+      >
+        <el-form-item label="单位" label-width="110px" prop="unit">
+          <el-input v-model.trim="commonForm.unit" placeholder="请输入单位" @blur="handleValue('unit')"></el-input>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'CommonForm',
+  props: ['data'],
+  data() {
+    return {
+      commonForm: {
+        unit: ''
+      }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.commonForm.unit = this.data.unit;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.commonForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.turns {
+  text-align: center;
+  height: 40px;
+  line-height: 40px;
+  color: #dcdfe6;
+}
+</style>

+ 178 - 0
src/components/cdssManage/knowledge/DiseaseForm.vue

@@ -0,0 +1,178 @@
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="diseaseForm"
+        ref="diseaseForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+      >
+        <el-form-item label="疾病别称" label-width="110px" prop="alias">
+          <el-input
+            v-model.trim="diseaseForm.alias"
+            placeholder="请输入疾病别称"
+            @blur="handleValue('alias')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="疾病分类" label-width="110px" prop="category">
+          <el-select
+            v-model="diseaseForm.category"
+            placeholder="请选择疾病分类"
+            clearable
+            @change="handleValue('category')"
+            style="width: 100%"
+          >
+            <el-option label="一类疾病" :value="1"></el-option>
+            <el-option label="二类疾病" :value="2"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="年龄范围" label-width="110px" prop="minAge">
+              <el-input
+                v-model.number="diseaseForm.minAge"
+                placeholder="请输入最小值"
+                @blur="handleValue('minAge')"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="2">
+            <div class="turns">——</div>
+          </el-col>
+          <el-col :span="10">
+            <el-form-item label label-width="0px" prop="maxAge">
+              <el-input
+                v-model.number="diseaseForm.maxAge"
+                placeholder="请输入最大值"
+                @blur="handleValue('maxAge')"
+              ></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!-- <el-form-item label="所属科室" label-width="110px" prop="dept">
+          <el-input
+            v-model.trim="diseaseForm.dept"
+            placeholder="请输入所属科室"
+            @blur="handleValue('dept')"
+          ></el-input>
+        </el-form-item>-->
+        <el-form-item label="所属科室" label-width="110px" prop="dept">
+          <el-select
+            style="width:100%"
+            v-model="diseaseForm.dept"
+            filterable
+            remote
+            clearable
+            :loading="showDrop"
+            loading-text="加载中..."
+            @change="handleValue('dept')"
+            @visible-change="handleVisible"
+            placeholder="请输入所属科室"
+            :remote-method="searchTerms"
+            reserve-keyword
+          >
+            <el-option
+              v-for="(item,idx) in deptNames"
+              :key="idx"
+              :label="item"
+              :value="item"
+              :title="item"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="性别" label-width="110px" prop="planName">
+          <el-select
+            v-model="diseaseForm.gender"
+            placeholder="请选择性别"
+            clearable
+            @change="handleValue('gender')"
+            style="width: 100%"
+          >
+            <el-option label="男" value="男"></el-option>
+            <el-option label="女" value="女"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+import api from '@api/cdss.js';
+export default {
+  name: 'diseaseForm',
+  props: ['data'],
+  data() {
+    return {
+      diseaseForm: {
+        alias: '',
+        category: '',
+        dept: '',
+        minAge: '',
+        maxAge: '',
+        gender: ''
+      },
+      deptNames: [],
+      showDrop: false //下拉框显示文字
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.diseaseForm.alias = this.data.alias;
+      this.diseaseForm.category = this.data.category;
+      this.diseaseForm.dept = this.data.dept;
+      this.diseaseForm.minAge = this.data.minAge;
+      this.diseaseForm.maxAge = this.data.maxAge;
+      this.diseaseForm.gender = this.data.gender;
+    },
+
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.diseaseForm[from]
+      });
+    },
+
+   
+    handleVisible(flag) {
+      if (!flag) {
+        this.deptNames = [];
+      }
+    }, // 搜索列表
+    searchTerms(query) {
+      if (!query) {
+        this.deptNames = [];
+        return;
+      }
+      // this.searchInfo = query;
+      this.showDrop = true;
+      let params = {
+        inputStr: query,
+        size: '',
+        type: 7
+      };
+      api.retrievalSearch(params).then(res => {
+        this.showDrop = false;
+        if (res.data.code === '0') {
+          this.deptNames = res.data.data && res.data.data.deptNames;
+        }
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.turns {
+  text-align: center;
+  height: 40px;
+  line-height: 40px;
+  color: #dcdfe6;
+}
+</style>

+ 97 - 0
src/components/cdssManage/knowledge/DrugAllergensForm.vue

@@ -0,0 +1,97 @@
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="drugAllergensForm"
+        ref="drugAllergensForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+        :rules="rules"
+      >
+        <el-form-item label="药品类型" label-width="110px" prop="medtype">
+          <el-select
+            v-model="drugAllergensForm.medtype"
+            placeholder="请选择药品类型"
+            clearable
+            @change="handleValue('medtype')"
+            style="width: 100%"
+            ref="dragType"
+          >
+            <el-option label="药品" value="药品"></el-option>
+            <el-option label="药品类别" value="药品类别"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="结果" label-width="110px" prop="result">
+          <el-input
+            v-model.trim="drugAllergensForm.result"
+            placeholder="请输入结果"
+            @blur="handleValue('result')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="名称" label-width="110px" prop="alias">
+          <el-input
+            v-model.trim="drugAllergensForm.alias"
+            placeholder="请输入名称"
+            @blur="handleValue('alias')"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'DrugAllergensForm',
+  props: ['data'],
+  data() {
+    let checkFrequency = (rule, value, callback) => {
+      let dragType = this.$refs.dragType.value;
+      if (dragType === '' || dragType === null) {
+        callback('请选择药品类型');
+      } else {
+        callback();
+      }
+    };
+
+    return {
+      drugAllergensForm: {
+        medtype: '',
+        result: '',
+        alias: ''
+      },
+      rules: {
+        medtype: [
+          {
+            required: true,
+            validator: checkFrequency,
+            trigger: ['blur', 'change']
+          }
+        ]
+      }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.drugAllergensForm.medtype = this.data.medtype;
+      this.drugAllergensForm.result = this.data.result;
+      this.drugAllergensForm.alias = this.data.alias;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.drugAllergensForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+</style>

+ 175 - 0
src/components/cdssManage/knowledge/DrugGeneNameForm.vue

@@ -0,0 +1,175 @@
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="drugGeneNameForm"
+        ref="drugGeneNameForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+        :rules="rules"
+      >
+        <el-form-item label="注册剂型" label-width="110px" prop="reg_JiXin">
+          <el-input
+            v-model.trim="drugGeneNameForm.reg_JiXin"
+            placeholder="请输入注册剂型"
+            ref="reg_JiXin"
+            @blur="handleValue('reg_JiXin')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="标准注册剂型" label-width="110px" prop="stand_reg_JiXin">
+          <el-input
+            v-model.trim="drugGeneNameForm.stand_reg_JiXin"
+            placeholder="请输入标准注册剂型"
+            @blur="handleValue('stand_reg_JiXin')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="注册规格" label-width="110px" prop="reg_GuiGe">
+          <el-input
+            v-model.trim="drugGeneNameForm.reg_GuiGe"
+            placeholder="请输入注册规格"
+            @blur="handleValue('reg_GuiGe')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="包装材质" label-width="110px" prop="pack_CaiLiao">
+          <el-input
+            v-model.trim="drugGeneNameForm.pack_CaiLiao"
+            placeholder="请输入包装材质"
+            @blur="handleValue('pack_CaiLiao')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="最小包装数量" label-width="110px" prop="min_pack_num">
+          <el-input
+            v-model="drugGeneNameForm.min_pack_num"
+            placeholder="请输入最小包装数量"
+            @blur="handleValue('min_pack_num')"
+            ref="min_pack_num"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="最小制剂单位" label-width="110px" prop="min_prod_unit">
+          <el-input
+            v-model.trim="drugGeneNameForm.min_prod_unit"
+            placeholder="请输入最小制剂单位"
+            @blur="handleValue('min_prod_unit')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="最小包装单位" label-width="110px" prop="min_pack_unit">
+          <el-input
+            v-model.trim="drugGeneNameForm.min_pack_unit"
+            placeholder="请输入最小包装单位"
+            @blur="handleValue('min_pack_unit')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="药品企业" label-width="110px" prop="producer">
+          <el-input
+            v-model.trim="drugGeneNameForm.producer"
+            placeholder="请输入药品企业"
+            @blur="handleValue('producer')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="批准文号" label-width="110px" prop="license_num">
+          <el-input
+            v-model.trim="drugGeneNameForm.license_num"
+            placeholder="请输入批准文号"
+            @blur="handleValue('license_num')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="药品本位码" label-width="110px" prop="benWei_Code">
+          <el-input
+            v-model.trim="drugGeneNameForm.benWei_Code"
+            placeholder="请输入药品本位码"
+            @blur="handleValue('benWei_Code')"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'DrugGeneNameForm',
+  props: ['data'],
+  data() {
+    let checkFrequency = (rule, value, callback) => {
+      let reg_JiXin = this.$refs.reg_JiXin.value;
+      if (reg_JiXin === '') {
+        callback('请输入注册剂型');
+      } else {
+        callback();
+      }
+    };
+
+    let validatePass = (rule, value, callback) => {
+      let min_pack_num = this.$refs.min_pack_num.value;
+      if (min_pack_num === '' || min_pack_num === null) {
+        callback();
+      }
+      let numReg = /^(([0-9])|([1-9]([0-9]+)))(.[0-9]+)?$/;
+      if (!numReg.test(min_pack_num)) {
+        callback('最小包装数量只支持输入数值类型的内容');
+      } else {
+        callback();
+      }
+    };
+
+    return {
+      drugGeneNameForm: {
+        min_pack_num: null, //最小包装数量(药品代码通用名属性)
+        reg_JiXin: '', //注册剂型(药品代码通用名属性)
+        benWei_Code: '', //药品本位码(药品代码通用名属性)
+        min_pack_unit: '', //最小包装单位(药品代码通用名属性)
+        reg_GuiGe: '', //注册规格(药品代码通用名属性)
+        pack_CaiLiao: '', //包装材质(药品代码通用名属性)
+        producer: '', //药品企业(药品代码通用名属性)
+        license_num: '', //批准文号(药品代码通用名属性)
+        min_prod_unit: '', //最小制剂单位(药品代码通用名属性)
+        stand_reg_JiXin: '' //标准注册剂型(药品代码通用名属性)
+      },
+      rules: {
+        reg_JiXin: [
+          {
+            required: true,
+            validator: checkFrequency,
+            trigger: ['blur', 'change']
+          }
+        ],
+        min_pack_num: [
+          {
+            validator: validatePass,
+            trigger: ['blur', 'change']
+          }
+        ]
+      }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.drugGeneNameForm.min_pack_num = this.data.min_pack_num;
+      this.drugGeneNameForm.reg_JiXin = this.data.reg_JiXin;
+      this.drugGeneNameForm.benWei_Code = this.data.benWei_Code;
+      this.drugGeneNameForm.min_pack_unit = this.data.min_pack_unit;
+      this.drugGeneNameForm.reg_GuiGe = this.data.reg_GuiGe;
+      this.drugGeneNameForm.pack_CaiLiao = this.data.pack_CaiLiao;
+      this.drugGeneNameForm.producer = this.data.producer;
+      this.drugGeneNameForm.license_num = this.data.license_num;
+      this.drugGeneNameForm.min_prod_unit = this.data.min_prod_unit;
+      this.drugGeneNameForm.stand_reg_JiXin = this.data.stand_reg_JiXin;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.drugGeneNameForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+</style>

+ 103 - 0
src/components/cdssManage/knowledge/DrugRegNameForm.vue

@@ -0,0 +1,103 @@
+
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="drugRegNameForm"
+        ref="drugRegNameForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+      >
+        <el-form-item label="药品高危级别" label-width="110px" prop="risklevel">
+          <el-select
+            v-model="drugRegNameForm.risklevel"
+            placeholder="请选择药品高危级别"
+            clearable
+            @change="handleValue('risklevel')"
+            style="width: 100%"
+          >
+            <el-option label="A级高危" value="A级高危"></el-option>
+            <el-option label="B级高危" value="B级高危"></el-option>
+            <el-option label="C级高危" value="C级高危"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="禁忌给药途径" label-width="110px" prop="conflict_geiyao">
+          <el-input
+            v-model.trim="drugRegNameForm.conflict_geiyao"
+            placeholder="请输入禁忌给药途径"
+            @blur="handleValue('conflict_geiyao')"
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="禁忌性别" label-width="110px" prop="conflict_gender">
+          <el-select
+            v-model="drugRegNameForm.conflict_gender"
+            placeholder="请选择禁忌性别"
+            clearable
+            @change="handleValue('conflict_gender')"
+            style="width: 100%"
+          >
+            <el-option label="男" value="男"></el-option>
+            <el-option label="女" value="女"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="结果" label-width="110px" prop="result">
+          <el-input
+            v-model.trim="drugRegNameForm.result"
+            placeholder="请输入结果"
+            @blur="handleValue('result')"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="名称" label-width="110px" prop="alias">
+          <el-input
+            v-model.trim="drugRegNameForm.alias"
+            placeholder="请输入名称"
+            @blur="handleValue('alias')"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'DrugRegNameForm',
+  props: ['data'],
+  data() {
+    return {
+      drugRegNameForm: {
+        risklevel: '',
+        conflict_geiyao: '',
+        conflict_gender: '',
+        result: '',
+        alias: ''
+      }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.drugRegNameForm.risklevel = this.data.risklevel;
+      this.drugRegNameForm.conflict_geiyao = this.data.conflict_geiyao;
+      this.drugRegNameForm.conflict_gender = this.data.conflict_gender;
+      this.drugRegNameForm.result = this.data.result;
+      this.drugRegNameForm.alias = this.data.alias;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.drugRegNameForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+</style>

+ 305 - 0
src/components/cdssManage/knowledge/KnowledgeManage.vue

@@ -0,0 +1,305 @@
+<template>
+  <div>
+    <crumbs title="知识图谱标准术语维护" style="min-width: 1020px">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="术语分类:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.labelType" placeholder="请选择" clearable>
+            <el-option
+              v-for="item in terminologyData"
+              :label="item.name"
+              :value="item.val"
+              :key="item.orderNo"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="术语名称:">
+          <el-input size="mini" maxlength="50" v-model="filter.name" placeholder="请输入" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="静态知识标识:">
+          <el-select
+            size="mini"
+            v-model="filter.is_kl"
+            placeholder="请选择"
+            clearable
+            style="width: 100%"
+          >
+            <el-option label="有" :value="1"></el-option>
+            <el-option label="无" :value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <!-- <el-form-item label="状态:" class="selectMedicine">
+          <el-select size="mini" v-model="filter.status" placeholder="请选择" clearable>
+            <el-option v-for="item in stateList" :label="item.name" :value="item.id" :key="item.id"></el-option>
+          </el-select>
+        </el-form-item>-->
+        <el-form-item class="dododo">
+          <el-button size="mini" @click="filterDatas">检索</el-button>
+          <el-button size="mini" type="warning" style="margin:0 10px" @click="addKnowledge">添加标准术语</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%">
+        <el-table-column type="index" :index="indexMethod" label="编号" width="80"></el-table-column>
+        <el-table-column prop="labelType" label="术语分类">
+          <template slot-scope="scope">{{ labelTypeRender( scope.row.labelType)}}</template>
+        </el-table-column>
+        <el-table-column prop="name" label="术语名称" :show-overflow-tooltip="true"></el-table-column>
+        <el-table-column prop="pycode" label="术语拼音" width="240" :show-overflow-tooltip="true"></el-table-column>
+        <el-table-column prop="is_kl" label="静态知识标识" width="120" :show-overflow-tooltip="true">
+          <template slot-scope="scope">{{ is_klRender( scope.row.is_kl)}}</template>
+        </el-table-column>
+        <el-table-column label="操作" width="140">
+          <template slot-scope="scope">
+            <el-button type="text" size="small" @click="toEditKnowledge(scope.row)">修改</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        :current-page.sync="currentPage"
+        @current-change="currentChange"
+        background
+        :page-size="pageSize"
+        class="pagepage pagepage"
+        :page-sizes="pageSizeArr"
+        @size-change="handleSizeChange"
+        :layout="pageLayout"
+        :total="total"
+      ></el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+import api from '@api/cdss.js';
+import config from '@api/config.js';
+import utils from '@api/utils.js';
+
+export default {
+  name: 'KnowledgeManage',
+  data: function() {
+    return {
+      list: [],
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      terminologyData: [],
+      searched: false,
+      filter: {
+        name: '',
+        status: '',
+        labelType: '',
+        is_kl: ''
+      }
+    };
+  },
+  created() {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDataList();
+      that._getTerminologyData();
+    });
+    // 非首页 编辑页返回 设置 this.currentPage
+    if (Object.keys(this.$route.params).length !== 0) {
+      this.currentPage = this.$route.params.currentPage;
+    }
+  },
+  watch: {
+    filter: {
+      handler: function() {
+        this.searched = false;
+      },
+      deep: true
+    }
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //const pm = to.param;
+      Object.assign(vm, to.params);
+      vm.inCurrentPage = to.params.currentPage;
+    });
+  },
+  methods: {
+    _getTerminologyData() {
+      api.getListDicCDSS().then(res => {
+        if (res.data.code === '0') {
+          this.terminologyData = res.data.data && res.data.data['8'];
+        }
+      });
+    },
+
+    is_klRender(is_kl) {
+      if (is_kl === 0) {
+        return '无';
+      } else if (is_kl === 1) {
+        return '有';
+      } else {
+        return null;
+      }
+    },
+    labelTypeRender(labelType) {
+      let term = this.terminologyData.find(item => item.val === labelType);
+      return term.name;
+    },
+
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = utils.getCurrentPage(
+        this.currentPage,
+        this.total,
+        this.pageSize
+      );
+      this.getDataList();
+    },
+    addKnowledge() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: 'AddKnowledge', params: pam });
+    },
+    toEditKnowledge(row) {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: 'AddKnowledge',
+        params: Object.assign(pam, { data: row, isEdit: true })
+      });
+    },
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    getDataList(isTurnPage) {
+      const param = this.getFilterItems(isTurnPage);
+      this.searched = true;
+      const loading = this.$loading({
+        lock: true,
+        text: 'Loading',
+        spinner: 'el-icon-loading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      });
+      api
+        .getEntityPageCDSS(param)
+        .then(res => {
+          loading.close();
+          if (res.data.code == '0') {
+            this.list = res.data.data && res.data.data.content;
+            this.total = res.data.data && res.data.data.totalElements;
+            if (this.inCurrentPage !== undefined) {
+              this.currentPage = this.inCurrentPage;
+              this.inCurrentPage = undefined;
+            }
+          }
+        })
+        .catch(error => {
+          if (error.code === '900010001') {
+            return false;
+          }
+          console.log(error);
+        });
+    },
+    clearFilter() {
+      this.filter = {
+        name: '',
+        status: '',
+        labelType: '',
+        is_kl: ''
+      };
+    },
+    getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      const param = {
+        number: this.inCurrentPage - 1 || this.currentPage - 1,
+        size: this.pageSize,
+        name: this.filter.name.trim(),
+        labelType: this.filter.labelType,
+        is_kl: this.filter.is_kl,
+        status: this.filter.status
+      };
+      return param;
+    },
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      this.getDataList(true);
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || 'warning'
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+@import '../../../less/admin.less';
+.status-span {
+  font-size: 12px;
+  margin-right: 10px;
+  color: unset;
+}
+.dododo {
+  margin-top: 1px !important;
+}
+.pagepage {
+  .el-input.el-input--mini.el-input--suffix input {
+    height: 28px;
+    line-height: 28px;
+  }
+  .el-pagination__sizes {
+    margin-right: 20px !important;
+  }
+}
+.el-message-box {
+  /deep/ .cancelBtn {
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+  /deep/ .delBtn {
+    background-color: #ff545b !important;
+    border-color: transparent !important;
+  }
+  /deep/ .confirmBtn1 {
+    position: relative;
+    right: 0px !important;
+  }
+}
+
+.selectMedicine {
+  // /deep/ .el-input__suffix-inner {
+  //   position: relative;
+  //   top: -1px;
+  // }
+  /deep/ .el-icon-circle-close {
+    position: relative;
+    // top: -2px;
+    left: 12px;
+  }
+}
+
+body {
+  .el-tooltip__popper {
+    max-width: 400px;
+  }
+}
+</style>

+ 57 - 0
src/components/cdssManage/knowledge/LabPacsForm.vue

@@ -0,0 +1,57 @@
+
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="labPacsForm"
+        ref="labPacsForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+      >
+        <el-form-item label="单位" label-width="110px" prop="unit">
+          <el-input v-model.trim="labPacsForm.unit" placeholder="请输入单位" @blur="handleValue('unit')"></el-input>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'LabPacsForm',
+  props: ['data'],
+  data() {
+    return {
+      labPacsForm: {
+        unit: ''
+      }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.labPacsForm.unit = this.data.unit;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.labPacsForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.turns {
+  text-align: center;
+  height: 40px;
+  line-height: 40px;
+  color: #dcdfe6;
+}
+</style>

+ 90 - 0
src/components/cdssManage/knowledge/OperationForm.vue

@@ -0,0 +1,90 @@
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="operationForm"
+        ref="operationForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+        :rules="rules"
+      >
+        <el-form-item label="手术级别" label-width="110px" prop="opgrade">
+          <el-select
+            v-model="operationForm.opgrade"
+            placeholder="请选择手术级别"
+            style="width: 100%"
+            ref="opgrade"
+            clearable
+            @change="handleValue('opgrade')"
+          >
+            <el-option label="0" value="0"></el-option>
+            <el-option label="1" value="1"></el-option>
+            <el-option label="2" value="2"></el-option>
+            <el-option label="3" value="3"></el-option>
+            <el-option label="4" value="4"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="高危条件" label-width="110px" v-if="operationForm.opgrade == 2">
+          <span
+            style="paddingLeft: 12px; color: #606266"
+          >{{(operationForm.highriskcond === '' || operationForm.highriskcond === null)? '未设置': '已设置'}}</span>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'OperationForm',
+  props: ['data'],
+  data() {
+    let checkFrequency = (rule, value, callback) => {
+      let opgrade = this.$refs.opgrade.value;
+      if (opgrade === '' || opgrade === null) {
+        callback('请选择手术级别');
+      } else {
+        callback();
+      }
+    };
+
+    return {
+      operationForm: {
+        opgrade: '',
+        highriskcond: ''
+      },
+      rules: {
+        opgrade: [
+          {
+            required: true,
+            validator: checkFrequency,
+            trigger: ['blur', 'change']
+          }
+        ]
+      }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      console.log(this.data, '===========');
+      this.operationForm.opgrade = this.data.opgrade;
+      this.operationForm.highriskcond = this.data.highriskcond;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.operationForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+</style>

+ 84 - 0
src/components/cdssManage/knowledge/PacsDetailForm.vue

@@ -0,0 +1,84 @@
+
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form
+        :model="pacsDetailForm"
+        ref="pacsDetailForm"
+        class="sub-form"
+        :validate-on-rule-change="false"
+      >
+        <el-form-item label="单位" label-width="110px" prop="unit">
+          <el-input v-model.trim="pacsDetailForm.unit" placeholder="请输入单位" @blur="handleValue('unit')"></el-input>
+        </el-form-item>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="数值范围" label-width="110px" prop="minval">
+              <el-input v-model.trim="pacsDetailForm.minval" placeholder="请输入最小值" @blur="handleValue('minval')"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="2">
+            <div class="turns">——</div>
+          </el-col>
+          <el-col :span="10">
+            <el-form-item label label-width="0px" prop="maxval">
+              <el-input v-model.trim="pacsDetailForm.maxval" placeholder="请输入最大值" @blur="handleValue('maxval')"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label label-width="110px" prop="range">
+          <el-radio-group v-model="pacsDetailForm.range" @change="handleValue('range')">
+            <el-radio :label="0">范围内</el-radio>
+            <el-radio :label="1">范围外</el-radio>
+          </el-radio-group>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'PacsDetailForm',
+  props: ['data'],
+  data() {
+    return {
+      pacsDetailForm: {
+        unit: '',
+        range: 0,
+        maxval: '',
+        minval: ''
+      }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.pacsDetailForm.unit = this.data.unit;
+      this.pacsDetailForm.range = this.data.range;
+      this.pacsDetailForm.maxval = this.data.maxval;
+      this.pacsDetailForm.minval = this.data.minval;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.pacsDetailForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.turns {
+  text-align: center;
+  height: 40px;
+  line-height: 40px;
+  color: #dcdfe6;
+}
+</style>

+ 49 - 0
src/components/cdssManage/knowledge/PacsForm.vue

@@ -0,0 +1,49 @@
+
+<template>
+  <el-row>
+    <el-col :span="24">
+      <el-form :model="pacsForm" ref="pacsForm" class="sub-form" :validate-on-rule-change="false">
+        <el-form-item label="性别" label-width="110px" prop="gender">
+          <el-select v-model="pacsForm.gender" placeholder="请选择性别" clearable style="width: 100%"  @change="handleValue('gender')">
+            <el-option label="男" value="男"></el-option>
+            <el-option label="女" value="女"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+    </el-col>
+  </el-row>
+</template>
+
+<script>
+export default {
+  name: 'PacsForm',
+  props: ['data'],
+  data() {
+    return {
+      pacsForm: {
+        gender: ''
+      }
+    };
+  },
+  computed: {},
+  created() {
+    this._initData();
+  },
+  mounted() {},
+  methods: {
+    _initData() {
+      this.pacsForm.gender = this.data.gender;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.pacsForm[from]
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less" scoped>
+</style>

+ 1 - 1
src/components/cdssManage/lis/Lis.vue

@@ -2,7 +2,7 @@
   <div>
     <crumbs :title="title + hospitaiName" linkTo="MedicalTermCDSS">
       <el-form :inline="true" class="demo-form-inline">
-        <el-form-item>
+        <el-form-item style="marginBottom: 0px">
           <el-button type="text" class="downTemplate" @click="exportModule">导入模板下载</el-button>
           <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" />
           <el-button size="mini" @click="importPage">{{uploadInfo}}</el-button>

+ 1 - 1
src/components/cdssManage/operation/Operation.vue

@@ -2,7 +2,7 @@
   <div>
     <crumbs :title="title + hospitaiName" linkTo="MedicalTermCDSS">
       <el-form :inline="true" class="demo-form-inline">
-        <el-form-item>
+        <el-form-item style="marginBottom: 0px">
           <el-button type="text" class="downTemplate" @click="exportModule">导入模板下载</el-button>
           <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" />
           <el-button size="mini" @click="importPage">{{uploadInfo}}</el-button>

+ 1 - 1
src/components/cdssManage/pacs/Pacs.vue

@@ -2,7 +2,7 @@
   <div>
     <crumbs :title="title + hospitaiName" linkTo="MedicalTermCDSS">
       <el-form :inline="true" class="demo-form-inline">
-        <el-form-item>
+        <el-form-item style="marginBottom: 0px">
           <el-button type="text" class="downTemplate" @click="exportModule">导入模板下载</el-button>
           <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" />
           <el-button size="mini" @click="importPage">{{uploadInfo}}</el-button>

+ 5 - 0
src/routes.js

@@ -171,6 +171,9 @@ import AddDept from '@components/cdssManage/dept/AddDept.vue';  //科室关联
 import Plan from '@components/cdssManage/plan/Plan.vue';  //关联维护设置
 import AddPlan from '@components/cdssManage/plan/AddPlan.vue';  //关联维护设置
 
+import KnowledgeManage from '@components/cdssManage/knowledge/KnowledgeManage.vue';  //知识图谱标准术语维护
+import AddKnowledge from '@components/cdssManage/knowledge/AddKnowledge.vue';  //知识图谱标准术语维护-新增编辑
+
 import HospitalCDSS from '@components/cdssManage/hospital/Hospital.vue';  //医院管理
 import AddHospitalCDSS from '@components/cdssManage/hospital/AddHospital.vue';  //医院管理--新增编辑
 import HospitalUserCDSS from '@components/cdssManage/hospitalUser/HospitalUser.vue';  //医院用户管理
@@ -405,6 +408,8 @@ export default [
       // { path: 'YXSYK-GLWH', component: Correlation, name: 'Correlation' }, //关联维护设置
       { path: 'LT-CDSSSJWH-DZBLFAPZ', component: Plan, name: 'Plan' }, //电子病历方案配置
       { path: 'LT-CDSSSJWH-DZBLFAPZEDIT', component: AddPlan, name: 'AddPlan' }, //电子病历方案配置--新增编辑
+      { path: 'LT-CDSSSJWH-ZSTPBZSYWH', component: KnowledgeManage, name: 'KnowledgeManage' }, //知识图谱标准术语维护
+      { path: 'LT-CDSSSJWH-ZSTPBZSYWHEDIT', component: AddKnowledge, name: 'AddKnowledge' }, //知识图谱标准术语维护--新增编辑
 
       { path: 'LT-CDSSSJWH-YYGL', component: HospitalCDSS, name: 'HospitalCDSS' }, //医院管理
       { path: 'LT-CDSSSJWH-YYGLEDIT', component: AddHospitalCDSS, name: 'AddHospitalCDSS' }, //医院管理--新增编辑