소스 검색

接口对接

zhouna 4 년 전
부모
커밋
03393901a9
4개의 변경된 파일110개의 추가작업 그리고 85개의 파일을 삭제
  1. 12 2
      src/api/zskDiagBase.js
  2. 63 4
      src/components/knowledgeExtra/AddDiagBase.vue
  3. 20 9
      src/components/knowledgeExtra/DiagBase.vue
  4. 15 70
      src/components/knowledgeExtra/DiagBaseItem.vue

+ 12 - 2
src/api/zskDiagBase.js

@@ -3,20 +3,30 @@ const urls = {
     'zskDiagBase':'/api/cdssman/klDiagnose/getDiagnosePage',    //知识库诊断依据维护
     'zskAddDiagBase':'/api/cdssman/klDiagnose/saveDiagnoseAll',
     'zskDelDiagBase':'/api/cdssman/klDiagnose/clearDiagnoseAll',
-    'zskStrDiagBase':'/api/cdssman/klDiagnose/startDiagnose',
-    'zskStopDiagBase':'/api/cdssman/klDiagnose/disableDiagnose',
+    'zskStrDiagBase':'/api/cdssman/klDiagnose/startDiagnose',   //启用
+    'zskStopDiagBase':'/api/cdssman/klDiagnose/disableDiagnose',    //禁用
     'zskDiagBaseDetail':'/api/cdssman/klDiagnose/getByIdDiagnoseAll',
     'zskTypeList':'/api/cdssman/klRulePlan/getMenu',//类型列表
     'searchDiag':'/api/cdssman/klDiagnose/findDiaName',
     'zskSearchConcept':'/api/cdssman/klDisease/searchConcept',//知识库搜索术语
+    'zskgetDict':'/api/cdssman/kl/dictionary/getDictionarys',//获取枚举
 };
 export default {
+    zskgetDict(){
+        return axios.post(urls.zskgetDict)
+    },
     getTypesList(param){
         return axios.post(urls.zskTypeList,param);
     },
     diagBasePage(param){
         return axios.post(urls.zskDiagBase, param)
     },
+    diagBaseApply(param){ //诊断依据--启用
+        return axios.post(urls.zskStrDiagBase, param)
+    },
+    diagBaseStop(param){ //诊断依据--禁用
+        return axios.post(urls.zskStopDiagBase, param)
+    },
     diagBaseDelete(param){ //诊断依据--删除
         return axios.post(urls.zskDelDiagBase, param)
     },

+ 63 - 4
src/components/knowledgeExtra/AddDiagBase.vue

@@ -92,9 +92,9 @@
                 this.id = info.id;
                 this.isCopy=param.copy;
                 this.title = "诊断依据维护-"+(this.isCopy?'复制':'修改')+"诊断依据";
-                this.form=Object.assign({},this.form,info);
-                //this.DiagGroups=this.formatGroupDatas(info.klRuleByIdSub);
-
+                this.conceptList = [{conceptId:info.conceptId,conceptName:info.conceptName}];
+                this.form=Object.assign({},this.form,this.formatData(info));
+                console.log(info)
             }
             this.setRules()
         },
