|
@@ -1,7 +1,7 @@
|
|
<template>
|
|
<template>
|
|
<div>
|
|
<div>
|
|
<el-dialog v-el-drag-dialog :title="titleStr" :visible.sync="data.bSwitch" width="1200px" top="5vh">
|
|
<el-dialog v-el-drag-dialog :title="titleStr" :visible.sync="data.bSwitch" width="1200px" top="5vh">
|
|
- <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="80px" class="demo-ruleForm">
|
|
|
|
|
|
+ <el-form ref="ruleForm" :disabled="titleStr === '详情'" :model="ruleForm" :rules="rules" label-width="80px" class="demo-ruleForm">
|
|
<el-row :gutter="16">
|
|
<el-row :gutter="16">
|
|
<el-col :span="8">
|
|
<el-col :span="8">
|
|
<el-form-item label="病历类型" prop="case_type">
|
|
<el-form-item label="病历类型" prop="case_type">
|
|
@@ -127,6 +127,8 @@
|
|
<el-input v-model="ruleForm.description" type="textarea" :autosize="{ minRows: 3 }" placeholder="请输入" />
|
|
<el-input v-model="ruleForm.description" type="textarea" :autosize="{ minRows: 3 }" placeholder="请输入" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row :gutter="16">
|
|
<el-col :span="24">
|
|
<el-col :span="24">
|
|
<el-form-item label="质控规则">
|
|
<el-form-item label="质控规则">
|
|
<el-col :span="5">
|
|
<el-col :span="5">
|
|
@@ -475,7 +477,7 @@
|
|
<el-col :span="2">
|
|
<el-col :span="2">
|
|
<div class="text-right">逻辑{{ sIndex + 1 }}</div>
|
|
<div class="text-right">逻辑{{ sIndex + 1 }}</div>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="6">
|
|
|
|
|
|
+ <el-col v-if="!(sItem.condition === '病程记录关联' || sItem.condition === '时效')" :span="6">
|
|
<div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'rule')">
|
|
<div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'rule')">
|
|
<el-input
|
|
<el-input
|
|
:value="getDisplayName(sItem.param1)"
|
|
:value="getDisplayName(sItem.param1)"
|
|
@@ -486,7 +488,7 @@
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="3">
|
|
|
|
|
|
+ <el-col v-if="!(sItem.condition === '病程记录关联' || sItem.condition === '时效')" :span="4">
|
|
<el-select
|
|
<el-select
|
|
v-model="sItem.condition"
|
|
v-model="sItem.condition"
|
|
filterable
|
|
filterable
|
|
@@ -502,28 +504,160 @@
|
|
/>
|
|
/>
|
|
</el-select>
|
|
</el-select>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col v-if="sItem.condition === '时效'" :span="9">
|
|
|
|
- <el-row :gutter="8">
|
|
|
|
- <el-col :span="6">
|
|
|
|
|
|
+ <el-col v-if="sItem.condition === '时效'" :span="22" class="progress-note">
|
|
|
|
+ <el-row :gutter="24">
|
|
|
|
+ <el-col v-if="sItem.condition === '时效'" :span="5">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="sItem.condition"
|
|
|
|
+ filterable
|
|
|
|
+ clearable
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="(items, bindex) in selectFormula"
|
|
|
|
+ :key="bindex"
|
|
|
|
+ :label="items.formula"
|
|
|
|
+ :value="items.formula"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param1')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.sx_param1)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center">等于</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
<div class="rule-condition">
|
|
<div class="rule-condition">
|
|
<el-input
|
|
<el-input
|
|
- :value="getDisplayName(sItem.sx_1)"
|
|
|
|
|
|
+ v-model="sItem.sx_param2"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param3')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.sx_param3)"
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
size="small"
|
|
size="small"
|
|
readonly
|
|
readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center">在</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_index')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.sx_param4_index)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center">包含</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.sx_param4_condition1"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
style="width: 100%;"
|
|
style="width: 100%;"
|
|
/>
|
|
/>
|
|
- <el-button
|
|
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center">不包含</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.sx_param4_condition2"
|
|
|
|
+ placeholder="请输入"
|
|
size="small"
|
|
size="small"
|
|
- style="width: 90px; position: absolute; right: 0; top: 0; opacity: 0;"
|
|
|
|
- @click="openCategoryDialog(index, sIndex, 'sx_1')"
|
|
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_kssj')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.sx_param4_kssj)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
/>
|
|
/>
|
|
</div>
|
|
</div>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col :span="2">
|
|
<el-col :span="2">
|
|
- <div class="text-right">至</div>
|
|
|
|
|
|
+ <div class="text-center">至</div>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="6">
|
|
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'sx_param4_jssj')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.sx_param4_jssj)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="1">
|
|
|
|
+ <div class="text-center">+</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.sx_param4_sjjg"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center">小时内</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col v-if="sItem.condition === '时效'" :span="2">
|
|
|
|
+ <div class="button-group">
|
|
|
|
+ <el-button
|
|
|
|
+ type="primary"
|
|
|
|
+ plain
|
|
|
|
+ icon="el-icon-plus"
|
|
|
|
+ size="mini"
|
|
|
|
+ @click="onAddGZ(index, sIndex)"
|
|
|
|
+ />
|
|
|
|
+ <el-button
|
|
|
|
+ v-if="item.condition_content.length !== 1"
|
|
|
|
+ size="mini"
|
|
|
|
+ type="primary"
|
|
|
|
+ plain
|
|
|
|
+ icon="el-icon-minus"
|
|
|
|
+ @click="onDeleteGZ(index, sIndex)"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- <el-col :span="6">
|
|
<div class="rule-condition">
|
|
<div class="rule-condition">
|
|
<el-input
|
|
<el-input
|
|
:value="getDisplayName(sItem.sx_2)"
|
|
:value="getDisplayName(sItem.sx_2)"
|
|
@@ -545,9 +679,9 @@
|
|
<el-col v-if="sItem.sx_2" :span="5">
|
|
<el-col v-if="sItem.sx_2" :span="5">
|
|
<el-input v-model="sItem.sx_3" clearable placeholder="请输入" style="width: 100%;" />
|
|
<el-input v-model="sItem.sx_3" clearable placeholder="请输入" style="width: 100%;" />
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="3" style="margin-left: 5px;">
|
|
|
|
|
|
+ <el-col :span="3">
|
|
<div class="text-right">小时</div>
|
|
<div class="text-right">小时</div>
|
|
- </el-col>
|
|
|
|
|
|
+ </el-col> -->
|
|
</el-row>
|
|
</el-row>
|
|
</el-col>
|
|
</el-col>
|
|
<el-col v-else-if="sItem.condition === '范围'" :span="6">
|
|
<el-col v-else-if="sItem.condition === '范围'" :span="6">
|
|
@@ -731,7 +865,235 @@
|
|
</el-col>
|
|
</el-col>
|
|
</el-row>
|
|
</el-row>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="2">
|
|
|
|
|
|
+ <el-col v-else-if="sItem.condition === '病程记录关联'" :span="22" class="progress-note">
|
|
|
|
+ <el-row :gutter="24">
|
|
|
|
+ <!-- 参数1 -->
|
|
|
|
+ <el-col v-if="sItem.condition === '病程记录关联'" :span="5">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="sItem.condition"
|
|
|
|
+ filterable
|
|
|
|
+ clearable
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ >
|
|
|
|
+ <el-option
|
|
|
|
+ v-for="(items, bindex) in selectFormula"
|
|
|
|
+ :key="bindex"
|
|
|
|
+ :label="items.formula"
|
|
|
|
+ :value="items.formula"
|
|
|
|
+ />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数2 -->
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.pn_param1_BLBH"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数3 -->
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param1')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.pn_param1)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数4 -->
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.pn_param2"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数5 -->
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param3')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.pn_param3)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="1">
|
|
|
|
+ <div class="text-center" style="line-height: 36px;">在</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数6 -->
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_index')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.pn_param4_index)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center" style="line-height: 36px;">包含</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数7 -->
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.pn_param4_condition1"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center" style="line-height: 36px;">不包含</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数8 -->
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.pn_param4_condition2"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数9 -->
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_kssj')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.pn_param4_kssj)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="1">
|
|
|
|
+ <div class="text-center" style="line-height: 36px;">至</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数10 -->
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param4_jssj')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.pn_param4_jssj)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="1">
|
|
|
|
+ <div class="text-center" style="line-height: 36px;">+</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数11 -->
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.pn_param4_sjjg"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center" style="line-height: 36px;">小时内</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ <el-row :gutter="24">
|
|
|
|
+ <!-- 参数12 -->
|
|
|
|
+ <el-col :span="5">
|
|
|
|
+ <el-select
|
|
|
|
+ v-model="sItem.pn_param5"
|
|
|
|
+ filterable
|
|
|
|
+ clearable
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ >
|
|
|
|
+ <el-option label="关联" value="gl" />
|
|
|
|
+ <el-option label="不关联" value="bgl" />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数13 -->
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition" @click="openCategoryDialog(index, sIndex, 'pn_param6')">
|
|
|
|
+ <el-input
|
|
|
|
+ :value="getDisplayName(sItem.pn_param6)"
|
|
|
|
+ placeholder="请选择"
|
|
|
|
+ size="small"
|
|
|
|
+ readonly
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center" style="line-height: 36px;">包含</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数14 -->
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.pn_param6_ct"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col :span="2">
|
|
|
|
+ <div class="text-center" style="line-height: 36px;">不含</div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <!-- 参数15 -->
|
|
|
|
+ <el-col :span="4">
|
|
|
|
+ <div class="rule-condition">
|
|
|
|
+ <el-input
|
|
|
|
+ v-model="sItem.pn_param6_oct"
|
|
|
|
+ placeholder="请输入"
|
|
|
|
+ size="small"
|
|
|
|
+ style="width: 100%;"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col v-if="sItem.condition === '病程记录关联'" :span="2">
|
|
|
|
+ <div class="button-group">
|
|
|
|
+ <el-button
|
|
|
|
+ type="primary"
|
|
|
|
+ plain
|
|
|
|
+ icon="el-icon-plus"
|
|
|
|
+ size="mini"
|
|
|
|
+ @click="onAddGZ(index, sIndex)"
|
|
|
|
+ />
|
|
|
|
+ <el-button
|
|
|
|
+ v-if="item.condition_content.length !== 1"
|
|
|
|
+ size="mini"
|
|
|
|
+ type="primary"
|
|
|
|
+ plain
|
|
|
|
+ icon="el-icon-minus"
|
|
|
|
+ @click="onDeleteGZ(index, sIndex)"
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ </el-col>
|
|
|
|
+ </el-row>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-col v-if="!(sItem.condition === '病程记录关联' || sItem.condition === '时效')" :span="2">
|
|
<div class="button-group">
|
|
<div class="button-group">
|
|
<el-button
|
|
<el-button
|
|
type="primary"
|
|
type="primary"
|
|
@@ -905,7 +1267,7 @@
|
|
|
|
|
|
</el-row>
|
|
</el-row>
|
|
</el-form>
|
|
</el-form>
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
|
|
|
+ <span v-if="titleStr !== '详情'" slot="footer" class="dialog-footer">
|
|
<el-button type="primary" @click="submitForm('ruleForm')">提 交</el-button>
|
|
<el-button type="primary" @click="submitForm('ruleForm')">提 交</el-button>
|
|
<el-button @click="onTest">测试规则</el-button>
|
|
<el-button @click="onTest">测试规则</el-button>
|
|
</span>
|
|
</span>
|
|
@@ -913,35 +1275,33 @@
|
|
|
|
|
|
<!-- 新增选择弹窗 -->
|
|
<!-- 新增选择弹窗 -->
|
|
<el-dialog title="选择类目" :visible.sync="categoryDialogVisible" width="600px" append-to-body>
|
|
<el-dialog title="选择类目" :visible.sync="categoryDialogVisible" width="600px" append-to-body>
|
|
- <div class="category-content">
|
|
|
|
- <el-row>
|
|
|
|
- <el-col :span="8">
|
|
|
|
- <!-- 左侧菜单 -->
|
|
|
|
- <el-menu :default-active="activeCategory" class="category-menu">
|
|
|
|
- <el-menu-item
|
|
|
|
- v-for="item in objects"
|
|
|
|
- :key="item.field_name"
|
|
|
|
- :index="item.field_name"
|
|
|
|
- @click="handleCategoryClick(item)"
|
|
|
|
- >
|
|
|
|
- {{ item.field_name }}
|
|
|
|
- </el-menu-item>
|
|
|
|
- </el-menu>
|
|
|
|
- </el-col>
|
|
|
|
- <el-col :span="16">
|
|
|
|
- <!-- 右侧子项 -->
|
|
|
|
- <div class="sub-category-list">
|
|
|
|
- <el-button
|
|
|
|
- v-for="subItem in currentSubCategories"
|
|
|
|
- :key="subItem.field"
|
|
|
|
- @click="handleSubCategorySelect(subItem)"
|
|
|
|
- >
|
|
|
|
- {{ subItem.field_name }}
|
|
|
|
- </el-button>
|
|
|
|
- </div>
|
|
|
|
- </el-col>
|
|
|
|
- </el-row>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <el-tabs
|
|
|
|
+ v-model="activeCategory"
|
|
|
|
+ type="border-card"
|
|
|
|
+ class="tab"
|
|
|
|
+ :tab-position="'left'"
|
|
|
|
+ style="height:max-content"
|
|
|
|
+ @tab-click="handleCategoryClick"
|
|
|
|
+ >
|
|
|
|
+ <el-tab-pane
|
|
|
|
+ v-for="(item) in (objects)"
|
|
|
|
+ :key="item.field_name"
|
|
|
|
+ :label="item.field_name"
|
|
|
|
+ :name="item.field_name"
|
|
|
|
+ >
|
|
|
|
+ <el-row slot="label" type="flex" align="middle">{{ item.field_name }}</el-row>
|
|
|
|
+ <div class="grid-container">
|
|
|
|
+ <el-tag
|
|
|
|
+ v-for="(tag) in item.child"
|
|
|
|
+ :key="tag.field"
|
|
|
|
+ size="large"
|
|
|
|
+ @click="handleSubCategorySelect(tag)"
|
|
|
|
+ >
|
|
|
|
+ {{ tag.field_name }}
|
|
|
|
+ </el-tag>
|
|
|
|
+ </div>
|
|
|
|
+ </el-tab-pane>
|
|
|
|
+ </el-tabs>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 修改知识库弹窗 -->
|
|
<!-- 修改知识库弹窗 -->
|
|
@@ -1133,7 +1493,33 @@ export default {
|
|
subtract_value: '',
|
|
subtract_value: '',
|
|
subtract_value_type: 'number',
|
|
subtract_value_type: 'number',
|
|
hasChildOptions: false,
|
|
hasChildOptions: false,
|
|
- childOptions: []
|
|
|
|
|
|
+ childOptions: [],
|
|
|
|
+ // 病程记录关联
|
|
|
|
+ pn_param1_BLBH: '',
|
|
|
|
+ pn_param1: [],
|
|
|
|
+ pn_param2: '',
|
|
|
|
+ pn_param3: [],
|
|
|
|
+ pn_param4_index: [],
|
|
|
|
+ pn_param4_condition1: '',
|
|
|
|
+ pn_param4_condition2: '',
|
|
|
|
+ pn_param4_kssj: [],
|
|
|
|
+ pn_param4_jssj: [],
|
|
|
|
+ pn_param4_sjjg: '',
|
|
|
|
+ pn_param5: '',
|
|
|
|
+ pn_param6: [],
|
|
|
|
+ pn_param6_ct: '',
|
|
|
|
+ pn_param6_oct: '',
|
|
|
|
+ // 时效
|
|
|
|
+ sx_param1: [],
|
|
|
|
+ sx_param2: '',
|
|
|
|
+ sx_param3: [],
|
|
|
|
+ sx_param4_index: [],
|
|
|
|
+ sx_param4_kssj: [],
|
|
|
|
+ sx_param4_jssj: [],
|
|
|
|
+ sx_param4_condition1: '',
|
|
|
|
+ sx_param4_condition2: '',
|
|
|
|
+ sx_param4_sjjg: ''
|
|
|
|
+
|
|
}
|
|
}
|
|
],
|
|
],
|
|
custom_basis: [], // 质控依据
|
|
custom_basis: [], // 质控依据
|
|
@@ -1220,7 +1606,7 @@ export default {
|
|
},
|
|
},
|
|
computed: {
|
|
computed: {
|
|
titleStr() {
|
|
titleStr() {
|
|
- return this.data.row.id ? '编辑' : '新增'
|
|
|
|
|
|
+ return this.data.row.id ? this.data.actionType === 'DETAIL' ? '详情' : '编辑' : '新增'
|
|
},
|
|
},
|
|
filteredCategories() {
|
|
filteredCategories() {
|
|
if (!this.searchKeyword) return this.categories
|
|
if (!this.searchKeyword) return this.categories
|
|
@@ -1293,6 +1679,35 @@ export default {
|
|
const ruleList = this.getQcRule(p.rule_list)
|
|
const ruleList = this.getQcRule(p.rule_list)
|
|
ruleList.forEach(rule => {
|
|
ruleList.forEach(rule => {
|
|
rule.condition_content.forEach(item => {
|
|
rule.condition_content.forEach(item => {
|
|
|
|
+ if (item.condition === '病程记录关联') {
|
|
|
|
+ // 病程记录关联
|
|
|
|
+ item.pn_param1_BLBH = item.param1[2]
|
|
|
|
+ item.pn_param1 = [item.param1[0], item.param1[1]]
|
|
|
|
+ item.pn_param2 = item.param2
|
|
|
|
+ item.pn_param3 = item.param3
|
|
|
|
+ item.pn_param4_index = item.param4[0].index && (item.param4[0].index).split('.') || []
|
|
|
|
+ item.pn_param4_condition1 = item.param4[0].condition1
|
|
|
|
+ item.pn_param4_condition2 = item.param4[0].condition2
|
|
|
|
+ item.pn_param4_kssj = item.param4[0].kssj && (item.param4[0].kssj).split('.') || []
|
|
|
|
+ item.pn_param4_jssj = item.param4[0].jssj && (item.param4[0].jssj).split('.') || []
|
|
|
|
+ item.pn_param4_sjjg = item.param4[0].sjjg
|
|
|
|
+ item.pn_param5 = item.param5
|
|
|
|
+ item.pn_param6 = item.param6[0] && (item.param6[0]).split('.') || []
|
|
|
|
+ item.pn_param6_ct = item.param6[1]
|
|
|
|
+ item.pn_param6_oct = item.param6[2]
|
|
|
|
+ }
|
|
|
|
+ if (item.condition === '时效') {
|
|
|
|
+ // 时效
|
|
|
|
+ item.sx_param1 = [item.param1[0], item.param1[1]]
|
|
|
|
+ item.sx_param2 = item.param2
|
|
|
|
+ item.sx_param3 = [item.param3[0], item.param3[1]]
|
|
|
|
+ item.sx_param4_index = item.param4[0].index && (item.param4[0].index).split('.') || []
|
|
|
|
+ item.sx_param4_condition1 = item.param4[0].condition1
|
|
|
|
+ item.sx_param4_condition2 = item.param4[0].condition2
|
|
|
|
+ item.sx_param4_kssj = item.param4[0].kssj && (item.param4[0].kssj).split('.') || []
|
|
|
|
+ item.sx_param4_jssj = item.param4[0].jssj && (item.param4[0].jssj).split('.') || []
|
|
|
|
+ item.sx_param4_sjjg = item.param4[0].sjjg
|
|
|
|
+ }
|
|
// 如果是字典类型且 param2 是字符串,转换为数组
|
|
// 如果是字典类型且 param2 是字符串,转换为数组
|
|
if (item.hasChildOptions && typeof item.param2 === 'string' && item.param2) {
|
|
if (item.hasChildOptions && typeof item.param2 === 'string' && item.param2) {
|
|
item.param2 = item.param2.split(',')
|
|
item.param2 = item.param2.split(',')
|
|
@@ -1434,7 +1849,32 @@ export default {
|
|
subtract_value: '',
|
|
subtract_value: '',
|
|
subtract_value_type: 'number',
|
|
subtract_value_type: 'number',
|
|
hasChildOptions: false,
|
|
hasChildOptions: false,
|
|
- childOptions: []
|
|
|
|
|
|
+ childOptions: [],
|
|
|
|
+ // 病程记录关联
|
|
|
|
+ pn_param1_BLBH: '',
|
|
|
|
+ pn_param1: [],
|
|
|
|
+ pn_param2: '',
|
|
|
|
+ pn_param3: [],
|
|
|
|
+ pn_param4_index: [],
|
|
|
|
+ pn_param4_condition1: '',
|
|
|
|
+ pn_param4_condition2: '',
|
|
|
|
+ pn_param4_kssj: [],
|
|
|
|
+ pn_param4_jssj: [],
|
|
|
|
+ pn_param4_sjjg: '',
|
|
|
|
+ pn_param5: '',
|
|
|
|
+ pn_param6: [],
|
|
|
|
+ pn_param6_ct: '',
|
|
|
|
+ pn_param6_oct: '',
|
|
|
|
+ // 时效
|
|
|
|
+ sx_param1: [],
|
|
|
|
+ sx_param2: '',
|
|
|
|
+ sx_param3: [],
|
|
|
|
+ sx_param4_index: [],
|
|
|
|
+ sx_param4_kssj: [],
|
|
|
|
+ sx_param4_jssj: [],
|
|
|
|
+ sx_param4_condition1: '',
|
|
|
|
+ sx_param4_condition2: '',
|
|
|
|
+ sx_param4_sjjg: ''
|
|
})
|
|
})
|
|
},
|
|
},
|
|
// 删除质控逻辑大框中_逻辑
|
|
// 删除质控逻辑大框中_逻辑
|
|
@@ -1535,42 +1975,109 @@ export default {
|
|
if (valid) {
|
|
if (valid) {
|
|
if (this.judgeQZTJ()) {
|
|
if (this.judgeQZTJ()) {
|
|
const processConditionContent = (content) => {
|
|
const processConditionContent = (content) => {
|
|
|
|
+ const contentArr = []
|
|
content.forEach(item => {
|
|
content.forEach(item => {
|
|
- // 处理多选值
|
|
|
|
- if (Array.isArray(item.param2)) {
|
|
|
|
- item.param2 = item.param2.join(',')
|
|
|
|
- }
|
|
|
|
- if (item.condition === '减' && item.subtract_param) {
|
|
|
|
- // 组合减法条件的完整表达式
|
|
|
|
- const subtractValue = this.getDisplayName(item.subtract_param)
|
|
|
|
- if (subtractValue) {
|
|
|
|
- // 获取父级字段名
|
|
|
|
- const [parentField] = item.subtract_param
|
|
|
|
- // 构造 param2 格式: parentField.field
|
|
|
|
- item.param2 = `${parentField}.${item.subtract_param[1]}`
|
|
|
|
|
|
+ const element = { ...item }
|
|
|
|
+ if (element.condition === '病程记录关联') {
|
|
|
|
+ const elementParams = {
|
|
|
|
+ param1: [
|
|
|
|
+ Array.isArray(element.pn_param1) && !!(element.pn_param1.length) ? element.pn_param1[0] : '',
|
|
|
|
+ Array.isArray(element.pn_param1) && !!(element.pn_param1.length) ? element.pn_param1[1] : '',
|
|
|
|
+ element.pn_param1_BLBH
|
|
|
|
+ ],
|
|
|
|
+ param2: element.pn_param2,
|
|
|
|
+ condition: element.condition,
|
|
|
|
+ param3: [
|
|
|
|
+ Array.isArray(element.pn_param3) && !!(element.pn_param3.length) ? element.pn_param3[0] : '',
|
|
|
|
+ Array.isArray(element.pn_param3) && !!(element.pn_param3.length) ? element.pn_param3[1] : ''
|
|
|
|
+ ],
|
|
|
|
+ param4: [
|
|
|
|
+ {
|
|
|
|
+ kssj: element.pn_param4_kssj.join('.'),
|
|
|
|
+ jssj: element.pn_param4_jssj.join('.'),
|
|
|
|
+ sjjg: element.pn_param4_sjjg,
|
|
|
|
+ index: element.pn_param4_index.join('.'),
|
|
|
|
+ condition1: element.pn_param4_condition1,
|
|
|
|
+ condition2: element.pn_param4_condition2
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ param5: element.pn_param5,
|
|
|
|
+ param6: [
|
|
|
|
+ element.pn_param6.join('.'),
|
|
|
|
+ element.pn_param6_ct,
|
|
|
|
+ element.pn_param6_oct
|
|
|
|
+ ]
|
|
}
|
|
}
|
|
- }
|
|
|
|
- // 对重复率条件的特殊处理
|
|
|
|
- if (item.condition === '重复率') {
|
|
|
|
- // 确保param2格式正确
|
|
|
|
- if (item.param2_object && Array.isArray(item.param2_object)) {
|
|
|
|
- const [field1, field2] = item.param2_object
|
|
|
|
- item.param2 = `${field1}.${field2}`
|
|
|
|
|
|
+ contentArr.push(elementParams)
|
|
|
|
+ } else if (element.condition === '时效') {
|
|
|
|
+ const elementParams = {
|
|
|
|
+ param1: [
|
|
|
|
+ Array.isArray(element.sx_param1) && !!(element.sx_param1.length) ? element.sx_param1[0] : '',
|
|
|
|
+ Array.isArray(element.sx_param1) && !!(element.sx_param1.length) ? element.sx_param1[1] : ''
|
|
|
|
+ ],
|
|
|
|
+ param2: element.sx_param2,
|
|
|
|
+ condition: element.condition,
|
|
|
|
+ param3: [
|
|
|
|
+ Array.isArray(element.sx_param3) && !!(element.sx_param3.length) ? element.sx_param3[0] : '',
|
|
|
|
+ Array.isArray(element.sx_param3) && !!(element.sx_param3.length) ? element.sx_param3[1] : ''
|
|
|
|
+ ],
|
|
|
|
+ param4: [
|
|
|
|
+ {
|
|
|
|
+ kssj: element.sx_param4_kssj.join('.'),
|
|
|
|
+ jssj: element.sx_param4_jssj.join('.'),
|
|
|
|
+ sjjg: element.sx_param4_sjjg,
|
|
|
|
+ index: element.sx_param4_index.join('.'),
|
|
|
|
+ condition1: element.sx_param4_condition1,
|
|
|
|
+ condition2: element.sx_param4_condition2
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+ contentArr.push(elementParams)
|
|
|
|
+ } else {
|
|
|
|
+ // 处理多选值
|
|
|
|
+ if (Array.isArray(element.param2)) {
|
|
|
|
+ element.param2 = element.param2.join(',')
|
|
|
|
+ }
|
|
|
|
+ if (element.condition === '减' && element.subtract_param) {
|
|
|
|
+ // 组合减法条件的完整表达式
|
|
|
|
+ const subtractValue = this.getDisplayName(element.subtract_param)
|
|
|
|
+ if (subtractValue) {
|
|
|
|
+ // 获取父级字段名
|
|
|
|
+ const [parentField] = element.subtract_param
|
|
|
|
+ // 构造 param2 格式: parentField.field
|
|
|
|
+ element.param2 = `${parentField}.${element.subtract_param[1]}`
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- // 确保subtract_value是数字格式
|
|
|
|
- if (item.subtract_value !== undefined) {
|
|
|
|
- item.subtract_value = Number(item.subtract_value)
|
|
|
|
|
|
+ // 对重复率条件的特殊处理
|
|
|
|
+ if (element.condition === '重复率') {
|
|
|
|
+ // 确保param2格式正确
|
|
|
|
+ if (element.param2_object && Array.isArray(element.param2_object)) {
|
|
|
|
+ const [field1, field2] = element.param2_object
|
|
|
|
+ element.param2 = `${field1}.${field2}`
|
|
|
|
+ }
|
|
|
|
+ // 确保subtract_value是数字格式
|
|
|
|
+ if (element.subtract_value !== undefined) {
|
|
|
|
+ element.subtract_value = Number(element.subtract_value)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ contentArr.push(element)
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
+ return contentArr
|
|
}
|
|
}
|
|
|
|
|
|
// 处理前置条件和质控逻辑中的减法条件
|
|
// 处理前置条件和质控逻辑中的减法条件
|
|
this.ruleForm.qztj.forEach(item => {
|
|
this.ruleForm.qztj.forEach(item => {
|
|
processConditionContent(item.condition_content)
|
|
processConditionContent(item.condition_content)
|
|
})
|
|
})
|
|
|
|
+ console.log('=============this.ruleForm', this.ruleForm.rule)
|
|
|
|
+
|
|
|
|
+ const rules = []
|
|
this.ruleForm.rule.forEach(item => {
|
|
this.ruleForm.rule.forEach(item => {
|
|
- processConditionContent(item.condition_content)
|
|
|
|
|
|
+ rules.push({
|
|
|
|
+ ...item,
|
|
|
|
+ condition_content: processConditionContent(item.condition_content)
|
|
|
|
+ })
|
|
})
|
|
})
|
|
|
|
|
|
// 继续原有的提交逻辑
|
|
// 继续原有的提交逻辑
|
|
@@ -1586,8 +2093,9 @@ export default {
|
|
error_level: this.ruleForm.error_level,
|
|
error_level: this.ruleForm.error_level,
|
|
status: this.ruleForm.status,
|
|
status: this.ruleForm.status,
|
|
rule_type: this.ruleForm.rule_type,
|
|
rule_type: this.ruleForm.rule_type,
|
|
- rule: [...this.ruleForm.rule, ...this.ruleForm.qztj]
|
|
|
|
|
|
+ rule: [...rules, ...this.ruleForm.qztj]
|
|
}
|
|
}
|
|
|
|
+ console.log('>>>>>>>>>>>>>>>>>>>>', params)
|
|
if (this.data.row.id) {
|
|
if (this.data.row.id) {
|
|
params.id = this.data.row.id
|
|
params.id = this.data.row.id
|
|
}
|
|
}
|
|
@@ -1648,7 +2156,8 @@ export default {
|
|
},
|
|
},
|
|
// 点击左侧类目
|
|
// 点击左侧类目
|
|
handleCategoryClick(item) {
|
|
handleCategoryClick(item) {
|
|
- this.activeCategory = item.field_name
|
|
|
|
|
|
+ console.log('>>>>>>>>>>>>>>>>>>>>>', item)
|
|
|
|
+ this.activeCategory = item.name
|
|
this.currentSubCategories = item.child || []
|
|
this.currentSubCategories = item.child || []
|
|
},
|
|
},
|
|
// 选择右侧子类目
|
|
// 选择右侧子类目
|
|
@@ -1842,6 +2351,38 @@ export default {
|
|
condition.param2 = `${parentField}.${subItem.field}`
|
|
condition.param2 = `${parentField}.${subItem.field}`
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ } else if (this.currentSource === 'pn_param1' || this.currentSource === 'pn_param3' || this.currentSource === 'pn_param6' || this.currentSource === 'pn_param4_index' || this.currentSource === 'pn_param4_kssj' || this.currentSource === 'pn_param4_jssj') {
|
|
|
|
+ // 判断是在前置条件还是质控逻辑中
|
|
|
|
+ if (this.currentInputSource === 'qztj') {
|
|
|
|
+ const condition = this.ruleForm.qztj[this.currentRuleIndex].condition_content[this.currentConditionIndex]
|
|
|
|
+ if (condition) {
|
|
|
|
+ // 存储完整的对象选择,而不只是字段名
|
|
|
|
+ condition.param2_object = [parentField, subItem.field]
|
|
|
|
+ // 同时更新param2为字符串表示形式,用于提交
|
|
|
|
+ condition.param2 = `${parentField}.${subItem.field}`
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ const condition = this.ruleForm.rule[this.currentRuleIndex].condition_content[this.currentConditionIndex]
|
|
|
|
+ if (condition) {
|
|
|
|
+ condition[this.currentSource] = [parentField, subItem.field]
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (this.currentSource === 'sx_param1' || this.currentSource === 'sx_param3' || this.currentSource === 'sx_param4_index' || this.currentSource === 'sx_param4_kssj' || this.currentSource === 'sx_param4_jssj') {
|
|
|
|
+ // 判断是在前置条件还是质控逻辑中
|
|
|
|
+ if (this.currentInputSource === 'qztj') {
|
|
|
|
+ const condition = this.ruleForm.qztj[this.currentRuleIndex].condition_content[this.currentConditionIndex]
|
|
|
|
+ if (condition) {
|
|
|
|
+ // 存储完整的对象选择,而不只是字段名
|
|
|
|
+ condition.param2_object = [parentField, subItem.field]
|
|
|
|
+ // 同时更新param2为字符串表示形式,用于提交
|
|
|
|
+ condition.param2 = `${parentField}.${subItem.field}`
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ const condition = this.ruleForm.rule[this.currentRuleIndex].condition_content[this.currentConditionIndex]
|
|
|
|
+ if (condition) {
|
|
|
|
+ condition[this.currentSource] = [parentField, subItem.field]
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
this.categoryDialogVisible = false
|
|
this.categoryDialogVisible = false
|
|
@@ -2372,4 +2913,36 @@ export default {
|
|
gap: 10px;
|
|
gap: 10px;
|
|
padding: 10px;
|
|
padding: 10px;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+.progress-note {
|
|
|
|
+ .el-row {
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
+ justify-content: flex-start;
|
|
|
|
+ }
|
|
|
|
+ .el-col {
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+.grid-container {
|
|
|
|
+ display: grid;
|
|
|
|
+ grid-template-columns: repeat(3, 1fr);
|
|
|
|
+ gap: 10px;
|
|
|
|
+ .el-tag {
|
|
|
|
+ text-align: center;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+::v-deep .el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable {
|
|
|
|
+ padding: 0;
|
|
|
|
+
|
|
|
|
+ .el-tabs__nav-prev {
|
|
|
|
+ display: none;
|
|
|
|
+ height: 0px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .el-tabs__nav-next {
|
|
|
|
+ display: none;
|
|
|
|
+ height: 0;
|
|
|
|
+ }
|
|
|
|
+}
|
|
</style>
|
|
</style>
|