zhouna 4 lat temu
rodzic
commit
f23637d7a9

+ 2 - 1
src/api/config.js

@@ -1,5 +1,5 @@
 // const testUrl = 'http://223.93.170.82:23650'
-const testUrl = ''
+const testUrl = 'http://192.168.2.236:5050'
 
 export default {
   host: 'http://192.168.2.121:5050',
@@ -527,6 +527,7 @@ export default {
       'zskRuleDetail':'/api/cdssman/klRule/getByIdRuleInfo',//规则详情
       'zskTypeList':'/api/cdssman/klRulePlan/getMenu',//类型列表
       'zskSearchConcept':'/api/cdssman/klDisease/searchConcept',//知识库搜索术语
+      'zskUpdateAll':'/api/cdssman/cache/clearRuleAll',//更新数据
 
   },
   menuIconList: { //菜单对应图标

+ 2 - 2
src/api/knowledgeLib.js

@@ -27,7 +27,7 @@ export default {
     saveRuleApply(param){
         return axios.post(urls.zskActiveRule,param);
     },
-    reloadLib() {    //医学术语命名维护-加载词库
-        return axios.post(urls.reloadLib)
+    zskUpdateAll() {    //更新数据
+        return axios.post(urls.zskUpdateAll)
     },
 }

+ 41 - 17
src/components/knowledgeExtra/AddNewRule.vue

@@ -20,6 +20,7 @@
                                     :value="item.id">
                             </el-option>
                         </el-select>
+                        <span class="tip-text">注:更改术语类型,将会清空已填写的规则内容~</span>
                     </el-form-item>
                     <el-form-item label="规则术语类型:" prop="parLenCode">
                         <el-select v-model="form.parLenCode"
@@ -32,6 +33,7 @@
                                     :value="item.code">
                             </el-option>
                         </el-select>
+                        <span class="tip-text">注:更改规则术语类型,将会清空已填写的规则内容~</span>
                     </el-form-item>
                     <el-form-item  class="addDepartFormItem" label="医学标准术语:" prop="parConceptId">
                         <el-select clearable filterable remote :remote-method="searchConcept" v-model="form.parConceptId">
@@ -43,7 +45,7 @@
                             </el-option>
                         </el-select>
                     </el-form-item>
-                    <el-form-item label="有无子条件:" prop="parHasSub">
+                    <!--<el-form-item label="有无子条件:" prop="parHasSub">
                         <el-select v-model="form.parHasSub"
                                    placeholder="请选择"
                                    size="small">
@@ -54,13 +56,14 @@
                                     :value="item.id">
                             </el-option>
                         </el-select>
-                    </el-form-item>
+                    </el-form-item>-->
                     <el-form-item label="附加信息:" prop="remind" class="parMsg">
                         <el-input type="textarea" :rows="3" placeholder="请输入附加信息" v-model="form.parMsg" maxlength="121"></el-input>
                     </el-form-item>
                     <el-form-item v-if="form.parHasSub===1" label="规则内容:" prop="remind" class="discDesc">
                         <SubRulesGroup v-for="(group,i) in subGroups"
                                        :data="group"
+                                       :firstPlace="firstPlace"
                                        :baseTypes="baseTypeList"
                                        :inx="i"
                                        :isLast="subGroups.length===1"
@@ -89,6 +92,8 @@
                 conceptList:[],
                 baseTypeList:[],
                 conceptName:'',
+                firstPlace:null,
+                checkFirstPlace:false,
                 subGroups:[[{
                     subDescription:'',
                     parRuleType:'',
@@ -123,7 +128,7 @@
                     }],
                     parRuleType:[{ required: true, message: '请选择规则类型',trigger: ['blur'] }],
                     parLenCode:[{ required: true, message: '请选择规则术语类型',trigger: ['blur'] }],
-                    parlibName:[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }],
+                    parConceptId:[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }],
                     parHasSub:[{ required: true, message: '请选择有无子条件',trigger: ['blur'] }],
                     parMsg:[{
                         validator: (rule,value,callback)=>{
@@ -158,8 +163,19 @@
                 this.ruleTermTypeList = obj.subMenuList;
             },
             'form.parLenCode':function(val){
+                if(!val){
+                    this.baseTypeList = [];
+                    return ;
+                }
                 const obj = this.ruleTermTypeList.find((it)=>it.code===val);
                 this.baseTypeList = obj.subMenuList;
+            },
+            'form.parConceptId':function(val){
+                if(this.checkFirstPlace) {
+                    this.firstPlace = this.conceptList.find((it) => it.conceptId === val);
+                }else{
+                    this.firstPlace =null;
+                }
             }
         },
         components:{
@@ -198,21 +214,23 @@
                 });
             },
             ruleTypeChange(val){       //规则类型选中
-                //this.showConfirmDialog('确定要修改规则类型吗?修改后规则内容将被清空',function(){
-                    this.form.parRuleType=val;
-                    this.form.parLenCode='';
-                    const obj = this.ruleTypeList.find((it)=>it.id===val);//console.log(val)
-                    this.ruleTermTypeList = obj.subMenuList;
-                    this.setInitGroupData();
-                //});
+                this.form.parRuleType=val;
+                this.form.parLenCode='';
+                const obj = this.ruleTypeList.find((it)=>it.id===val);//console.log(val)
+                this.ruleTermTypeList = obj.subMenuList;
+                this.setInitGroupData();
             },
             ruleTermChange(val){        //规则术语类型选中
-                //this.showConfirmDialog('确定要修改规则术语类型吗?修改后规则内容将被清空',function(){
-                    this.form.parLenCode=val;
-                    const obj = this.ruleTermTypeList.find((it)=>it.code===val);
-                    this.baseTypeList = obj.subMenuList;
-                    this.setInitGroupData();
-                //});
+                this.form.parLenCode=val;
+                const obj = this.ruleTermTypeList.find((it)=>it.code===val);
+                this.baseTypeList = obj.subMenuList;
+                this.setInitGroupData();
+                this.form.parHasSub=obj.subMenuList.length?1:0;
+                if(obj.firstPlace===1){
+                    this.checkFirstPlace=true;
+                }else{
+                    this.checkFirstPlace=false;
+                }
             },
             getTypeList(){
               const typeListData = JSON.parse(localStorage.getItem("zskTypesList"));
@@ -231,7 +249,7 @@
                   subMinUnit:'',
                   subMinValue:''
               }]];