@@ -107,6 +107,10 @@
 
         },
         methods:{
+            formatData(data){       //转换字段名
+                let str = JSON.stringify(data).replace(/byIdDTO/g,"groupVO").replace(/klDiagnoseByIdDTO/g,"klDiagnoseDetail");
+                return JSON.parse(str);
+            },
             setRules(){
                 let that=this;
                 let list=this.form.klDiagnoseTypeVO;
@@ -123,7 +127,62 @@
                                 that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basLibType']=[{ required: true, message: '请选择基础依据术语类型',trigger: ['change'] }];
                                 that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basConceptId']=[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }];
                                 that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.dataType']=[{ required: true, message: '请选择类型',trigger: ['change'] }];
-
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.maxOperator']=[{
+                                    validator: (rule,value,callback)=>{
+                                        const {maxVal,minOperator,minVal}=this.groupData;
+                                        const val=value+minOperator+minVal+maxVal;
+                                        if(!val||(!value&&maxVal!=='')){
+                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.minOperator']=[{
+                                    validator: (rule,value,callback)=>{
+                                        const {maxVal,maxOperator,minVal}=this.groupData;
+                                        const val=value+maxOperator+minVal+maxVal;
+                                        if(!val||(!value&&minVal!=='')){
+                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.maxVal']=[{
+                                    validator: (rule,value,callback)=>{
+                                        const {maxOperator,minOperator,minVal}=this.groupData;
+                                        const val=value+maxOperator+minVal+minOperator;
+                                        const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
+                                        if(!val||(value==''&&maxOperator)){
+                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                        }else if(value!==''&&!isNum){
+                                            callback(new Error('只能输入数字'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }]
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.minVal']=[{
+                                    validator: (rule,value,callback)=>{
+                                        const {maxVal,minOperator,maxOperator}=this.groupData;
+                                        const val=value+maxOperator+maxVal+minOperator;
+                                        const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
+                                        if(!val||(value==''&&minOperator)){
+                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                        }else if(value!==''&&!isNum){
+                                            callback(new Error('只能输入数字'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.eqValue']=[{
+                                    validator: (rule,value,callback)=>{
+                                        if(value===''){
+                                            callback(new Error('请输入'+this.textName));
+                                        }else if(value.length>200){
+                                            callback(new Error(this.textName+'不能超过200字'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }];
                             });
                         });
                     })

+ 20 - 9
src/components/knowledgeExtra/DiagBase.vue

@@ -67,9 +67,9 @@
                         label="操作"
                         width="180" fixed="right">
                     <template slot-scope="scope">
-                        <el-button type="text" size="small" @click="editData(scope.row.conceptId)">修改</el-button>
+                        <el-button type="text" size="small" @click="editData(scope.row)">修改</el-button>
                         <span style="margin:0 3px;">|</span>
-                        <el-button type="text" size="small" @click="editData(scope.row.conceptId,true)">复制</el-button>
+                        <el-button type="text" size="small" @click="editData(scope.row,true)">复制</el-button>
                         <span style="margin:0 3px;">|</span>
                         <el-button type="text" size="small" :class="scope.row.status === 0?'':'unvailable'" @click="showDelDialog(scope.row)">{{scope.row.status === 0?'启用':'禁用'}}</el-button>
                         <span style="margin:0 3px;">|</span>
@@ -148,7 +148,18 @@
         //     })
         // },
         methods: {
+            getDict(){
+                api.zskgetDict().then((res) => {
+                    if (res.data.code == '0') {
+                        const data = res.data.data;
+                        localStorage.setItem("zskDiagDicts",data['24'][0].val);
+                    }
+                }).catch((error) => {
+                    console.log(error);
+                });
+            },
             getTypeList(){
+                this.getDict();
                 api.getTypesList({planCode:'dis'}).then((res) => {
                     if (res.data.code == '0') {
                         const data = res.data.data;
@@ -249,17 +260,17 @@
                     resolve();
                 }).catch(() => {});
             },
-            editData(id,isCopy){
+            editData(row,isCopy){
                 const pam = this.searched ? {
                     currentPage: this.currentPage,
                     pageSize:this.pageSize,
                     filter: this.filter
                 } : {currentPage: this.currentPage,
                     pageSize:this.pageSize};
-                api.ruleDetail({id}).then((res) => {
+                api.diagBaseGetDetail({id:row.id}).then((res) => {
                     if (res.data.code == '0') {
                         const data = res.data.data;
-                        this.$router.push({name:'AddZskRule',params:{...pam,data,copy:isCopy}});
+                        this.$router.push({name:'AddZskDiagBase',params:{...pam,data:{...row,klDiagnoseTypeVO:data},copy:isCopy}});
                     }
                 }).catch((error) => {
                     this.warning('获取详情失败,请重试')
@@ -267,11 +278,11 @@
             },
             showDelDialog(row,isDelete){
                 const params = {
-                    id:row.parId
+                    id:row.id
                 };
-                const txt=row.parStatus===0?'重新启用':'禁用';
-                const warningTxt = isDelete?'是否删除该规则?可能对现有系统造成影响':'是否'+txt+'该条数据?';
-                const handleFn = isDelete?api.deleteRule:(row.parStatus===0?api.saveRuleApply:api.deleteRuleApply);
+                const txt=row.status===0?'重新启用':'禁用';
+                const warningTxt = isDelete?'是否删除该诊断依据?可能对现有系统造成影响':'是否'+txt+'该诊断依据?';
+                const handleFn = isDelete?api.diagBaseDelete:(row.status===0?api.diagBaseApply:api.diagBaseStop);
                 this.showConfirmDialog(warningTxt,()=>{
                     handleFn(params).then((res)=>{
                         if(res.data.code=='0'){

+ 15 - 70
src/components/knowledgeExtra/DiagBaseItem.vue

@@ -46,7 +46,7 @@
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item v-if="groupData.basType===2&&showDataType" label="选择类型:" :prop="ruleLine+ind+'.dataType'">
+            <el-form-item v-if="groupData.basType===2&&!onlyNum" label="选择类型:" :prop="ruleLine+ind+'.dataType'">
                 <el-select v-model="groupData.dataType"
                            placeholder="请选择"
                            size="small" @change="dataTypeChange">
@@ -58,7 +58,7 @@
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item class="min-margin" v-if="groupData.dataType==='1'" label="最大值:">
+            <el-form-item class="min-margin" v-if="groupData.dataType==='1'||onlyNum" label="最大值:">
                 <div class="select-item clearfix">
                     <el-col :span="3">
                         <el-form-item prop="maxOperator">
@@ -86,7 +86,7 @@
                     </el-col>
                 </div>
             </el-form-item>
-            <el-form-item class="min-margin" v-if="groupData.dataType==='1'" label="最小值:">
+            <el-form-item class="min-margin" v-if="groupData.dataType==='1'||onlyNum" label="最小值:">
                 <div class="select-item clearfix">
                     <el-col :span="3">
                         <el-form-item prop="minOperator">
@@ -148,65 +148,6 @@
                 ],
                 dataTypes:[{id:'1',name:'数值类型'},{id:'2',name:'文本类型'}],
                 conceptList:[],
-                rules:{
-
-                    maxOperator:[{
-                        validator: (rule,value,callback)=>{
-                            const {maxVal,minOperator,minVal}=this.groupData;
-                            const val=value+minOperator+minVal+maxVal;
-                            if(!val||(!value&&maxVal!=='')){
-                                callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
-                            }else{
-                                callback();
-                            }}, trigger: 'blur'
-                    }],
-                    minOperator:[{
-                        validator: (rule,value,callback)=>{
-                            const {maxVal,maxOperator,minVal}=this.groupData;
-                            const val=value+maxOperator+minVal+maxVal;
-                            if(!val||(!value&&minVal!=='')){
-                                callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
-                            }else{
-                                callback();
-                            }}, trigger: 'blur'
-                    }],
-                    maxVal:[{
-                        validator: (rule,value,callback)=>{
-                            const {maxOperator,minOperator,minVal}=this.groupData;
-                            const val=value+maxOperator+minVal+minOperator;
-                            const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
-                            if(!val||(value==''&&maxOperator)){
-                                callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
-                            }else if(value!==''&&!isNum){
-                                callback(new Error('只能输入数字'));
-                            }else{
-                                callback();
-                            }}, trigger: 'blur'
-                    }],
-                    minVal:[{
-                        validator: (rule,value,callback)=>{
-                            const {maxVal,minOperator,maxOperator}=this.groupData;
-                            const val=value+maxOperator+maxVal+minOperator;
-                            const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
-                            if(!val||(value==''&&minOperator)){
-                                callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
-                            }else if(value!==''&&!isNum){
-                                callback(new Error('只能输入数字'));
-                            }else{
-                                callback();
-                            }}, trigger: 'blur'
-                    }],
-                    eqValue:[{
-                        validator: (rule,value,callback)=>{
-                            if(value===''){
-                                callback(new Error('请输入'+this.textName));
-                            }else if(value.length>200){
-                                callback(new Error(this.textName+'不能超过200字'));
-                            }else{
-                                callback();
-                            }}, trigger: 'blur'
-                    }],
-                },
             }
         },
         watch: {
@@ -218,19 +159,20 @@
             },
         },
         created(){
-            this.numTypes = localStorage.getItem("zskNumDict");
             this.conceptList=[{conceptName:this.groupData.subLibName||this.groupData.subConceptName,conceptId:this.groupData.basConceptId}];
             if(this.groupData.basLibType){
                 this.baseTermTypeList=[{name:this.groupData.subLenName,code:this.groupData.basLibType}];
             }
         },
         computed:{
+            onlyNum:function(){
+                const codes=localStorage.getItem("zskDiagDicts")+',';
+                const type=this.groupData.basLibType;
+                return type&&codes.indexOf(this.groupData.basLibType+',')>-1;
+            },
             ruleLine:function(){
               return 'klDiagnoseTypeVO.'+this.parInx+'.groupVO.'+this.inx+'.klDiagnoseDetail.';
             },
-            showDataType:function(){
-                return (this.numTypes+',').indexOf(this.groupData.basLibType+',')===-1;
-            },
             showRegx:function(){
               return this.groupData.basType===3||this.groupData.basType===4;
             },
@@ -250,10 +192,13 @@
                     this.baseTermTypeList =[];
                     return;
                 }
-                this.basTypeName=this.baseTypes.find((it)=>it.type===val).name;
-                this.groupData.basLibType=this.groupData.basType;
-                this.clearConcept();
-                this.clearNumText();
+                if(this.showRegx){      //正则
+                    this.basTypeName=this.baseTypes.find((it)=>it.type===val).name;
+                    return;
+                }
+                this.groupData.basLibType='';
+                this.clearConcept();    //清空医学标准术语
+                this.clearNumText();    //清空数值、医学内容
                 const obj = this.baseTypes.find((it)=>it.type===val);
                 this.baseTermTypeList = obj.subMenuList;
             },