Sfoglia il codice sorgente

1.admin端规则配置:前置条件每组条件下增加【条件之间的关系】
2.admin端规则配置:前置条件“包含”和“不包含”增加删除输入框条件
3.admin端规则配置:质控逻辑可加多组
4.admin端规则配置:对现有20多个选择类目的值在进行打开窗口选择时做当前选择值显示

liyanyan 5 giorni fa
parent
commit
06e7e1f5bc
1 ha cambiato i file con 93 aggiunte e 40 eliminazioni
  1. 93 40
      src/views/rule/config/components/CreateDialog.vue

+ 93 - 40
src/views/rule/config/components/CreateDialog.vue

@@ -176,7 +176,7 @@
                         <div class="text-right">条件{{ sIndex + 1 }}</div>
                       </el-col>
                       <el-col :span="6">
-                        <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'qztj')">
+                        <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'qztj', sItem.param1)">
                           <el-input
                             :value="getDisplayName(sItem.param1)"
                             placeholder="请选择"
@@ -216,7 +216,7 @@
                               <el-button
                                 size="small"
                                 style="width: 70px; position: absolute; right: 0; top: 0; opacity: 0;"
-                                @click="openCategoryDialog(index, sIndex, 'sx_1')"
+                                @click="openCategoryDialog(index, sIndex, 'sx_1', sItem.sx_1)"
                               />
                             </div>
                           </el-col>
@@ -235,7 +235,7 @@
                               <el-button
                                 size="small"
                                 style="width: 70px; position: absolute; right: 0; top: 0; opacity: 0;"
-                                @click="openCategoryDialog(index, sIndex, 'sx_2')"
+                                @click="openCategoryDialog(index, sIndex, 'sx_2', sItem.sx_2)"
                               />
                             </div>
                           </el-col>
@@ -336,6 +336,20 @@
                           </el-select>
                         </div>
                       </el-col>
+                      <el-col v-if="['包含', '不包含'].includes(sItem.condition)" :span="1">
+                        <div class="text-center" style="line-height: 36px;">删除</div>
+                      </el-col>
+                      <el-col v-if="['包含', '不包含'].includes(sItem.condition)" :span="4">
+                        <!-- 第二参数选择 -->
+                        <div class="rule-condition">
+                          <el-input
+                            v-model="sItem.delete_field"
+                            placeholder="请输入"
+                            size="small"
+                            style="width: 100%;"
+                          />
+                        </div>
+                      </el-col>
                       <el-col v-if="sItem.condition === '减'" :span="4">
                         <div class="rule-condition">
                           <el-input
@@ -344,13 +358,13 @@
                             size="small"
                             style="width: calc(100% - 70px)"
                             readonly
-                            @click="openCategoryDialog(index, sIndex, 'subtract')"
+                            @click="openCategoryDialog(index, sIndex, 'subtract', sItem.subtract_param)"
                           />
                           <el-button
                             size="small"
                             style="width: 70px"
                             class="category-select"
-                            @click="openCategoryDialog(index, sIndex, 'subtract')"
+                            @click="openCategoryDialog(index, sIndex, 'subtract', sItem.subtract_param)"
                           >
                             <i class="el-icon-s-operation" style="margin-right: 5px" />
                             选择
@@ -406,7 +420,7 @@
                               <el-button
                                 size="small"
                                 style="width: 90px; position: absolute; right: 0; top: 0; opacity: 0;"
-                                @click="openCategoryDialog(index, sIndex, 'param2_object')"
+                                @click="openCategoryDialog(index, sIndex, 'param2_object', sItem.param2_object)"
                               />
                             </div>
                           </el-col>
@@ -452,6 +466,11 @@
                       </el-col>
                     </el-row>
                   </div>
+                  <div class="span">
+                    <span>规则之间的逻辑</span>
+                    <el-radio v-model="item.condition_relation" :label="1" class="ml40">且(满足所有条件)</el-radio>
+                    <el-radio v-model="item.condition_relation" :label="2">或(满足任意一条件)</el-radio>
+                  </div>
                 </el-card>
               </el-col>
 
@@ -460,12 +479,17 @@
                 <el-divider />
                 <el-card v-for="(item, index) of ruleForm.rule" :key="'rule' + index" class="box-card" shadow="never">
                   <div slot="header" class="clearfix box-card_header span">
-                    <span class="text">质控逻辑</span>
+                    <span class="text">质控逻辑{{ index + 1 }}</span>
                     <span class="ml40">
                       <span>流向</span>
                       <el-radio v-model="item.detail_status" :label="1" class="ml40">正确</el-radio>
                       <el-radio v-model="item.detail_status" :label="2">错误</el-radio>
                     </span>
+                    <i
+                      class="el-icon-delete"
+                      style="float: right; margin-top: 13px; cursor: pointer;"
+                      @click="onDeleteZKLJ(index)"
+                    />
                   </div>
                   <div>
                     <el-row
