瀏覽代碼

规则内容禁止修改规则,删除限制

zhouna 4 年之前
父節點
當前提交
ed29042ce8

+ 18 - 7
src/components/knowledgeExtra/AddNewRule.vue

@@ -57,8 +57,8 @@
                             </el-option>
                         </el-select>
                     </el-form-item>-->
-                    <el-form-item label="附加信息:" prop="remind" class="parMsg">
-                        <el-input type="textarea" :rows="3" placeholder="请输入附加信息" v-model="form.parMsg" maxlength="301"></el-input>
+                    <el-form-item v-if="showMsg" label="附加信息:" prop="parMsg" class="parMsg">
+                        <el-input type="textarea" :rows="3" placeholder="请输入附加信息" v-model="form.parMsg"></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"
@@ -66,6 +66,7 @@
                                        :data="group"
                                        :baseTypes="baseTypeList"
                                        :inx="i"
+                                       :maxNum="subRuleMaxNum"
                                        :firstPlace="firstPlace"
                                        :isLast="subGroups.length===1"
                                        @addGroup="addGroup"
@@ -87,13 +88,15 @@
                 labelPosition:'left',
                 isFirst:true,
                 isCopy:false,
-                dict:'',
+                dict:'',        //规则内容固定的类型
+                msgDict:'',     //显示附加信息的类型
                 title:'规则维护-添加规则',
                 ruleTermTypeList:[],
                 ruleTypeList:[],
                 conceptList:[],
                 baseTypeList:[],
                 conceptName:'',
+                subRuleMaxNum:null,     //规则内容中规则的限制个数
                 firstPlace:null,
                 subGroups:[[{
                     subDescription:'',
@@ -134,7 +137,7 @@
                     parLenCode:[{ required: true, message: '请选择规则术语类型',trigger: ['change'] }],
                     parConceptId:[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }],
                     parHasSub:[{ required: true, message: '请选择有无子条件',trigger: ['change'] }],
-                    parMsg:[{
+                    parMsg:[{ required: true, message: '请输入附加信息',trigger: ['change'] },{
                         validator: (rule,value,callback)=>{
                             if(value.length>300){
                                 callback(new Error('附加信息不能超过300字'));
@@ -174,11 +177,12 @@
                 }
                 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);
-                    this.firstPlace['checkedType']=this.form.parRuleType+"-"+this.form.parLenCode;
+                    this.firstPlace['checkedType']=this.ruleTermCodeStr;
                 }else{
                     this.firstPlace =null;
                 }
@@ -188,9 +192,14 @@
             SubRulesGroup
         },
         computed:{
+            ruleTermCodeStr:function(){
+                return this.form.parRuleType+"-"+this.form.parLenCode
+            },
             checkFirstPlace:function(){
-                const str=this.form.parRuleType+"-"+this.form.parLenCode;
-                return this.dict.indexOf(str)>-1;
+                return this.dict.indexOf(this.ruleTermCodeStr)>-1;
+            },
+            showMsg:function(){
+                return this.ruleTermCodeStr.length>1&&this.msgDict.indexOf(this.ruleTermCodeStr)>-1;
             }
         },
         methods:{
@@ -200,6 +209,7 @@
                         const data = res.data.data;
                         const arr =data['20'].map((it)=>it.val);
                         this.dict = arr.join(",");
+                        this.msgDict=(data['21'].map((it)=>it.val)||[]).join(",");
                         localStorage.setItem("zskDicts",arr.join(","));
                     }
                 }).catch((error) => {
@@ -253,6 +263,7 @@
                 this.form.parLenCode=val;
                 const obj = this.ruleTermTypeList.find((it)=>it.code===val);
                 this.baseTypeList = obj.subMenuList;
+                this.subRuleMaxNum = obj.number;
                 this.setInitGroupData();
                 this.form.parHasSub=obj.subMenuList.length?1:0;
             },

+ 4 - 7
src/components/knowledgeExtra/SubConditions.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="groups-cont">
         <el-form ref="groupData" label-width="150px" class="sub-condition-form" :model="groupData" :rules="rules">
-            <span v-if="!disabled" class="del-btn"  @click="delRule">删除</span><!--:class="isLast?'disable del-btn':'del-btn'"-->
+            <span v-if="!disabled&&!isLast" 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" :disabled="disabled"></el-input>
             </el-form-item>
@@ -117,7 +117,7 @@
                 <el-input type="textarea" rows="3" placeholder="请输入正则表达式" v-model="groupData.subEqValue"></el-input>
             </el-form-item>
         </el-form>
-        <div class="inner-oper">
+        <div class="inner-oper" v-if="showAdd">
             <span>新增规则:</span>
             <span class="add-btn" @click="addRule"><img src="../../images/add.png" alt="新增规则"></span>
         </div>
@@ -127,7 +127,7 @@
     import api from '@api/knowledgeLib.js';
     export default {
         name:'subCondititons',
-        props:['groupData','ind','isLast','baseTypes','firstPlace','disabled'],
+        props:['groupData','ind','isLast','baseTypes','firstPlace','disabled','showAdd'],
         data(){
             return {
                 baseTermTypeList:[],
@@ -292,7 +292,6 @@
             }
         }
         .inner-oper{
-            border-top:2px solid #F5F5F5;
             padding: 15px 0 15px 21px;
             .add-btn {
                 cursor: pointer;
@@ -304,6 +303,7 @@
         .sub-condition-form{
             padding: 20px;
             position: relative;
+            border-bottom:2px solid #F5F5F5;
             .del-btn{
                 color: #FF5B5B;
                 cursor: pointer;
@@ -338,9 +338,6 @@
             line-height: 32px;
             height: 32px;
         }
-        .el-button--danger.is-plain{
-            background: none;
-        }
         .itemList {
             position: absolute;
             // display: none;

+ 8 - 3
src/components/knowledgeExtra/SubRulesGroup.vue

@@ -3,8 +3,9 @@
         <SubConditions v-for="(rules,i) in data"
                        ref="group"
                        :groupData="rules"
-                       :isLast="rules.length===1"
+                       :isLast="data.length===1"
                        :ind="i"
+                       :showAdd="data.length<maxNum"
                        :baseTypes="baseTypes"
                        :firstPlace="firstPlace"
                        :disabled="i===0&&disable"
@@ -13,7 +14,7 @@
                        @delRule="delRule"></SubConditions>
         <div class="group-oper">
             <el-button size="small" @click="addGroup">+新增分组</el-button>
-            <el-button :class="isLast?'disable':''" size="small" type="danger" plain @click="delGroup">-删除分组</el-button>
+            <el-button :class="isLast?'disable':''" :disabled="isLast" size="small" type="danger" plain @click="delGroup">-删除分组</el-button>
         </div>
     </div>
 </template>
@@ -21,7 +22,7 @@
     import SubConditions from './SubConditions.vue';
     export default {
         name:'SubRulesGroup',
-        props:['data','inx','isLast','baseTypes','firstPlace'],
+        props:['data','inx','isLast','baseTypes','maxNum','firstPlace'],
         data(){
             return {
             }
@@ -101,4 +102,8 @@
         border-top: 4px solid #F5F5F5;
         background: #fff;
     }
+    .el-button--danger.is-plain{
+        background: none;
+        color: #F56C6C;
+    }
 </style>