Browse Source

236接口调试完成 ----知识图谱标准术语维护

morphone1995 4 years ago
parent
commit
8bd80eb143

+ 24 - 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.236: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,17 @@ 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 });
+  },
 };

+ 28 - 27
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,11 @@ export default {
     'revStopPlansCDSS': '/api/cdssman/plan/revStopPlans',   //停用启用方案配置
     'savePlanInfoDatasCDSS': '/api/cdssman/plan/savePlanInfoDatas',   //保存更新方案配置信息
 
+    'getEntityPageCDSS': '/entityman/getEntityPage',   //知识图谱分页
+    'isEntitymanExistCDSS': '/entityman/isExist',   //知识图谱-唯一校验
+    'saveEntity': '/entityman/saveEntity',   //知识图谱
+    'getEntitymanById': '/entityman/getById',   //查看实体对象
 
-
-
-    
     '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.236';
+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';
 

+ 303 - 55
src/components/cdssManage/knowledge/AddKnowledge.vue

@@ -4,15 +4,15 @@
       :title="isEdit ? '知识图谱标准术语维护-修改' : '知识图谱标准术语维护-添加'"
       class="topBack"
       :param="$route.params"
-      linkTo="Plan"
+      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="termType">
+            <el-form-item label="术语分类" class="selectMedicine" prop="labelType">
               <el-select
-                v-model="form.termType"
+                v-model="form.labelType"
                 placeholder="请选择术语分类"
                 clearable
                 filterable
@@ -26,41 +26,81 @@
                 ></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="术语名称" prop="termName">
-              <el-input v-model="form.termName" placeholder="请输入术语名称"></el-input>
+            <el-form-item label="术语名称" prop="name">
+              <el-input
+                v-model.trim="form.name"
+                placeholder="请输入术语名称"
+                @blur="handlePinyin($event)"
+                :disabled="form.labelType===''"
+              ></el-input>
             </el-form-item>
-            <el-form-item label="术语拼音" prop="planCode">
-              <el-input v-model="form.planCode" placeholder="请输入术语拼音"></el-input>
+            <el-form-item label="术语拼音" prop="pycode">
+              <el-input v-model.trim="form.pycode" placeholder="请输入术语拼音"></el-input>
             </el-form-item>
             <!-- 诊断 -->
-            <DiseaseForm v-if="form.termType==='医保疾病名称'"></DiseaseForm>
+            <DiseaseForm v-if="form.labelType==='医保疾病名称'" :data="form" @handleInput="handleInput"></DiseaseForm>
             <!-- 手术和操作 -->
-            <OperationForm v-else-if="form.termType==='医保手术和操作名称'" ref="operationForm"></OperationForm>
+            <OperationForm
+              v-else-if="form.labelType==='医保手术和操作名称'"
+              ref="operationForm"
+              :data="form"
+              @handleInput="handleInput"
+            ></OperationForm>
             <!-- 检查 | 检查子项 -->
             <PacsForm
-              v-else-if="form.termType==='辅助检查名称' || form.termType === '辅助检查子项目名称'"
-              :key="form.termType"
+              v-else-if="form.labelType==='辅助检查名称' || form.labelType === '辅助检查子项目名称'"
+              :key="form.labelType"
+              :data="form"
+              @handleInput="handleInput"
             ></PacsForm>
-            <!-- 检查细项 -->
-            <PacsDetailForm v-else-if="form.termType==='实验室检查名称' "></PacsDetailForm>
+            <!-- 检验细项 -->
+            <PacsDetailForm
+              v-else-if="form.labelType==='实验室检查名称' "
+              :data="form"
+              @handleInput="handleInput"
+            ></PacsDetailForm>
             <!-- 实验室检查细项(开单合理性) -->
-            <LabPacsForm v-else-if="form.termType==='实验室检查' "></LabPacsForm>
+            <LabPacsForm
+              v-else-if="form.labelType==='实验室检查' "
+              :data="form"
+              @handleInput="handleInput"
+            ></LabPacsForm>
             <!-- 化验细项及结果(推理)-->
-            <AssayForm v-else-if="form.termType==='化验细项及结果' " ref="assayForm"></AssayForm>
+            <AssayForm
+              v-else-if="form.labelType==='化验细项及结果' "
+              ref="assayForm"
+              :data="form"
+              @handleInput="handleInput"
+            ></AssayForm>
             <!-- 药物过敏原-->
-            <DrugAllergensForm v-else-if="form.termType==='药物过敏原'" ref="drugAllergensForm"></DrugAllergensForm>
+            <DrugAllergensForm
+              v-else-if="form.labelType==='药物过敏原'"
+              ref="drugAllergensForm"
+              :data="form"
+              @handleInput="handleInput"
+            ></DrugAllergensForm>
             <!-- 药品注册名称-->
-            <DrugRegNameForm v-else-if="form.termType==='药品注册名称' "></DrugRegNameForm>
+            <DrugRegNameForm
+              v-else-if="form.labelType==='药品注册名称' "
+              :data="form"
+              @handleInput="handleInput"
+            ></DrugRegNameForm>
             <!-- 药品代码通用名-->
-            <DrugGeneNameForm v-else-if="form.termType==='药品代码通用名' " ref="drugGeneNameForm"></DrugGeneNameForm>
+            <DrugGeneNameForm
+              v-else-if="form.labelType==='药品代码通用名' "
+              ref="drugGeneNameForm"
+              :data="form"
+              @handleInput="handleInput"
+            ></DrugGeneNameForm>
             <!-- 体征 | 实验室检查危急值-->
             <CommonForm
-              v-else-if="form.termType==='实验室检查危急值' || form.termType === '体征'"
-              :key="form.termType"
+              v-else-if="form.labelType==='实验室检查危急值' || form.labelType === '体征'"
+              :key="form.labelType"
+              :data="form"
+              @handleInput="handleInput"
             ></CommonForm>
             <el-form-item label="静态术语标识">
-              <!-- <el-input v-model="form.termStatic" placeholder="静态术语标识"></el-input> -->
-              <span style="paddingLeft: 12px; color: #606266">{{form.termStatic}}</span>
+              <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>
@@ -74,6 +114,7 @@
 
 <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';
@@ -100,35 +141,130 @@ export default {
   data() {
     return {
       form: {
-        termType: '',
-        termName: '',
-        planCode: '',
-        termStatic: '无'
+        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, //手术等级(医保手术和操作属性:0、1、2、3、4,默认0)
+        pycode: '', //拼音编码
+        range: 0, //范围(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: '' //标准注册剂型(药品代码通用名属性)
       },
       saveDisable: false, //保存按钮禁止点击
       rules: {
-        termType: [
+        labelType: [
           { required: true, message: '请选择术语分类', trigger: 'change' }
         ],
-        termName: [
+        name: [
           { required: true, message: '请输入术语名称', trigger: 'change' },
           { max: 100, message: '最多输入100字', trigger: 'blur' }
         ],
-        planCode: [
+        pycode: [
           { required: true, message: '请输入术语拼音', trigger: 'change' }
         ]
       },
       isEdit: false,
-      terminologyData: [] // 术语分类
+      terminologyData: [], // 术语分类
+      nameFlag: '', // 判断术语名称是否被修改
+      isValidate: true,
+      id: ''
     };
   },
   watch: {},
   computed: {},
   created() {
-    this._getTerminologyData();
+    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 => {
@@ -137,15 +273,97 @@ export default {
         }
       });
     },
+
+    // 处理参数
+    _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() {
       // console.log(this.$route.params,'this.$route.params')
-      // const {currentPage,isEdit} = this.$route.params
-      // let numberpage = 1
-      // if(isEdit){
-      //   numberpage = currentPage
-      // }
+      const { currentPage, isEdit } = this.$route.params;
+      let numberpage = 1;
+      if (isEdit) {
+        numberpage = currentPage;
+      }
+      // console.log(this.isValidate);
+      if (this.isValidate === false) return; // 术语名称已存在
       let goOn = true;
-      if (this.form.termType === '药物过敏原') {
+      if (this.form.labelType === '药物过敏原') {
         this.$refs.drugAllergensForm.$refs.drugAllergensForm &&
           this.$refs.drugAllergensForm.$refs.drugAllergensForm.validate(
             valid => {
@@ -156,7 +374,7 @@ export default {
             }
           );
       }
-      if (this.form.termType === '医保手术和操作名称') {
+      if (this.form.labelType === '医保手术和操作名称') {
         this.$refs.operationForm.$refs.operationForm &&
           this.$refs.operationForm.$refs.operationForm.validate(valid => {
             if (valid) {
@@ -165,7 +383,7 @@ export default {
             }
           });
       }
-      if (this.form.termType === '化验细项及结果') {
+      if (this.form.labelType === '化验细项及结果') {
         this.$refs.assayForm.$refs.assayForm &&
           this.$refs.assayForm.$refs.assayForm.validate(valid => {
             if (valid) {
@@ -174,7 +392,7 @@ export default {
             }
           });
       }
-      if (this.form.termType === '药品代码通用名') {
+      if (this.form.labelType === '药品代码通用名') {
         this.$refs.drugGeneNameForm.$refs.drugGeneNameForm &&
           this.$refs.drugGeneNameForm.$refs.drugGeneNameForm.validate(valid => {
             if (valid) {
@@ -183,24 +401,13 @@ export default {
             }
           });
       }
-
-      // console.log(this.$refs.drugAllergensForm);
       this.$refs.form.validate(valid => {
         if (valid) {
           if (!goOn) return;
           this.saveDisable = true;
           let params = this._getParams();
-          if (this.isEdit) {
-            params = {
-              ...params,
-              relationId: this.form.relationId,
-              relationName: this.form.relationName,
-              relationStatus: this.form.relationStatus,
-              type: this.form.conceptType
-            };
-          }
-          return;
-          api.saveBillmanRecord(params).then(res => {
+          // console.log(params, '==========');
+          api.saveEntity(params).then(res => {
             if (res.data.code === '0') {
               this.$message({
                 showClose: true,
@@ -208,9 +415,8 @@ export default {
                 type: 'success',
                 duration: 1000
               });
-              this.isSaveSuccess = true; // 保存成功,可正常退出
               this.$router.push({
-                name: 'Bill',
+                name: 'KnowledgeManage',
                 params: Object.assign({}, this.$route.params, {
                   currentPage: numberpage
                 })
@@ -236,6 +442,48 @@ export default {
           goOn = false;
         }
       });
+    },
+
+    // 处理拼音转换&验证唯一性
+    handlePinyin(e) {
+      if (this.nameFlag === e.target.value) {
+        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.form.pycode = pinyin.getCamelChars(e.target.value);
+            }
+          }
+        });
+      }
+
+      // this.form.pycode = pinyin.getCamelChars(e.target.value);
     }
   }
 };

+ 21 - 8
src/components/cdssManage/knowledge/AssayForm.vue

@@ -7,17 +7,18 @@
         class="sub-form"
         :validate-on-rule-change="false"
         :rules="rules"
-      >       
+      >
         <el-form-item label="特殊" label-width="110px" prop="special">
           <el-select
             v-model="assayForm.special"
             placeholder="请选择特殊"
             clearable
+            @change="handleValue('special')"
             style="width: 100%"
             ref="special"
           >
-            <el-option label="是" :value="1"></el-option>
-            <el-option label="否" :value="2"></el-option>
+            <el-option label="是" value="是"></el-option>
+            <el-option label="否" value="否"></el-option>
           </el-select>
         </el-form-item>
       </el-form>
@@ -26,10 +27,9 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'AssayForm',
-  props: [],
+  props: ['data'],
   data() {
     let checkFrequency = (rule, value, callback) => {
       let special = this.$refs.special.value;
@@ -42,7 +42,7 @@ export default {
 
     return {
       assayForm: {
-        special: '',
+        special: ''
       },
       rules: {
         special: [
@@ -56,9 +56,22 @@ export default {
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  methods: {
+    _initData() {
+      this.assayForm.special = this.data.special;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.assayForm[from]
+      });
+    }
+  }
 };
 </script>
 

+ 17 - 24
src/components/cdssManage/knowledge/CommonForm.vue

@@ -7,10 +7,9 @@
         ref="commonForm"
         class="sub-form"
         :validate-on-rule-change="false"
-        :rules="rules"
       >
         <el-form-item label="单位" label-width="110px" prop="unit">
-          <el-input v-model="commonForm.unit" placeholder="请输入单位"></el-input>
+          <el-input v-model.trim="commonForm.unit" placeholder="请输入单位" @blur="handleValue('unit')"></el-input>
         </el-form-item>
       </el-form>
     </el-col>
@@ -18,39 +17,33 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'CommonForm',
-  props: [],
+  props: ['data'],
   data() {
-    let checkFrequency = (rule, value, callback) => {
-      let conditionListName = this.$refs.conditionListName.value;
-      if (conditionListName === '') {
-        callback('请输入条件明细');
-      } else {
-        callback();
-      }
-    };
-
     return {
       commonForm: {
         unit: ''
-      },
-      rules: {
-        condition: [
-          {
-            required: true,
-            validator: checkFrequency,
-            trigger: ['blur', 'change']
-          }
-        ]
       }
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  methods: {
+    _initData() {
+      this.commonForm.unit = this.data.unit;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.commonForm[from]
+      });
+    }
+  }
 };
 </script>
 

+ 73 - 42
src/components/cdssManage/knowledge/DiseaseForm.vue

@@ -6,39 +6,66 @@
         ref="diseaseForm"
         class="sub-form"
         :validate-on-rule-change="false"
-        :rules="rules"
       >
-        <el-form-item label="疾病别称" label-width="110px" prop="planName">
-          <el-input v-model="diseaseForm.planName" placeholder="请输入疾病别称"></el-input>
+        <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="planName">
-              <el-input v-model="diseaseForm.planName" placeholder="请输入最小值"></el-input>
+            <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="planName">
-              <el-input v-model="diseaseForm.planName" placeholder="请输入最大值"></el-input>
+            <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="planName">
-          <el-input v-model="diseaseForm.planName" placeholder="请输入所属科室"></el-input>
+        <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="planName">
+        <el-form-item label="性别归属" label-width="110px" prop="planName">
           <el-select
-            v-model="diseaseForm.sexType"
-            placeholder="请选择性别"
+            v-model="diseaseForm.gender"
+            placeholder="请选择性别归属"
             clearable
+            @change="handleValue('gender')"
             style="width: 100%"
           >
-            <el-option label="男" :value="1"></el-option>
-            <el-option label="女" :value="2"></el-option>
+            <el-option label="男性疾病" value="男"></el-option>
+            <el-option label="女性疾病" value="女"></el-option>
           </el-select>
         </el-form-item>
       </el-form>
@@ -47,48 +74,52 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'diseaseForm',
-  props: [],
+  props: ['data'],
   data() {
-    let checkFrequency = (rule, value, callback) => {
-      let conditionListName = this.$refs.conditionListName.value;
-      if (conditionListName === '') {
-        callback('请输入条件明细');
-      } else {
-        callback();
-      }
-    };
-
     return {
       diseaseForm: {
-        planName: '',
-        sexType: ''
-      },
-      rules: {
-        condition: [
-          {
-            required: true,
-            validator: checkFrequency,
-            trigger: ['blur', 'change']
-          }
-        ]
+        alias: '',
+        category: '',
+        dept: '',
+        minAge: '',
+        maxAge: '',
+        gender: ''
       }
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  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]
+      });
+    }
+  }
 };
 </script>
 
 <style lang="less" scoped>
-.turns{
+.turns {
   text-align: center;
-  height:40px;
+  height: 40px;
   line-height: 40px;
-  color: #DCDFE6;
+  color: #dcdfe6;
 }
 </style>

+ 39 - 14
src/components/cdssManage/knowledge/DrugAllergensForm.vue

@@ -8,23 +8,32 @@
         :validate-on-rule-change="false"
         :rules="rules"
       >
-        <el-form-item label="药品类型" label-width="110px" prop="dragType">
+        <el-form-item label="药品类型" label-width="110px" prop="medtype">
           <el-select
-            v-model="drugAllergensForm.dragType"
+            v-model="drugAllergensForm.medtype"
             placeholder="请选择药品类型"
             clearable
+            @change="handleValue('medtype')"
             style="width: 100%"
             ref="dragType"
           >
-            <el-option label="药品" :value="1"></el-option>
-            <el-option label="药品类别" :value="2"></el-option>
+            <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="unit">
-          <el-input v-model="drugAllergensForm.dragType" placeholder="请输入结果"></el-input>
+        <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="unit">
-          <el-input v-model="drugAllergensForm.dragType" placeholder="请输入名称"></el-input>
+        <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>
@@ -32,10 +41,9 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'DrugAllergensForm',
-  props: [],
+  props: ['data'],
   data() {
     let checkFrequency = (rule, value, callback) => {
       let dragType = this.$refs.dragType.value;
@@ -48,10 +56,12 @@ export default {
 
     return {
       drugAllergensForm: {
-        dragType: ''
+        medtype: '',
+        result: '',
+        alias: ''
       },
       rules: {
-        dragType: [
+        medtype: [
           {
             required: true,
             validator: checkFrequency,
@@ -62,9 +72,24 @@ export default {
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  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>
 

+ 96 - 26
src/components/cdssManage/knowledge/DrugGeneNameForm.vue

@@ -8,35 +8,76 @@
         :validate-on-rule-change="false"
         :rules="rules"
       >
-        <el-form-item label="最小包装数量" label-width="110px" prop="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入紧急给药途径"></el-input>
+        <el-form-item label="最小包装数量" label-width="110px" prop="min_pack_num">
+          <el-input
+            v-model.number="drugGeneNameForm.min_pack_num"
+            placeholder="请输入最小包装数量"
+            @blur="handleValue('min_pack_num')"
+          ></el-input>
         </el-form-item>
-        <el-form-item label="注册剂型" label-width="110px" prop="register">
-          <el-input v-model="drugGeneNameForm.register" placeholder="请输入注册剂型" ref="register"></el-input>
+        <el-form-item label="注册剂型" label-width="110px" prop="reg_JiXin">
+          <el-input
+            v-model.trim="drugGeneNameForm.reg_JiXin"
+            placeholder="请输入注册剂型"
+            ref="register"
+            @blur="handleValue('reg_JiXin')"
+          ></el-input>
         </el-form-item>
-        <el-form-item label="药品本位码" label-width="110px" prop="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入药品本位码"></el-input>
+        <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-item label="最小包装单位" label-width="110px" prop="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入最小包装单位"></el-input>
+        <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="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入注册规格"></el-input>
+        <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="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入包装材质"></el-input>
+        <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="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入药品企业"></el-input>
+        <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="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入批准文号"></el-input>
+        <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="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入最小制剂单位"></el-input>
+        <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="unit">
-          <el-input v-model="drugGeneNameForm.HighRiskLevel" placeholder="请输入标准注册剂型"></el-input>
+        <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>
     </el-col>
@@ -44,10 +85,9 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'DrugGeneNameForm',
-  props: [],
+  props: ['data'],
   data() {
     let checkFrequency = (rule, value, callback) => {
       let register = this.$refs.register.value;
@@ -60,8 +100,16 @@ export default {
 
     return {
       drugGeneNameForm: {
-        HighRiskLevel: '',
-        register: ''
+        min_pack_num: '', //最小包装数量(药品代码通用名属性)
+        reg_JiXin: '', //注册剂型(药品代码通用名属性)
+        benWei_Code: '', //药品本位码(药品代码通用名属性)
+        min_pack_unit: '', //最小包装单位(药品代码通用名属性)
+        reg_GuiGe: '', //注册规格(药品代码通用名属性)
+        pack_CaiLiao: '', //包装材质(药品代码通用名属性)
+        producer: '', //药品企业(药品代码通用名属性)
+        license_num: '', //批准文号(药品代码通用名属性)
+        min_prod_unit: '', //最小制剂单位(药品代码通用名属性)
+        stand_reg_JiXin: '' //标准注册剂型(药品代码通用名属性)
       },
       rules: {
         register: [
@@ -75,9 +123,31 @@ export default {
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  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>
 

+ 54 - 40
src/components/cdssManage/knowledge/DrugRegNameForm.vue

@@ -7,40 +7,53 @@
         ref="drugRegNameForm"
         class="sub-form"
         :validate-on-rule-change="false"
-        :rules="rules"
       >
-        <el-form-item label="药品高危级别" label-width="110px" prop="planName">
+        <el-form-item label="药品高危级别" label-width="110px" prop="risklevel">
           <el-select
-            v-model="drugRegNameForm.HighRiskLevel"
+            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-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="unit">
-          <el-input v-model="drugRegNameForm.HighRiskLevel" placeholder="请输入紧急给药途径"></el-input>
+        <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="planName">
+        <el-form-item label="禁忌性别" label-width="110px" prop="conflict_gender">
           <el-select
-            v-model="drugRegNameForm.tabooGender"
+            v-model="drugRegNameForm.conflict_gender"
             placeholder="请选择禁忌性别"
             clearable
+            @change="handleValue('conflict_gender')"
             style="width: 100%"
           >
-            <el-option label="男" :value="1"></el-option>
-            <el-option label="女" :value="0"></el-option>
+            <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="unit">
-          <el-input v-model="drugRegNameForm.HighRiskLevel" placeholder="请输入结果"></el-input>
+        <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="unit">
-          <el-input v-model="drugRegNameForm.HighRiskLevel" placeholder="请输入名称"></el-input>
+        <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>
@@ -48,40 +61,41 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'DrugRegNameForm',
-  props: [],
+  props: ['data'],
   data() {
-    let checkFrequency = (rule, value, callback) => {
-      let conditionListName = this.$refs.conditionListName.value;
-      if (conditionListName === '') {
-        callback('请输入条件明细');
-      } else {
-        callback();
-      }
-    };
-
     return {
       drugRegNameForm: {
-        HighRiskLevel: '',
-        tabooGender: ''
-      },
-      rules: {
-        condition: [
-          {
-            required: true,
-            validator: checkFrequency,
-            trigger: ['blur', 'change']
-          }
-        ]
+        risklevel: '',
+        conflict_geiyao: '',
+        conflict_gender: '',
+        result: '',
+        alias: ''
       }
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  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>
 

+ 45 - 24
src/components/cdssManage/knowledge/KnowledgeManage.vue

@@ -1,25 +1,25 @@
 <template>
   <div>
-    <crumbs title="知识图谱标准术语维护">
+    <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.libType" placeholder="请选择" clearable>
+          <el-select size="mini" v-model="filter.labelType" placeholder="请选择" clearable>
             <el-option
               v-for="item in terminologyData"
               :label="item.name"
-              :value="item.orderNo"
+              :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.term" placeholder="请输入" clearable></el-input>
+          <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.sexType"
-            placeholder="静态知识标识"
+            v-model="filter.is_kl"
+            placeholder="请选择"
             clearable
             style="width: 100%"
           >
@@ -41,10 +41,14 @@
     <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="typeName" label="术语分类" width="120"></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="title" label="术语拼音" width="240" :show-overflow-tooltip="true"></el-table-column>
-        <el-table-column prop="title" label="静态知识标识" width="240" :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>
@@ -84,10 +88,10 @@ export default {
       terminologyData: [],
       searched: false,
       filter: {
-        term: '',
-        title: '',
+        name: '',
         status: '',
-        libType: ''
+        labelType: '',
+        is_kl: ''
       }
     };
   },
@@ -127,6 +131,20 @@ export default {
       });
     },
 
+    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(
@@ -172,14 +190,17 @@ export default {
         spinner: 'el-icon-loading',
         background: 'rgba(0, 0, 0, 0.7)'
       });
-      loading.close();
-      return; // 接口联调
       api
-        .getConceptKnowledgeList(param)
+        .getEntityPageCDSS(param)
         .then(res => {
           loading.close();
           if (res.data.code == '0') {
-            this.list = res.data.data;
+            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 => {
@@ -191,10 +212,10 @@ export default {
     },
     clearFilter() {
       this.filter = {
-        term: '',
-        title: '',
+        name: '',
         status: '',
-        libType: ''
+        labelType: '',
+        is_kl: ''
       };
     },
     getFilterItems(isTurnPage) {
@@ -203,12 +224,12 @@ export default {
         this.clearFilter();
       }
       const param = {
-        name: this.filter.term.trim(),
-        title: this.filter.title,
-        current: this.inCurrentPage || this.currentPage,
+        number: this.inCurrentPage - 1 || this.currentPage - 1,
         size: this.pageSize,
-        status: this.filter.status,
-        type: this.filter.libType
+        name: this.filter.name.trim(),
+        labelType: this.filter.labelType,
+        is_kl: this.filter.is_kl,
+        status: this.filter.status
       };
       return param;
     },

+ 17 - 24
src/components/cdssManage/knowledge/LabPacsForm.vue

@@ -7,10 +7,9 @@
         ref="labPacsForm"
         class="sub-form"
         :validate-on-rule-change="false"
-        :rules="rules"
       >
         <el-form-item label="单位" label-width="110px" prop="unit">
-          <el-input v-model="labPacsForm.planName" placeholder="请输入单位"></el-input>
+          <el-input v-model.trim="labPacsForm.unit" placeholder="请输入单位" @blur="handleValue('unit')"></el-input>
         </el-form-item>
       </el-form>
     </el-col>
@@ -18,39 +17,33 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'LabPacsForm',
-  props: [],
+  props: ['data'],
   data() {
-    let checkFrequency = (rule, value, callback) => {
-      let conditionListName = this.$refs.conditionListName.value;
-      if (conditionListName === '') {
-        callback('请输入条件明细');
-      } else {
-        callback();
-      }
-    };
-
     return {
       labPacsForm: {
         unit: ''
-      },
-      rules: {
-        condition: [
-          {
-            required: true,
-            validator: checkFrequency,
-            trigger: ['blur', 'change']
-          }
-        ]
       }
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  methods: {
+    _initData() {
+      this.labPacsForm.unit = this.data.unit;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.labPacsForm[from]
+      });
+    }
+  }
 };
 </script>
 

+ 35 - 15
src/components/cdssManage/knowledge/OperationForm.vue

@@ -8,23 +8,30 @@
         :validate-on-rule-change="false"
         :rules="rules"
       >
-        <el-form-item label="手术级别" label-width="110px" prop="operationLevel">
+        <el-form-item label="手术级别" label-width="110px" prop="opgrade">
           <el-select
-            v-model="operationForm.operationLevel"
+            v-model="operationForm.opgrade"
             placeholder="请选择手术级别"
             style="width: 100%"
-            ref="operationLevel"
+            ref="opgrade"
             clearable
           >
+            <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" prop="planName" v-if="operationForm.operationLevel === 2">
-          <!-- <el-input v-model="operationForm.highRisk" disabled></el-input> -->
-          <span style="paddingLeft: 12px; color: #606266">{{operationForm.highRisk}}</span>
+        <el-form-item
+          label="高危条件"
+          label-width="110px"
+          prop="planName"
+          v-if="operationForm.opgrade === 2"
+        >
+          <span
+            style="paddingLeft: 12px; color: #606266"
+          >{{operationForm.highriskcond === ''? '未设置': '已设置'}}</span>
         </el-form-item>
       </el-form>
     </el-col>
@@ -32,14 +39,13 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'OperationForm',
-  props: [],
+  props: ['data'],
   data() {
     let checkFrequency = (rule, value, callback) => {
-      let operationLevel = this.$refs.operationLevel.value;
-      if (operationLevel === '') {
+      let opgrade = this.$refs.opgrade.value;
+      if (opgrade === '') {
         callback('请选择手术级别');
       } else {
         callback();
@@ -48,11 +54,11 @@ export default {
 
     return {
       operationForm: {
-        operationLevel: 1,
-        highRisk: '未设置'
+        opgrade: '',
+        highriskcond: ''
       },
       rules: {
-        operationLevel: [
+        opgrade: [
           {
             required: true,
             validator: checkFrequency,
@@ -63,9 +69,23 @@ export default {
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  methods: {
+    _initData() {
+      this.operationForm.unit = this.data.unit;
+      this.operationForm.highriskcond = this.data.highriskcond;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.operationForm[from]
+      });
+    }
+  }
 };
 </script>
 

+ 31 - 36
src/components/cdssManage/knowledge/PacsDetailForm.vue

@@ -7,75 +7,70 @@
         ref="pacsDetailForm"
         class="sub-form"
         :validate-on-rule-change="false"
-        :rules="rules"
       >
         <el-form-item label="单位" label-width="110px" prop="unit">
-          <el-input v-model="pacsDetailForm.planName" placeholder="请输入单位"></el-input>
+          <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="planName">
-              <el-input v-model="pacsDetailForm.planName" placeholder="请输入最小值"></el-input>
+            <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="planName">
-              <el-input v-model="pacsDetailForm.planName" placeholder="请输入最大值"></el-input>
+            <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="unit">
-          <el-radio-group v-model="pacsDetailForm.range">
-            <el-radio label="范围内"></el-radio>
-            <el-radio label="范围外"></el-radio>
+        <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-item label="实验室检查指标" label-width="110px" prop="unit">
-          <el-input v-model="pacsDetailForm.planName" placeholder="请输入实验室检查指标"></el-input>
-        </el-form-item>
       </el-form>
     </el-col>
   </el-row>
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'PacsDetailForm',
-  props: [],
+  props: ['data'],
   data() {
-    let checkFrequency = (rule, value, callback) => {
-      let conditionListName = this.$refs.conditionListName.value;
-      if (conditionListName === '') {
-        callback('请输入条件明细');
-      } else {
-        callback();
-      }
-    };
-
     return {
       pacsDetailForm: {
         unit: '',
-        range: ''
-      },
-      rules: {
-        condition: [
-          {
-            required: true,
-            validator: checkFrequency,
-            trigger: ['blur', 'change']
-          }
-        ]
+        range: 0,
+        maxval: '',
+        minval: ''
       }
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  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>
 

+ 22 - 39
src/components/cdssManage/knowledge/PacsForm.vue

@@ -2,22 +2,11 @@
 <template>
   <el-row>
     <el-col :span="24">
-      <el-form
-        :model="pacsForm"
-        ref="pacsForm"
-        class="sub-form"
-        :validate-on-rule-change="false"
-        :rules="rules"
-      >
-        <el-form-item label="性别" label-width="110px" prop="planName">
-          <el-select
-            v-model="pacsForm.sexType"
-            placeholder="请选择性别"
-            clearable
-            style="width: 100%"
-          >
-            <el-option label="男" :value="1"></el-option>
-            <el-option label="女" :value="2"></el-option>
+      <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>
@@ -26,39 +15,33 @@
 </template>
 
 <script>
-import api from '@api/icss.js';
 export default {
   name: 'PacsForm',
-  props: [],
+  props: ['data'],
   data() {
-    let checkFrequency = (rule, value, callback) => {
-      let conditionListName = this.$refs.conditionListName.value;
-      if (conditionListName === '') {
-        callback('请输入条件明细');
-      } else {
-        callback();
-      }
-    };
-
     return {
       pacsForm: {
-        sexType: ''
-      },
-      rules: {
-        condition: [
-          {
-            required: true,
-            validator: checkFrequency,
-            trigger: ['blur', 'change']
-          }
-        ]
+        gender: ''
       }
     };
   },
   computed: {},
-  created() {},
+  created() {
+    this._initData();
+  },
   mounted() {},
-  methods: {}
+  methods: {
+    _initData() {
+      this.pacsForm.gender = this.data.gender;
+    },
+    // 传值
+    handleValue(from) {
+      this.$emit('handleInput', {
+        type: from,
+        value: this.pacsForm[from]
+      });
+    }
+  }
 };
 </script>