@@ -478,7 +502,7 @@
                         <div class="text-right">逻辑{{ sIndex + 1 }}</div>
                       </el-col>
                       <el-col v-if="!(sItem.condition === '病程记录关联' || sItem.condition === '时效')" :span="5">
-                        <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'rule')">
+                        <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'rule', sItem.param1)">
                           <el-input
                             :value="getDisplayName(sItem.param1)"
                             placeholder="请选择"
@@ -523,7 +547,7 @@
                             </el-select>
                           </el-col>
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param1')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param1', sItem.sx_param1)">
                               <el-input
                                 :value="getDisplayName(sItem.sx_param1)"
                                 placeholder="请选择"
@@ -548,7 +572,7 @@
                             </div>
                           </el-col>
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param3')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param3', sItem.sx_param3)">
                               <el-input
                                 :value="getDisplayName(sItem.sx_param3)"
                                 placeholder="请选择"
@@ -562,7 +586,7 @@
                             <div class="text-center">在</div>
                           </el-col>
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_index')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_index', sItem.sx_param4_index)">
                               <el-input
                                 :value="getDisplayName(sItem.sx_param4_index)"
                                 placeholder="请选择"
@@ -601,7 +625,7 @@
                             </div>
                           </el-col>
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_kssj')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_kssj', sItem.sx_param4_kssj)">
                               <el-input
                                 :value="getDisplayName(sItem.sx_param4_kssj)"
                                 placeholder="请选择"
@@ -615,7 +639,7 @@
                             <div class="text-center">至</div>
                           </el-col>
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_jssj')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_jssj', sItem.sx_param4_jssj)">
                               <el-input
                                 :value="getDisplayName(sItem.sx_param4_jssj)"
                                 placeholder="请选择"
@@ -795,13 +819,13 @@
                             size="small"
                             style="width: calc(100% - 90px)"
                             readonly
-                            @click="openCategoryDialog(index, sIndex, 'subtract')"
+                            @click="openCategoryDialog(index, sIndex, 'subtract', sItem.subtract_param)"
                           />
                           <el-button
                             size="small"
                             style="width: 90px"
                             class="category-select"
-                            @click="openCategoryDialog(index, sIndex, 'subtract')"
+                            @click="openCategoryDialog(index, sIndex, 'subtract', sItem.subtract_param)"
                           >
                             <i class="el-icon-s-operation" style="margin-right: 5px" />
                             选择
@@ -857,7 +881,7 @@
                               <el-button
                                 size="small"
                                 style="width: 90px; position: absolute; right: 0; top: 0; opacity: 0;"
-                                @click="openCategoryDialog(index, sIndex, 'param2_object')"
+                                @click="openCategoryDialog(index, sIndex, 'param2_object', sItem.param2_object)"
                               />
                             </div>
                           </el-col>
@@ -915,7 +939,7 @@
                           </el-col>
                           <!-- 参数3 -->
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param1')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param1', sItem.pn_param1)">
                               <el-input
                                 :value="getDisplayName(sItem.pn_param1)"
                                 placeholder="请选择"
@@ -939,7 +963,7 @@
                           </el-col>
                           <!-- 参数5 -->
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param3')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param3', sItem.pn_param3)">
                               <el-input
                                 :value="getDisplayName(sItem.pn_param3)"
                                 placeholder="请选择"
@@ -954,7 +978,7 @@
                           </el-col>
                           <!-- 参数6 -->
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_index')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_index', sItem.pn_param4_index)">
                               <el-input
                                 :value="getDisplayName(sItem.pn_param4_index)"
                                 placeholder="请选择"
@@ -996,7 +1020,7 @@
                           </el-col>
                           <!-- 参数9 -->
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_kssj')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_kssj', sItem.pn_param4_kssj)">
                               <el-input
                                 :value="getDisplayName(sItem.pn_param4_kssj)"
                                 placeholder="请选择"
@@ -1011,7 +1035,7 @@
                           </el-col>
                           <!-- 参数10 -->
                           <el-col :span="5">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_jssj')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_jssj', sItem.pn_param4_jssj)">
                               <el-input
                                 :value="getDisplayName(sItem.pn_param4_jssj)"
                                 placeholder="请选择"
@@ -1055,7 +1079,7 @@
                           </el-col>
                           <!-- 参数13 -->
                           <el-col :span="4">
-                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param6')">
+                            <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param6', sItem.pn_param6)">
                               <el-input
                                 :value="getDisplayName(sItem.pn_param6)"
                                 placeholder="请选择"
@@ -1178,13 +1202,13 @@
                             size="small"
                             style="width: calc(100% - 90px)"
                             readonly
-                            @click="openCategoryDialog(index, sIndex, 'custom_basis')"
+                            @click="openCategoryDialog(index, sIndex, 'custom_basis', sItem.param1)"
                           />
                           <el-button
                             size="small"
                             style="width: 90px"
                             class="category-select"
-                            @click="openCategoryDialog(index, sIndex, 'custom_basis')"
+                            @click="openCategoryDialog(index, sIndex, 'custom_basis', sItem.param1)"
                           >
                             <i class="el-icon-s-operation" style="margin-right: 5px" />
                             选择