-              this.form.parlibName='';//医学标准术语清空
+              this.form.parConceptId='';//医学标准术语清空
               this.conceptList=[];  //下拉列表清空
             },
             getDetail(){
@@ -287,7 +305,9 @@
             confirm(){
                 this.$refs['form'].validate((valid) => {
                     if (valid) {
+                        this.form.klRuleByIdSub=undefined;
                         this.form.klRuleInfoSaveSub = this.form.parHasSub?this.formatGroups():undefined;
+                        this.form.parConceptId = this.form.parConceptId.conceptId;
                         let params = this.form;
                         if(this.parId){//修改/复制
                             params = Object.assign({},this.form,{id:this.isCopy?undefined:this.parId})
@@ -310,6 +330,10 @@
         color: #545455;
         min-width: 980px;
         position: relative;
+        .tip-text{
+            color:#F56C6C;
+            margin-left: 10px;
+        }
         .conceptItem{
             padding: 0 10px;
             cursor: pointer;

+ 28 - 43
src/components/knowledgeExtra/RuleManager.vue

@@ -35,8 +35,7 @@
             <el-form class="secLine">
                 <el-form-item>
                     <el-button size="mini" @click="addRule" type="warning" style="margin:0 10px">+ 新增规则</el-button>
-                    <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" accept=".csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
-                    <el-button size="mini" @click="uploadClick">更新数据</el-button>
+                    <el-button size="mini" @click="update">更新数据</el-button>
                 </el-form-item>
             </el-form>
         </crumbs>
@@ -57,7 +56,11 @@
                 </el-table-column>
                 <el-table-column
                         prop="parRuleType"
-                        label="规则类型">
+                        label="规则类型"
+                        width="100">
+                    <template slot-scope="scope">
+                        {{statusTrans(scope.row.parRuleType)}}
+                    </template>
                 </el-table-column>
                 <el-table-column
                         prop="parConceptName"
@@ -182,6 +185,10 @@
             })
         },
         methods: {
+            statusTrans(type){
+                const obj = this.ruleTypeList.find((it)=>it.type===type);
+                return obj&&obj.name;
+            },
             getTypeList(){
                 const typeListData = JSON.parse(localStorage.getItem("zskTypesList"));
                 if(typeListData){
@@ -313,7 +320,7 @@
                     id:row.parId
                 };
                 const txt=row.parStatus===0?'重新启用':'禁用';
-                const warningTxt = isDelete?'是否删除该关系?可能对现有系统造成影响':'是否'+txt+'该条数据?';
+                const warningTxt = isDelete?'是否删除该规则?可能对现有系统造成影响':'是否'+txt+'该条数据?';
                 const handleFn = isDelete?api.deleteRule:(row.parStatus===0?api.saveRuleApply:api.deleteRuleApply);
                 this.showConfirmDialog(warningTxt,()=>{
                     handleFn(params).then((res)=>{
@@ -348,46 +355,24 @@
                     parRuleType:'',
                 };
             },
-            uploadClick(){
-                let inp = document.getElementById("upFile");
-                inp.click();
-            },
-            uploadFile(e){
-                let fileInfo = e.target.files[0];
-                e.preventDefault();
-                let formData = new FormData();
-                formData.append('uploadfile', fileInfo);
-                const header = {
-                    headers:{
-                        'Content-Type': 'multipart/form-data'
-                    }
-                }
-                api.RelationUpload(formData,header).then((res)=>{
-                    if(res.data.code==0){
-                        this.$message({
-                            message: '上传成功',
-                            type: 'success',
-                        });
-                        this.getDataList()
-                    }else{
-                        this.$alert(res.data.msg,'错误信息',{
-                            dangerouslyUseHTMLString: true,
-                            confirmButtonText: '确定',
-                            callback: action => {
-                                /*this.$message({
-                                  type: 'info',
-                                  message: `action: ${ action }`
-                                });*/
-                            }
-                        });
+            update(){
+                const loading = this.$loading({
+                    lock: true,
+                    text: 'Loading',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(0, 0, 0, 0.7)'
+                });
+                api.zskUpdateAll().then((res) => {
+                    loading.close();
+                    if (res.data.code == '0') {
+                        this.warning('更新成功','success');
+                        this.getDataList();
                     }
-                })
-                this.getDataList();
-                //解决上传相同文件不触发change
-                let inp = document.getElementById("upFile");
-                inp.value = "";
-
-            }
+                }).catch((error) => {
+                    loading.close();
+                    this.warning('更新失败,请重试')
+                });
+            },
         }
     }
 </script>

+ 23 - 6
src/components/knowledgeExtra/SubConditions.vue

@@ -3,10 +3,11 @@
         <el-form ref="form" label-width="150px" class="sub-condition-form" :model="groupData" :rules="rules">
             <span class="del-btn"  @click="delRule">删除</span><!--:class="isLast?'disable del-btn':'del-btn'"-->
             <el-form-item label="基础规则名称:" prop="subDescription">
-                <el-input v-model.trim = "groupData.subDescription"></el-input>
+                <el-input v-model.trim = "groupData.subDescription" :disabled="ind===0&&firstPlace"></el-input>
             </el-form-item>
             <el-form-item label="基础规则类型:" prop="subType">
                 <el-select v-model="groupData.subType"
+                           :disabled="ind===0&&firstPlace"
                            placeholder="请选择"
                            size="small"
                            @change="subTypeChange">
@@ -20,6 +21,7 @@
             </el-form-item>
             <el-form-item label="基础规则术语类型:" prop="subLenCode">
                 <el-select v-model="groupData.subLenCode"
+                           :disabled="ind===0&&firstPlace"
                            placeholder="请选择"
                            size="small">
                     <el-option
@@ -31,7 +33,7 @@
                 </el-select>
             </el-form-item>
             <el-form-item  class="addDepartFormItem" label="医学标准术语:" prop="subConceptId">
-                <el-select clearable remote filterable :remote-method="searchConcept" v-model="groupData.subConceptId">
+                <el-select clearable remote filterable :disabled="ind===0&&firstPlace" :remote-method="searchConcept" v-model="groupData.subConceptId">
                     <el-option
                             v-for="item in conceptList"
                             :key="item.conceptId"
@@ -125,7 +127,7 @@
     import api from '@api/knowledgeLib.js';
     export default {
         name:'subCondititons',
-        props:['groupData','ind','isLast','baseTypes'],
+        props:['groupData','ind','isLast','baseTypes','firstPlace'],
         data(){
             return {
                 baseTermTypeList:[],
@@ -150,7 +152,7 @@
                     }],
                     subType:[{ required: true, message: '请选择基础规则类型',trigger: ['blur'] }],
                     subLenCode:[{ required: true, message: '请选择基础规则术语类型',trigger: ['blur'] }],
-                    subLibName:[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }],
+                    subConceptId:[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }],
                     type:[{ required: true, message: '请选择类型',trigger: ['blur'] }],
                     subMaxOperator:[{ required: true, message: '请选择最大值操作符号',trigger: ['blur'] }],
                     subMaxValue:[{ required: true, message: '请输入最大值',trigger: ['blur'] }],
@@ -171,10 +173,25 @@
             },
             'baseTypes':{
                 handler:function(){
+                    if(!this.groupData.subType){
+                        this.baseTermTypeList =[];
+                        return;
+                    }
                     const obj = this.baseTypes.find((it)=>it.type===this.groupData.subType);
                     this.baseTermTypeList = obj.subMenuList;
                 },
                 deep:true
+            },
+            'firstPlace':function(val){
+                if(!val)return;
+                const sub = this.baseTypes.find((it)=>it.firstPlace===1);
+                this.groupData.subType=sub.type;
+                this.baseTermTypeList =sub.subMenuList;
+                this.groupData.subLenCode=this.baseTermTypeList.find((it)=>it.firstPlace===1).code;
+                this.conceptList=[val];
+                this.subDescription=val.conceptName;
+                this.groupData.subConceptId = val.conceptId;
+                this.groupData.subConceptName = val.conceptName;
             }
         },
         created(){
@@ -224,9 +241,9 @@
                     this.warning("初始状态规则不能删除~");
                     return;
                 }
-                this.showConfirmDialog("是否删除该条规则,可能对现有系统会造成影响",()=>{
+                //this.showConfirmDialog("是否删除该条规则,可能对现有系统会造成影响",()=>{
                     this.$emit("delRule",this.ind);
-                });
+                //});
 
             },
             warning(msg,type){

+ 2 - 1
src/components/knowledgeExtra/SubRulesGroup.vue

@@ -5,6 +5,7 @@
                        :isLast="rules.length===1"
                        :ind="i"
                        :baseTypes="baseTypes"
+                       :firstPlace="firstPlace"
                        @changeVal="handleInput"
                        @addRule="addRule"
                        @delRule="delRule"></SubConditions>
@@ -18,7 +19,7 @@
     import SubConditions from './SubConditions.vue';
     export default {
         name:'SubRulesGroup',
-        props:['data','inx','isLast','baseTypes'],
+        props:['data','inx','isLast','baseTypes','firstPlace'],
         data(){
             return {
             }