|
@@ -99,116 +99,93 @@
|
|
|
<!-- <h2 class="score-dj">{{ scoreLevel }}</h2> -->
|
|
|
</div>
|
|
|
|
|
|
- <div class="card-box" v-if="data.is_case">
|
|
|
- <div class="title">
|
|
|
- <span class="font-size12">智能结果更新时间:</span>
|
|
|
- <span class="font-size12">{{ data.quality_time }}</span>
|
|
|
- </div>
|
|
|
+ <el-row type="flex" justify="space-between" align="middle" class="card-box card-box-noStyle" v-if="data.is_case">
|
|
|
+ <span class="title font-size12">
|
|
|
+ <i :class="`el-icon-arrow-${!filterCollapse ? 'up' : 'down'}`" style="cursor: pointer" @click="filterCollapse = !filterCollapse"/>
|
|
|
+ <span class="text-bold" style="margin-left: 5px;cursor: pointer;" @click="setFilterForm('')">
|
|
|
+ 问题数量:
|
|
|
+ <span class="problem_count">{{data.data && Array.isArray(data.data) ? data.data.length : 0 }}</span>
|
|
|
+ </span>
|
|
|
+ </span>
|
|
|
+ <span class="font-size12">{{ data.quality_time }}</span>
|
|
|
<el-tag type="danger" v-if="data.is_case == 1" class="font-size12">质控中</el-tag>
|
|
|
<el-tag v-if="data.is_case == 2" class="font-size12">已质控</el-tag>
|
|
|
-
|
|
|
+ </el-row>
|
|
|
+ <div class="filterBox" v-if="!filterCollapse">
|
|
|
+ <div v-for="(value, key) in filterList" :class="`${filterFormData.type == key ? 'filterRow selected' : 'filterRow'}`" @click="setFilterForm(key)">
|
|
|
+ <div class="filterLabel text-bold">{{value.label}}</div>
|
|
|
+ <span style="margin-left: 10px">({{data.summary[key] && Array.isArray(data.summary[key]) ? data.summary[key].length : 0}})</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<el-scrollbar ref="scrollRef" class="scrollBox" :style="`height: ${scrollHeight}`">
|
|
|
- <template v-for="(item, index) in data.data">
|
|
|
- <!-- is_appeal: 是否申述 -->
|
|
|
- <div class="list-box box-card" :key="index">
|
|
|
- <div class="list-score-tips-box">
|
|
|
- <el-row class="list-item-title" type="flex" align="middle" justify="space-between">
|
|
|
- 质控项目:
|
|
|
- <el-image class="list-item-image" v-if="item.is_artificial == 0" :src="require('../../../assets/images/zsicon.png')" fit="contain">
|
|
|
- </el-image>
|
|
|
- <el-image v-if="item.is_artificial == 1" class="list-item-image" :src="require('../../../assets/images/ysicon.png')" fit="contain">
|
|
|
- </el-image>
|
|
|
- </el-row>
|
|
|
- <el-row type="flex" align="middle" style="margin-bottom: 15px;">
|
|
|
- <div class="list-item-field" :title="item.error_field">
|
|
|
- {{ item.error_field }}
|
|
|
- </div>
|
|
|
- <div class="list-item-score" :class="item.level == -1 ? 'hover-0' : item.level == 1 ? 'hover-1' : 'hover-2' ">
|
|
|
- {{ item.score }}分
|
|
|
- </div>
|
|
|
- </el-row>
|
|
|
- <div class="list-item-title">错误描述:</div>
|
|
|
- <div class="list-item-value" style="margin-bottom: 15px">{{ item.notice }}</div>
|
|
|
- <div class="list-item-title" @click="item.basis && clickListItem(index)">
|
|
|
- 质控依据 <i :class="`el-icon-arrow-${item.show ? 'up' : 'down'}`" style="cursor: pointer;font-weight: bold"></i>
|
|
|
- </div>
|
|
|
- <div class="list-item-basis-box">
|
|
|
- <div class="list-basis-text">
|
|
|
- <div class="list-basis-text-t" :class="item.show?'show':''">
|
|
|
- <div v-for="(yItem, yIndex) of item.basis" :key="yIndex" style="margin-bottom: 10px;">
|
|
|
- <div v-if="typeof yItem == 'string'">
|
|
|
- <span class="span-index">{{ yIndex+1 }}</span>
|
|
|
- <span class="list-item-value">{{yItem}}</span><br/>
|
|
|
- </div>
|
|
|
- <span type="flex" align="middle" v-else>
|
|
|
- <span class="span-index">{{ yIndex+1 }}</span>
|
|
|
- <span v-for="(cItem, cIndex) in yItem" :key="cIndex">
|
|
|
- <span class="list-item-value" v-if="!isNaN(parseFloat(cIndex))">{{cItem}}</span>
|
|
|
- <div style="height: 15px"></div>
|
|
|
- </span>
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="list-basis-bottom-box" v-if="$route.path == '/whitelist-caseControl'">
|
|
|
- <div class="list-basis-bottom-tips">
|
|
|
- <div class="appeal_no" @click="clickAppeal('appeal_no', item, 2 )" v-if="item.appeal_type == 2 && item.appeal_status == 2">驳回</div>
|
|
|
- <div class="appeal_progress" v-if="item.appeal_type == 2 && item.appeal_status == 0">申诉中</div>
|
|
|
- <div class="appeal_in_edit" @click="clickAppealEdit(item, 2)" v-if="item.is_artificial == 1">已整改</div>
|
|
|
+ <template v-if="(!filterFormData.type? !!(data.data.length) : !!((data.summary)[filterFormData.type].length)) ">
|
|
|
+ <template v-for="(item, index) in (!filterFormData.type? data.data : (data.summary)[filterFormData.type])">
|
|
|
+ <!-- is_appeal: 是否申述 -->
|
|
|
+ <div class="list-box box-card" :key="index">
|
|
|
+ <div class="list-score-tips-box">
|
|
|
+ <el-row type="flex" align="middle" justify="space-between" style="margin-bottom: 15px;">
|
|
|
+ <el-row type="flex">
|
|
|
+ <div class="list-item-score" :class="item.level == -1 ? 'hover-0' : item.level == 1 ? 'hover-1' : 'hover-2' ">
|
|
|
+ {{ item.level == -1 ? '预警' : item.level == 1? '必改':'建议' }}
|
|
|
</div>
|
|
|
- <div class="list-basis-bottom-btn" v-if="item.appeal_type == 0">
|
|
|
- <div class="appeal" @click="clickAppeal('appeal', item, 2 )">申诉</div>
|
|
|
- <div class="appeal_in_ignore" @click="clickAppeal('appeal_in_ignore', item, 2 )">忽略</div>
|
|
|
+ <div class="list-item-field" :title="item.error_field">
|
|
|
+ {{ item.error_field }}
|
|
|
</div>
|
|
|
+ </el-row>
|
|
|
+ <div v-if="item.level != -1" style="color: #DA1515;" class="text-bold">
|
|
|
+ -{{ item.score }}分
|
|
|
</div>
|
|
|
+ </el-row>
|
|
|
+ <el-row type="flex" justify="space-between" align="top">
|
|
|
+ <div>
|
|
|
+ <div class="list-item-title">错误描述:</div>
|
|
|
+ <div class="list-item-value" style="margin-bottom: 15px">{{ item.notice }}</div>
|
|
|
+ </div>
|
|
|
+ <el-image class="list-item-image" v-if="item.is_artificial == 0" :src="require('../../../assets/images/zsicon.png')" fit="contain">
|
|
|
+ </el-image>
|
|
|
+ <el-image v-if="item.is_artificial == 1" class="list-item-image" :src="require('../../../assets/images/ysicon.png')" fit="contain">
|
|
|
+ </el-image>
|
|
|
+ </el-row>
|
|
|
+ <div class="list-item-title" @click="item.basis && clickListItem(index)">
|
|
|
+ 质控依据 <i :class="`el-icon-arrow-${item.show ? 'up' : 'down'}`" style="cursor: pointer;font-weight: bold"></i>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <!-- <div class="list-left-score" :class="item.level == -1 ? 'hover-0' : item.level == 1 ? 'hover-1' : 'hover-2' ">
|
|
|
- <div> {{ item.level == -1 ? '预警' : item.level == 1? '必改':'建议' }} </div>
|
|
|
- <div v-if="item.level != -1">-{{ item.score }}</div>
|
|
|
- </div>
|
|
|
- <div class="list-right-tips">
|
|
|
- <div><span class="title-color">字段:</span><span>{{ item.error_field }}</span></div>
|
|
|
- <div class="notice-box"><span class="title-color">提示:</span><span>{{ item.notice }}</span></div>
|
|
|
- </div> -->
|
|
|
- </div>
|
|
|
- <!-- <div class="list-basis-box">
|
|
|
- <div class="list-basis-title" @click="item.basis && clickListItem(index)">
|
|
|
- <span>质控依据</span>
|
|
|
- <span> >> </span>
|
|
|
-
|
|
|
- </div>
|
|
|
- <div class="list-basis-text">
|
|
|
- <div class="list-basis-text-t" :class="item.show?'show':''">
|
|
|
- <div v-for="(yItem, yIndex) of item.basis" :key="yIndex" style="margin-bottom: 10px;">
|
|
|
- <div v-if="typeof yItem == 'string'">
|
|
|
- <span class="span-index">{{ yIndex+1 }}</span>
|
|
|
- <span>{{yItem}}</span><br/>
|
|
|
+ <div class="list-item-basis-box">
|
|
|
+ <div class="list-basis-text">
|
|
|
+ <div class="list-basis-text-t" :class="item.show?'show':''">
|
|
|
+ <div v-for="(yItem, yIndex) of item.basis" :key="yIndex" style="margin-bottom: 10px;">
|
|
|
+ <div v-if="typeof yItem == 'string'">
|
|
|
+ <span class="span-index">{{ yIndex+1 }}</span>
|
|
|
+ <span class="list-item-value">{{yItem}}</span><br/>
|
|
|
+ </div>
|
|
|
+ <el-row v-else class="list-basis-text-t-noString">
|
|
|
+ <span class="span-index">{{ yIndex+1 }}</span>
|
|
|
+ <span v-for="(cItem, cIndex) in yItem" :key="cIndex" v-if="!isNaN(parseFloat(cIndex))">
|
|
|
+ <span class="list-item-value">{{cItem}}</span>
|
|
|
+ <div style="height: 10px"></div>
|
|
|
+ </span>
|
|
|
+ </el-row>
|
|
|
</div>
|
|
|
- <div v-else>
|
|
|
- <span class="span-index">{{ yIndex+1 }}</span>
|
|
|
- <span v-for="(cItem, cIndex) in yItem" :key="cIndex">
|
|
|
- <span v-if="!isNaN(parseFloat(cIndex))" style="line-height: 25px">{{cItem}}</span><br/>
|
|
|
- </span>
|
|
|
+ </div>
|
|
|
+ <div class="list-basis-bottom-box" v-if="$route.path == '/whitelist-caseControl'">
|
|
|
+ <div class="list-basis-bottom-tips">
|
|
|
+ <div class="appeal_no" @click="clickAppeal('appeal_no', item, 2 )" v-if="item.appeal_type == 2 && item.appeal_status == 2">驳回</div>
|
|
|
+ <div class="appeal_progress" v-if="item.appeal_type == 2 && item.appeal_status == 0">申诉中</div>
|
|
|
+ <div class="appeal_in_edit" @click="clickAppealEdit(item, 2)" v-if="item.is_artificial == 1">已整改</div>
|
|
|
</div>
|
|
|
+ <div class="list-basis-bottom-btn" v-if="item.appeal_type == 0">
|
|
|
+ <div class="appeal" @click="clickAppeal('appeal', item, 2 )">申诉</div>
|
|
|
+ <div class="appeal_in_ignore" @click="clickAppeal('appeal_in_ignore', item, 2 )">忽略</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="list-basis-bottom-box" v-if="$route.path == '/whitelist-caseControl'">
|
|
|
- <div class="list-basis-bottom-tips">
|
|
|
- <div class="appeal_no" @click="clickAppeal('appeal_no', item, 2 )" v-if="item.appeal_type == 2 && item.appeal_status == 2">驳回</div>
|
|
|
- <div class="appeal_progress" v-if="item.appeal_type == 2 && item.appeal_status == 0">申诉中</div>
|
|
|
- <div class="appeal_in_edit" @click="clickAppealEdit(item, 2)" v-if="item.is_artificial == 1">已整改</div>
|
|
|
- </div>
|
|
|
- <div class="list-basis-bottom-btn" v-if="item.appeal_type == 0">
|
|
|
- <div class="appeal" @click="clickAppeal('appeal', item, 2 )">申诉</div>
|
|
|
- <div class="appeal_in_ignore" @click="clickAppeal('appeal_in_ignore', item, 2 )">忽略</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div> -->
|
|
|
- </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <el-empty :image-size="100"></el-empty>
|
|
|
</template>
|
|
|
</el-scrollbar>
|
|
|
</div>
|
|
@@ -289,7 +266,37 @@ import { examineAppeal, getAppealData, getBrry } from '@/api/qc';
|
|
|
taskNameList: [],
|
|
|
currentTaskName: '',
|
|
|
showTaskNameMenu: true,
|
|
|
- baseInfo: {}
|
|
|
+ baseInfo: {},
|
|
|
+ filterCollapse: false,
|
|
|
+ filterFormData: {
|
|
|
+ type: ''
|
|
|
+ },
|
|
|
+ filterList: {
|
|
|
+ ryjl: {
|
|
|
+ label: '入院记录',
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ bcjl: {
|
|
|
+ label: '病程记录',
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ ssjl: {
|
|
|
+ label: '手术记录',
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ cyjl: {
|
|
|
+ label: '出院记录',
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ tys: {
|
|
|
+ label: '同意书',
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ qt: {
|
|
|
+ label: '其他文书',
|
|
|
+ value: 0
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -323,6 +330,10 @@ import { examineAppeal, getAppealData, getBrry } from '@/api/qc';
|
|
|
this.getInitData();
|
|
|
},
|
|
|
methods: {
|
|
|
+ setFilterForm(key) {
|
|
|
+ this.filterFormData.type = key;
|
|
|
+ // this.getTableData();
|
|
|
+ },
|
|
|
getInitData() {
|
|
|
if(this.$route.path != '/whitelist-caseControl' ) {
|
|
|
this.getTableData();
|
|
@@ -474,7 +485,11 @@ import { examineAppeal, getAppealData, getBrry } from '@/api/qc';
|
|
|
this.$emit('hightRight',hightKeyWord,bllb,zyh)
|
|
|
},
|
|
|
clickListItem(idx){
|
|
|
- this.data.data[idx].show = !this.data.data[idx].show
|
|
|
+ if(this.filterFormData.type) {
|
|
|
+ (this.data.summary[this.filterFormData.type])[idx].show = !((this.data.summary[this.filterFormData.type])[idx]).show
|
|
|
+ } else {
|
|
|
+ this.data.data[idx].show = !this.data.data[idx].show
|
|
|
+ }
|
|
|
this.$forceUpdate();
|
|
|
},
|
|
|
// 点击申诉、忽略按钮
|
|
@@ -498,6 +513,34 @@ import { examineAppeal, getAppealData, getBrry } from '@/api/qc';
|
|
|
.text-bold {
|
|
|
font-weight: bold;
|
|
|
}
|
|
|
+ .problem_count {
|
|
|
+ color: rgba(239, 31, 58, 1);
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 700;
|
|
|
+ line-height: 20px;
|
|
|
+ }
|
|
|
+ .filterBox {
|
|
|
+ padding: 0 5px;
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: repeat(3, 1fr); /* 创建4列,每列占据可用空间的1份 */
|
|
|
+ gap: 5px; /* 可选,添加间隙 */
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 23px;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ .filterRow {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ cursor: pointer;
|
|
|
+ .filterLabel {
|
|
|
+ width: 56px;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .selected {
|
|
|
+ color: #409EFF
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
::v-deep.el-submenu {
|
|
|
&>.el-submenu__title {
|
|
@@ -644,6 +687,12 @@ import { examineAppeal, getAppealData, getBrry } from '@/api/qc';
|
|
|
background-size: 60px 52px;
|
|
|
background-position:80% 50%;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ .card-box-noStyle {
|
|
|
+ background: transparent !important;
|
|
|
+ padding: 0px !important;
|
|
|
+ }
|
|
|
.card-box {
|
|
|
// height: 175px;
|
|
|
// background: #FFFFFF;
|
|
@@ -819,13 +868,13 @@ import { examineAppeal, getAppealData, getBrry } from '@/api/qc';
|
|
|
line-height: 16px;
|
|
|
text-align: center;
|
|
|
font-style: normal;
|
|
|
- max-width: 200px;
|
|
|
+ // max-width: 200px;
|
|
|
text-overflow: ellipsis;
|
|
|
white-space: inherit;
|
|
|
overflow: hidden;
|
|
|
}
|
|
|
.list-item-score {
|
|
|
- padding: 10px;
|
|
|
+ padding: 10px 15px;
|
|
|
border-radius: 6px;
|
|
|
font-family: DINAlternate, DINAlternate;
|
|
|
font-weight: bold;
|
|
@@ -834,13 +883,13 @@ import { examineAppeal, getAppealData, getBrry } from '@/api/qc';
|
|
|
line-height: 16px;
|
|
|
text-align: center;
|
|
|
font-style: normal;
|
|
|
- margin-left: 16px;
|
|
|
+ margin-right: 5px;
|
|
|
&.hover-1{
|
|
|
background: #FFDFDF;
|
|
|
color: #DA1515;
|
|
|
}
|
|
|
&.hover-2{
|
|
|
- background: rgb(236, 245, 255);
|
|
|
+ background: rgb(190, 226, 248);
|
|
|
color: rgb(52, 140, 235);
|
|
|
}
|
|
|
&.hover-0{
|
|
@@ -873,10 +922,20 @@ import { examineAppeal, getAppealData, getBrry } from '@/api/qc';
|
|
|
height: 0;
|
|
|
overflow: hidden;
|
|
|
position: relative;
|
|
|
+ &> div:last-child {
|
|
|
+ margin-bottom: 0 !important;
|
|
|
+ }
|
|
|
&.show{
|
|
|
height: auto;
|
|
|
// padding: 10px 0 10px 10px;
|
|
|
}
|
|
|
+ .list-basis-text-t-noString {
|
|
|
+ &> span:last-child {
|
|
|
+ div {
|
|
|
+ height: 0 !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|