Przeglądaj źródła

术语静态知识接口重新对接

zhouna 6 lat temu
rodzic
commit
9a04f1b835

+ 7 - 7
src/api/config.js

@@ -133,21 +133,21 @@ export default {
     'getPhysicalExamTempByDepId':'api/icssman/deptVital/getModuleByDeptId', //通过科室id获取查体模板
     'savePhysicalExamTemp':'api/icssman/deptVital/saveDeptVitals',//保存查体模板
     'delPhysicalExamTemp':'api/icssman/deptVital/delAllDeptVitalList',//删除查体模板
-    'getConceptKnowledgeList':'/api/knowledgeman/libraryDetail/getLibraryDetailList', //  术语静态知识列表
-    'getConceptKnowledge':'/api/knowledgeman/Knowledge/getConceptKnowledge',//术语静态知识查询
+    'getConceptKnowledgeList':'/api/knowledgeman/conceptDetail/page', //  术语静态知识列表
+    'getConceptKnowledge':'/api/knowledgeman/conceptDetail/getByConceptId',//术语静态知识详情
     'getConceptInfo':'/api/knowledgeman/concept/getConceptInfo', //  搜索术语
     'versionInfo': 'api/icssman/versionInfo/getVersionInfoAlls', //版本信息
     'addVersInfo': 'api/icssman/versionInfo/saveVersionInfoAlls', //版本信息-添加
     'updateVersInfo': 'api/icssman/versionInfo/updateVersionInfoAlls', //版本信息-修改
     'delVersionInfo': 'api/icssman/versionDetail/cancelVersionDetails', //版本信息-删除版本说明
     'addVersionInfo': 'api/icssman/versionDetail/addVersionDetails', //版本信息-添加版本说明
-    'modiVersionInfo': 'api/icssman/versionDetail/updateVersionDetails', //版本信息-修改版本说明
+    'modiVersionInfo': 'api/icssman/versionDetail/upgetConceptKnowledgedateVersionDetails', //版本信息-修改版本说明
     'getVersionDetlInfo': 'api/icssman/versionDetail/getDetailById', //版本信息-版本说明列表获取
-    'promptServer':'/api/icssman/file/uploadImage',    //静态知识
+    'promptServer':'/api/knowledgeman/file/uploadImage',    //静态知识富文本图片上传
     /**************医学术语维护****************/
     'getKnowledgeEnums':'api/knowledgeman/getKlmEnumsData', //术语库枚举
-	'saveConceptInfo':'/api/knowledgeman/libraryDetail/addLibraryDetail',   //保存术语静态知识
-    'delConceptInfo':'/api/knowledgeman/libraryDetail/removeLibraryDetail',   //删除术语静态知识
+	  'saveConceptInfo':'/api/knowledgeman/conceptDetail/insertOrUpdate',   //保存术语静态知识
+    'delConceptInfo':'/api/knowledgeman/conceptDetail/delete',   //删除术语静态知识
     'knowledgeName': 'api/knowledgeman/concept/getAllInformation', //医学术语-命名维护
     'knowledgeUpload': 'api/knowledgeman/concept/conceptInfoExcelIm', //医学术语-命名维护-导入
     'allKnowledgeType': 'api/knowledgeman/lexicon/getAllLexicon', //医学术语-类型列表
@@ -168,7 +168,7 @@ export default {
     'addMedicalInfo': '/api/knowledgeman/medical/addMedicalInfo', //医学术语--属性维护--术语医学属性添加或者编辑
     'removeMedicalInfo': '/api/knowledgeman/medical/removeMedicalInfo', //医学术语--属性维护--术语医学属性删除
     'getAllLexiconRelationship':'/api/knowledgeman/lexicon/getAllLexicon', //医学术语--获取所有关系类型
-    'getAllConcept':'/api/knowledgeman/concept/getAllConcept',   //医学术语--获取所有概念(标准术语)
+    'getAllConcept':'/api/knowledgeman/conceptDetail/index',   //医学术语--获取所有概念(标准术语)
     'getAllBodypart': '/api/knowledgeman/bodypart/getAllBodypart',  //医学术语--获取所有部位
     'getAllDepts': '/api/knowledgeman/medical/getAllDepts',  //医学术语--获取所有科室
     'getLisMappingPage': '/api/icssman/lisMapping/getLisMappingPage', //医学数据-化验大小项与公表项维护-列表

+ 52 - 78
src/components/icss/AddMedicinePrompt.vue

@@ -1,9 +1,5 @@
 <template>
     <div class="NoiseTemplateWrapper TemplateWrapper">
-        <!-- <div class="groupTitle"><i
-                class="el-icon-back"
-                @click="back"
-        ></i> 医学静态知识--{{isEdit?'修改':'添加'}}</div> -->
         <crumbs
           :title=" isEdit? '医学术语静态知识维护-修改':'医学术语静态知识维护-添加'"
           class="topBack"
@@ -14,43 +10,29 @@
                      :model="form"
                      label-width="160px"
                      ref="groups">
-                <el-form-item v-if="!isEdit" label="选择医学标准术语:" prop="selectedTerm">
+                <el-form-item v-if="!isEdit" label="选择标准术语:" prop="selectedTerm">
                     <el-select v-model="form.selectedTerm"
                                filterable
                                remote
                                clearable
                                value-key="conceptId"
                                ref="termName"
-                               placeholder="搜索术语"
+                               placeholder="搜索"
                                :remote-method="searchTerms">
-                        <el-option v-for="term in terms" :key="term.conceptId" :label="term.nameAndType" :value="term" ></el-option>
+                        <el-option v-for="term in terms" :key="term.conceptId" :label="term.name" :value="term" ></el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="已选择医学标准术语:" label-width="160px">
+                <el-form-item label="已选择标准术语:" label-width="160px">
                     {{form.selectedTermName}}
                 </el-form-item>
-                <el-form-item label="术语类型:">
-                    {{form.selectedTermType}}
-                    <!--<el-select  filterable
-                                remote
-                                clearable
-                                v-model="form.termType"
-                                placeholder="搜索术语类型">
-                        <el-option v-for="it in termTypes" :label="it.name" :value="it.name" :key="it.id"></el-option>
-                    </el-select>-->
-                </el-form-item>
                 <p class="line"></p>
-                <el-form-item label="添加静态知识" style="font-weight: bold">
-                </el-form-item>
-                <el-form-item label="静态知识来源:" prop="source">
-                    <el-input v-if="!isEdit" v-model="form.source" placeholder="输入静态知识来源"></el-input>
-                    {{isEdit?form.source:''}}
-                </el-form-item>
-                <InfoParagraph :data="form.prags[0]"
-                               :index="0"
-                               :len="1"
+                <InfoParagraph v-for="(f,i) in form.prags"
+                               :data="f"
+                               :index="i"
                                :isEdit = "isEdit"
-                               ref="subForm"></InfoParagraph>
+                               ref="subForm"
+                               @add="addParagraph(i)"
+                               @del="delParagraph"></InfoParagraph>
             </el-form>
             <div class="btn">
                 <el-button
@@ -67,6 +49,7 @@
    */
   import api from '@api/icss.js';
   import InfoParagraph from './MedicineInfoPg';
+  import config from '@api/config';
 
   export default {
     name: 'AddMedicinePrompt',
@@ -87,7 +70,6 @@
           isTip:0,                 //是否要覆盖,0不覆盖,1覆盖
           selectedTerm:'',            //术语标签
           termType:'',
-          source:'',
           selectedTermName:'',
           selectedTermType:'',
           prags:[{              //单个段落相关
@@ -99,15 +81,6 @@
             text:''}]
         },
         rules: {
-          source: [
-            { required: true, message: '请输入静态知识来源', trigger: 'change' },
-            { validator: (rule,value,callback)=>{
-                if(value.length>30){
-                  callback(new Error('段落标题不能超过30字'));
-                }else{
-                  callback();
-                }}, trigger: 'change' }
-          ],
           selectedTerm: [
             { required: true, message: '请选择术语标签', trigger: 'change' }
           ]
@@ -117,54 +90,58 @@
     watch:{
       'form.selectedTerm':function(newVal){
         const name = newVal.name;
-        //this.editData.selectedTermName = name;
         this.form.selectedTermName = name;
-        this.form.selectedTermType = newVal.type;
         this.form.conceptId = newVal.conceptId;
       }
     },
     created:function(){
       const {isEdit,data} = this.$route.params;
-      //this.getTermTypes();
       if(isEdit){
         this.isEdit = isEdit;
-        /*api.getTremList({term:data.name,type:data.type}).then((res) => {
+        this.form.selectedTermName = data.libName;
+        this.form.conceptId = data.conceptId;
+        api.getTremList({conceptId:data.conceptId}).then((res) => {
           if (res.data.code == '0') {
             const data = res.data.data;
-            this.form.prags=data.information&&data.information.map((it)=>{
-              return {title:it.title,position:this.mapStringToNum(it.position),content:it.content,isReason:it.isReason};
+            this.form.prags=data&&data.map((it)=>{
+              return {
+                        title:it.title,
+                        position:this.mapStringToNum(it.position),
+                        content:it.content.replace('{imageUrlPrefix}',config.imgHost),
+                        isReason:it.isReason,
+                        text:it.text,
+                        disabled:true};
             });
-            console.log(data)
+
           }
         }).catch((error) => {
           console.log(error);
-        });*/
-        this.form.selectedTermName = data.conceptName;
-        this.form.selectedTermType = data.conceptType;
-        this.form.source = data.source;
-        this.form.conceptId = data.conceptId;
-        this.form.prags[0].content = data.content;
-        this.form.prags[0].isReason = data.isReason;
-        this.form.prags[0].position=this.mapStringToNum(data.position);
-        this.form.prags[0].title = data.title;
+        });
       }
     },
     methods: {
-      back() { this.$router.go(-1) },
-      async getTermTypes(){
-        let types = localStorage.getItem('termTypes');
-        if(!types){
-          types = await api.getAllType();
-          if(types.data.code=='0'){
-            this.termTypes = types.data.data.records;
-          }
-        }else{
-          this.termTypes = JSON.parse(types).records;
+      addParagraph(i){
+        this.form.prags.push({
+          title:'',
+          content:'',
+          isReason:0,
+          orderNo:this.form.prags.length,
+          position:[],
+          text:''});
+      },
+      delParagraph(i){
+        if(this.form.prags.length==1){
+          this.warning('只剩一个段落,不能再删啦!');
+          return;
         }
+        this.showConfirmDialog('确定要删除该段落?', () => {
+          this.form.prags.splice(i,1);
+        });
       },
+      back() { this.$router.go(-1) },
       searchTerms(query){
         //搜索术语列表
-        api.getAllConcept({name:query,isConcept:1}).then((res) =>{
+        api.getAllConcept({name:query}).then((res) =>{
           if(res.data.code === '0') {
             this.terms = res.data.data;
           }else{
@@ -187,26 +164,26 @@
           }
         });
         //验证段落表单
-        //for(let i=0;i<this.$refs.subForm.length;i++){
-          it=this.$refs.subForm;
+        for(let i=0;i<this.$refs.subForm.length;i++){
+          it=this.$refs.subForm[i];
           it.$refs.form.validate((valid) =>{
             if(!valid){
               goOn = false;
             }
           });
-        //};
+        };
 
         if(!goOn){
           return;
         }
         //通过必填验证,提交保存
-        const item=this.form.prags[0];
-        const param = Object.assign({},item,{
-                                                position:typeof item.position=='string'?item.position:item.position.join(","),
-                                                source:this.form.source,
-                                                conceptId:this.form.conceptId,
-                                                isTip:1,
-                                              });
+        const item=this.form.prags;
+        const param =item.map((it)=>{
+          return Object.assign({},it,{
+                                        position:typeof it.position=='string'?it.position:it.position.join(","),
+                                        conceptId:this.form.conceptId,
+                                        content:it.content.replace(config.imgHost,'{imageUrlPrefix}')});
+        });
         this.showSaveDialog(param,'是否保存该静态知识?');
       },
       showSaveDialog(param,msg) {
@@ -215,9 +192,6 @@
             if (res.data.code === '0') {
               this.warning(res.data.msg || '保存成功', 'success');
               this.$router.push("/admin/LT-YXSYKWH-YXSYJTZSWH");
-            } else if(res.data.code === '00000002'){
-              //已存在,选择是否覆盖
-              this.showSaveDialog(Object.assign({},param,{isTip:0}),res.data.msg);
             } else {
               this.warning(res.data.msg)
             }

+ 30 - 17
src/components/icss/MedicineInfoPg.vue

@@ -1,28 +1,30 @@
 <template>
     <el-form :rules="rules" :model="data" ref="form" class="sub-form">
-        <p class="line"></p>
         <!--<el-input v-model="form.orderNo" :value="index" type="hidden"></el-input>-->
+        <el-form-item label="显示位置:" prop="position" label-width="160px">
+            <el-checkbox-group v-model="data.position" :disabled="data.disabled">
+                <el-checkbox v-for="it in positions" :key="it.key" :label="it.key">{{it.name}}</el-checkbox>
+            </el-checkbox-group>
+        </el-form-item>
         <el-form-item label="是否属于诊断依据:" prop="isReason" label-width="160px">
-            <el-select v-model="data.isReason" placeholder="请选择" :disabled="isEdit&&index<len">
+            <el-select v-model="data.isReason" placeholder="请选择" :disabled="data.disabled">
                 <el-option label="否" :value="0"></el-option>
                 <el-option label="是" :value="1"></el-option>
             </el-select>
         </el-form-item>
-        <el-form-item label="显示位置:" prop="position" label-width="160px">
-            <el-checkbox-group v-model="data.position" :disabled="isEdit&&index<len">
-                <el-checkbox v-for="it in positions" :key="it.key" :label="it.key">{{it.name}}</el-checkbox>
-            </el-checkbox-group>
-        </el-form-item>
         <el-form-item label="标题名称:" prop="title" label-width="160px">
-            <el-input v-model="data.title" :disabled="isEdit&&index<len"></el-input>
+            <el-input v-model="data.title" :disabled="data.disabled"></el-input>
         </el-form-item>
         <el-form-item label="内容" prop="content" label-width="160px">
-            <quillEditor v-model="data.content" :options="editorOption"  class="ql-editor"></quillEditor>
+            <quillEditor v-model="data.content"
+                         :options="editorOption"
+                         class="ql-editor"
+                         ref="quillEditor"></quillEditor>
         </el-form-item>
-        <!--<el-form-item label-width="130px">
+        <el-form-item label-width="130px">
             <el-button @click="addEmit">添加段落</el-button>
             <el-button @click="delEmit" type="info">删除本段落</el-button>
-        </el-form-item>-->
+        </el-form-item>
     </el-form>
 </template>
 
@@ -35,7 +37,7 @@
   import {container, ImageExtend, QuillWatch} from 'quill-image-extend-module';
   Quill.register('modules/ImageExtend', ImageExtend);
   export default{
-    props:['data','index','isEdit','len'],
+    props:['data','index','isEdit'],
     name:'MedicineInfoParagraph',
     components:{
       quillEditor
@@ -89,23 +91,34 @@
         }
       }
     },
+    watch:{
+      'data.content':function(){
+        this.data.text = this.$refs.quillEditor.quill.root.innerText;
+      }
+    },
     mounted(){
       //显示位置枚举列表
-      const pos = localStorage.getItem("icssEnumsData");
-      this.positions = JSON.parse(pos)&&JSON.parse(pos).introducePositionEnum;
+      const pos = localStorage.getItem("knowledgeEnumsData");
+      this.positions = JSON.parse(pos)&&JSON.parse(pos).positionTypeEnum;
     },
     methods:{
-      /*addEmit(){
+      addEmit(){
         this.$emit("add");
       },
       delEmit(){
         this.$emit("del",this.index);
       },
-      emitVal(){
+      /*emitVal(){
         let data = this.form;
         let pst=this.form.position;
+        const content =  this.form.content.replace(config.imgHost,'{imageUrlPrefix}');
+        const text = this.$refs.quillEditor;console.log(text)
         pst = typeof pst=='string'?pst:pst.join(',');
-        data =   Object.assign({},data,{position:this.form.position?pst:'',orderNo:this.index,text:''});
+        data =   Object.assign({},data,{
+                                        position:this.form.position?pst:'',
+                                        orderNo:this.index,
+                                        text:'',
+                                        content:content});
         this.$emit("change",this.index,data);
       }*/
     }

+ 31 - 53
src/components/icss/MedicinePrompt.vue

@@ -2,17 +2,9 @@
     <div>
         <crumbs title="医学术语静态知识维护">
             <el-form :inline="true" class="demo-form-inline">
-                <el-form-item label="医学标准术语:">
-                    <el-input size="mini" v-model="filter.term" placeholder="医学标准术语" clearable></el-input>
+                <el-form-item label="标准术语:">
+                    <el-input size="mini" v-model="filter.term" placeholder="标准术语" clearable></el-input>
                 </el-form-item>
-                <el-form-item label="标题名称:">
-                    <el-input size="mini" v-model="filter.title" placeholder="标题名称" clearable></el-input>
-                </el-form-item>
-                <!--<el-form-item label="术语类型:">
-                    <el-select size="mini" v-model="filter.type" placeholder="术语类型" clearable>
-                        <el-option v-for="it in termTypes" :label="it.name" :value="it.name" :key="it.id"></el-option>
-                    </el-select>
-                </el-form-item>-->
                 <el-form-item>
                     <el-button size="mini" @click="filterDatas">确认</el-button>
                     <router-link to="/admin/LT-YXSYKWH-TJYXSYJTZS" style="margin:0 10px">
@@ -38,35 +30,34 @@
                         :show-overflow-tooltip="true">
                 </el-table-column>
                 <el-table-column
-                        prop="conceptNameAndType"
-                        label="医学标准术语">
-                </el-table-column>
-                <el-table-column
-                        prop="source"
-                        label="静态知识来源">
+                        prop="libName"
+                        label="标准术语">
                 </el-table-column>
-                <!--<el-table-column
-                        prop="conceptType"
-                        label="术语类型"
-                        width="140">
-                </el-table-column>-->
                 <el-table-column
                         prop="title"
-                        label="标题名称"
+                        label="关联标题"
                         width="240">
                 </el-table-column>
+                <el-table-column
+                        label="状态">
+                    <template slot-scope="scope">
+                        <span v-if="scope.row.isDeleted=='N'">启用中</span>
+                        <span v-if="scope.row.isDeleted=='Y'" class="delete">已删除</span>
+                    </template>
+                </el-table-column>
                 <el-table-column
                         prop="modifier"
                         label="操作人"
                         width="80">
                 </el-table-column>
-
                 <el-table-column
                         label="操作" width="120">
                     <template slot-scope="scope">
-                        <el-button type="text" size="small" @click="toEditProduct(scope.row)">修改</el-button>
+                        <el-button v-if="scope.row.isDeleted=='Y'" type="text" size="small" class="is-disabled">修改</el-button>
+                        <el-button v-if="scope.row.isDeleted=='N'" type="text" size="small" @click="toEditProduct(scope.row)">修改</el-button>
                         <span style="margin:0 3px;">|</span>
-                        <el-button type="text" size="small" class="delete" @click="showDelDialog(scope.row)">删除</el-button>
+                        <el-button v-if="scope.row.isDeleted=='Y'" type="text" size="small" @click="showReuseDialog(scope.row)">恢复</el-button>
+                        <el-button v-if="scope.row.isDeleted=='N'" type="text" size="small" class="delete" @click="showDelDialog(scope.row)">删除</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -85,13 +76,11 @@
 
 <script>
   import api from '@api/icss.js';
-  import utils from '@api/utils.js';
 
   export default {
     name: 'MedicinePrompt',
     data: function () {
       return {
-        termTypes:[],
         list: [],
         cacheData: {},
         currentPage: 1,
@@ -107,29 +96,8 @@
     },
     created() {
       this.getDataList();
-      this.getTermTypes();
     },
     methods: {
-      getTermTypes(){
-        api.getAllType().then((res)=>{
-          if(res.data.code=='0'){
-            this.termTypes = res.data.data.records;
-          }
-        }).catch((error)=>{
-          console.log('获取术语类型失败');
-        });
-      },
-      /*async getTermTypes(){
-        let types = localStorage.getItem('termTypes');
-        if(!types){
-          types = await api.getAllType();
-          if(types.data.code=='0'){
-            this.termTypes = types.data.data.records;
-          }
-        }else{
-          this.termTypes = JSON.parse(types).records;
-        }
-      },*/
       toEditProduct(row){
         this.$router.push({
           name:'AddMedicinePrompt',
@@ -153,10 +121,6 @@
           console.log(error);
         });
       },
-      getDetailList(id) {
-        const param = {'id': id,};
-        this.$router.push({name:'PromptDetail', params:{id: id}})
-      },
       getFilterItems() {
         const param = {
           conceptName:this.filter.term,
@@ -196,7 +160,21 @@
       },
       showDelDialog(row){
         this.showConfirmDialog('是否删除该静态知识?',()=>{
-          api.delConceptInfo({id:row.id}).then((res)=>{
+          api.delConceptInfo({conceptId:[row.conceptId],status:'Y'}).then((res)=>{
+            if(res.data.code=='0'){
+              this.warning(res.data.msg||'操作成功','success');
+              this.getDataList();
+            }else{
+              this.warning(res.data.msg);
+            }
+          }).catch((error)=>{
+            this.warning(error);
+          })
+        });
+      },
+      showReuseDialog(row){
+        this.showConfirmDialog('是否重新启用该条数据?',()=>{
+          api.delConceptInfo({conceptId:[row.conceptId],status:"N"}).then((res)=>{
             if(res.data.code=='0'){
               this.warning(res.data.msg||'操作成功','success');
               this.getDataList();