@@ -1233,7 +1257,7 @@
                         <div class="text-right">事件</div>
                       </el-col>
                       <el-col :span="7">
-                        <div class="rule-condition" @click="openCategoryDialog(index, 0, 'custom_msg')">
+                        <div class="rule-condition" @click="openCategoryDialog(index, 0, 'custom_msg', item.custom_msg.param1)">
                           <el-input
                             :value="getDisplayName(item.custom_msg.param1)"
                             placeholder="请选择"
@@ -1307,9 +1331,9 @@
       >
         <el-tab-pane
           v-for="(item) in (objects)"
-          :key="item.field_name"
+          :key="item.field"
           :label="item.field_name"
-          :name="item.field_name"
+          :name="item.field"
         >
           <el-row slot="label" type="flex" align="middle">{{ item.field_name }}</el-row>
           <div class="grid-container">
@@ -1317,7 +1341,7 @@
               v-for="(tag) in item.child"
               :key="tag.field"
               size="large"
-              type="info"
+              :type="`${tag.field === activeSubCategory ? 'primary': 'info'}`"
               @click="handleSubCategorySelect(tag)"
             >
               {{ tag.field_name }}
@@ -1481,6 +1505,7 @@ export default {
   data() {
     return {
       qcData: [],
+      selectFormula: [],
       ruleForm: {
         case_type: '',
         changjing: [],
@@ -1597,6 +1622,7 @@ export default {
       categories: [],
       categoryType: 'text', // 默认选中文本类型
       activeCategory: '',
+      activeSubCategory: '',
       currentSubCategories: [],
       selectedCategory: null,
       currentSource: '',
@@ -2139,7 +2165,7 @@ export default {
         }
       })
     },
-    openCategoryDialog(index, sIndex, source) {
+    openCategoryDialog(index, sIndex, source, value) {
       this.currentRuleIndex = index
       this.currentConditionIndex = sIndex
       this.currentSource = source
@@ -2162,8 +2188,27 @@ export default {
 
       // 设置默认显示
       if (this.objects.length > 0) {
-        this.activeCategory = this.objects[0].field_name
-        this.currentSubCategories = this.objects[0].child || []
+        // this.activeCategory = this.objects[0].field_name
+        if (value) {
+          if (Array.isArray(value)) {
+            if (value.length === 0) {
+              this.activeCategory = this.objects[0].field
+              this.activeSubCategory = ''
+            } else {
+              this.activeCategory = value[0]
+              this.activeSubCategory = value[1]
+            }
+          } else {
+            if (value instanceof String) {
+              this.activeCategory = value.split(',')[0]
+              this.activeSubCategory = value.split(',')[1]
+            }
+          }
+        } else {
+          this.activeCategory = value ? value[0] : this.objects[0].field
+          this.activeSubCategory = ''
+        }
+        // this.currentSubCategories = this.objects[0].child || []
       }
 
       this.categoryDialogVisible = true
@@ -2187,13 +2232,13 @@ export default {
     handleCategoryClick(item) {
       console.log('>>>>>>>>>>>>>>>>>>>>>', item)
       this.activeCategory = item.name
-      this.currentSubCategories = item.child || []
+      // this.currentSubCategories = item.child || []
     },
     // 选择右侧子类目
     handleSubCategorySelect(subItem) {
       if (this.currentRuleIndex !== null && this.currentConditionIndex !== null) {
-        const parentObj = this.objects.find(obj => obj.field_name === this.activeCategory)
-        const parentField = parentObj ? parentObj.field : ''
+        // const parentObj = this.objects.find(obj => obj.field === this.activeCategory)
+        const parentField = this.activeCategory || ''
 
         if (this.currentSource === 'qztj') {
           const condition = this.ruleForm.qztj[this.currentRuleIndex].condition_content[this.currentConditionIndex]
@@ -2479,12 +2524,12 @@ export default {
     // 添加质控逻辑
     onAddZKLJ() {
       // 检查是否已存在质控逻辑
-      if (this.ruleForm.rule && this.ruleForm.rule.length > 0) {
-        this.$message.warning('质控逻辑已存在')
-        return
-      }
+      // if (this.ruleForm.rule && this.ruleForm.rule.length > 0) {
+      //   this.$message.warning('质控逻辑已存在')
+      //   return
+      // }
 
-      this.ruleForm.rule = [{
+      this.ruleForm.rule.push({
         is_pre_condition: 0,
         condition_type: 1,
         condition_relation: 2,
@@ -2510,7 +2555,15 @@ export default {
         custom_basis: [],
         pre_warning_time: '',
         custom_msg: {}
-      }]
+      })
+    },
+    // 删除质控逻辑条件大框
+    onDeleteZKLJ(index) {
+      if (index === 0) {
+        this.$message.warning('质控逻辑第一项不可删除')
+        return
+      }
+      this.ruleForm.rule.splice(index, 1)
     },
     // 查看知识库详情
     handleKnowledgeView(row) {