|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <div class="bg-box" style="padding-top: 0;">
|
|
|
+ <div class="bg-box">
|
|
|
<!-- 搜索栏 -->
|
|
|
<div class="bg-card" style="margin-bottom: 18px;">
|
|
|
<el-form :inline="true" :model="formInline" class="demo-form-inline">
|
|
@@ -35,14 +35,16 @@
|
|
|
<div class="tongji-item">
|
|
|
<div class="title">首页总例数</div>
|
|
|
<div class="middle">日均例数:<span>{{ tongjiData.dayAvg }}</span></div>
|
|
|
- <div class="count">{{ tongjiData.blSum }}</div>
|
|
|
+ <span class="count" @click="toErrorPage(1)" style="cursor: pointer;">
|
|
|
+ {{ tongjiData.blSum }}
|
|
|
+ </span>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<div class="tongji-item nth2">
|
|
|
<div class="title">缺陷总例数</div>
|
|
|
<div class="middle">缺陷占比:<span>{{ tongjiData.averageError }}%</span></div>
|
|
|
- <div class="count">{{ tongjiData.qxSum }}</div>
|
|
|
+ <span class="count" @click="toErrorPage(2)" style="cursor: pointer;">{{ tongjiData.qxSum }}</span>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
@@ -128,40 +130,58 @@
|
|
|
fit="contain"
|
|
|
@click="onToggleQuexianShow">
|
|
|
</el-image>
|
|
|
+ <slot>
|
|
|
+ <el-button type="primary" class="export-btn" icon="el-icon-download" size="small" style="float: right;" @click="onBmyProblemExport">下载</el-button>
|
|
|
+ </slot>
|
|
|
</CardTitle>
|
|
|
<el-collapse-transition>
|
|
|
<div v-show="quxian_show">
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="14">
|
|
|
- <!-- <div class="mb20">
|
|
|
- <el-radio-group v-model="qxxqData.radio" text-color="#185DA6" fill="#ffffff" @change="handleRadioChange">
|
|
|
- <el-radio-button :label="1">缺陷问题(前十)</el-radio-button>
|
|
|
- <el-radio-button :label="2">缺陷问题</el-radio-button>
|
|
|
- </el-radio-group>
|
|
|
- </div> -->
|
|
|
+ <el-col :span="24">
|
|
|
<!-- 搜索栏 -->
|
|
|
<el-form :inline="true" :model="qxxqData" class="demo-form-inline mb20">
|
|
|
- <el-form-item label="缺陷分类" style="margin-bottom: 0">
|
|
|
+ <el-form-item label="缺陷归类">
|
|
|
<el-select v-model="qxxqData.type" clearable filterable placeholder="全部">
|
|
|
<el-option label="患者基本信息" :value="0"></el-option>
|
|
|
<el-option label="诊疗信息" :value="1"></el-option>
|
|
|
<el-option label="费用信息" :value="2"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="出院科室" style="margin-bottom: 0">
|
|
|
+ <el-form-item label="出院科室">
|
|
|
<el-select v-model="qxxqData.dep_id" clearable filterable placeholder="全部">
|
|
|
- <el-option v-for="(item, index) in departmentList" :label="item.dep_name" :value="item.dep_id" :key="index"></el-option>
|
|
|
+ <el-option v-for="(item, index) in departmentList" :label="item.dep_name" :value="item.dep_id" :key="'dep'+index"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="缺陷分类">
|
|
|
+ <el-select v-model="qxxqData.level" clearable filterable placeholder="全部">
|
|
|
+ <el-option v-for="(item, index) in levels" :label="item.label" :value="item.value" :key="'dj'+index"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="缺陷字段">
|
|
|
+ <el-select v-model="qxxqData.field" multiple collapse-tags clearable filterable placeholder="全部">
|
|
|
+ <el-option v-for="(item, index) in fields" :label="item" :value="item" :key="'zd'+index"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="缺陷描述">
|
|
|
+ <el-input v-model="qxxqData.desc" placeholder="请输入" clearable></el-input>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item style="margin-bottom: 0">
|
|
|
<el-button type="primary" class="bg185DA6" @click="onQuexianSearch">查询</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="14">
|
|
|
+ <!-- <div class="mb20">
|
|
|
+ <el-radio-group v-model="qxxqData.radio" text-color="#185DA6" fill="#ffffff" @change="handleRadioChange">
|
|
|
+ <el-radio-button :label="1">缺陷问题(前十)</el-radio-button>
|
|
|
+ <el-radio-button :label="2">缺陷问题</el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+ </div> -->
|
|
|
<!-- 表格 -->
|
|
|
<el-table
|
|
|
:data="tableData"
|
|
|
class="mb20"
|
|
|
- style="width: 100%">
|
|
|
+ style="width: 100%; margin-top: -20px;">
|
|
|
<el-table-column
|
|
|
type="index"
|
|
|
label="序号"
|
|
@@ -334,13 +354,24 @@
|
|
|
|
|
|
<script>
|
|
|
import DoctorRankVue from './components/index/DoctorRank.vue'
|
|
|
-import { bmyDoctorRanking } from '@/api/excel'
|
|
|
+import { bmyDoctorRanking, encoderProblemExport } from '@/api/excel'
|
|
|
export default {
|
|
|
components: {
|
|
|
DoctorRankVue
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
+ levels: [
|
|
|
+ {
|
|
|
+ label: '强制',
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '建议',
|
|
|
+ value: 1
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ fields: [],
|
|
|
levelText: '优:≥97分;</br>' + '良:90~96分且不出现A类错误;</br>' + '中:75~89分且不出现A类错误;</br>' + '差:<75分。',
|
|
|
formInline: {
|
|
|
start_time: '',
|
|
@@ -373,7 +404,10 @@ import { bmyDoctorRanking } from '@/api/excel'
|
|
|
qxxqData: {
|
|
|
radio: 2,
|
|
|
dep_id: '',
|
|
|
- type: ''
|
|
|
+ type: '',
|
|
|
+ level: '',
|
|
|
+ desc: '',
|
|
|
+ field: []
|
|
|
},
|
|
|
qxPieDom: null,
|
|
|
tableData: [],
|
|
@@ -517,12 +551,25 @@ import { bmyDoctorRanking } from '@/api/excel'
|
|
|
this.qxxqPie()
|
|
|
this.getQuexianData()
|
|
|
this.getDoctorRank()
|
|
|
+ this.getFieldList()
|
|
|
},
|
|
|
methods: {
|
|
|
+ // 获取缺陷字段选项
|
|
|
+ getFieldList() {
|
|
|
+ this.$axios_new.post('/api/bmy/errorFieldList').then(res => {
|
|
|
+ this.fields = res.data
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 汇总统计跳转
|
|
|
+ toErrorPage(status) {
|
|
|
+ // status 1-总病历 2-缺陷病历
|
|
|
+ const { start_time, end_time } = this.formInline
|
|
|
+ this.$router.push({ name: 'EncoderErrors', query: { start_time, end_time, is_qx: status }})
|
|
|
+ },
|
|
|
// 缺陷详情列表
|
|
|
toPage(row) {
|
|
|
const { start_time, end_time } = this.formInline
|
|
|
- this.$router.push({ name: 'EncoderErrors', query: { rule_id: row.error_rule, start_time, end_time, ...this.qxxqData }})
|
|
|
+ this.$router.push({ name: 'EncoderErrors', query: { rule_id: row.error_rule, start_time, end_time, ...this.qxxqData, is_qx: 2 }})
|
|
|
},
|
|
|
// 全局筛选
|
|
|
async onGobalSearch() {
|
|
@@ -534,11 +581,14 @@ import { bmyDoctorRanking } from '@/api/excel'
|
|
|
},
|
|
|
// 获取缺陷数据
|
|
|
getQuexianData() {
|
|
|
- const { dep_id, type } = this.qxxqData
|
|
|
+ const { dep_id, type, level, desc, field } = this.qxxqData
|
|
|
const { page, size } = this.paginationData
|
|
|
const params = {
|
|
|
dep_id,
|
|
|
type,
|
|
|
+ level,
|
|
|
+ desc,
|
|
|
+ field,
|
|
|
page,
|
|
|
page_size: size,
|
|
|
...this.formInline
|
|
@@ -546,7 +596,7 @@ import { bmyDoctorRanking } from '@/api/excel'
|
|
|
this.$axios_new.post('/api/bmy/qualityData', params).then(res => {
|
|
|
const { count } = res.data
|
|
|
if (count < 10) {
|
|
|
- for(let i=0; i<10 - count-1; i++) {
|
|
|
+ for(let i=0; i<10 - res.data.length-1; i++) {
|
|
|
res.data.data.push({
|
|
|
error_rule: '',
|
|
|
count: '',
|
|
@@ -564,6 +614,37 @@ import { bmyDoctorRanking } from '@/api/excel'
|
|
|
this.paginationData.total = res.data.count
|
|
|
})
|
|
|
},
|
|
|
+ onBmyProblemExport() {
|
|
|
+ const { dep_id, type, level, desc, field } = this.qxxqData
|
|
|
+ const params = {
|
|
|
+ is_ten: 0,
|
|
|
+ AAC11C: dep_id,
|
|
|
+ level,
|
|
|
+ type,
|
|
|
+ desc,
|
|
|
+ field,
|
|
|
+ ...this.formInline
|
|
|
+ }
|
|
|
+ encoderProblemExport(params).then(res => {
|
|
|
+ const content = res.data; // 后台返回二进制数据
|
|
|
+ const blob = new Blob([content]);
|
|
|
+ const fileName = `编码员-缺陷问题.csv`;
|
|
|
+ if ('download' in document.createElement('a')) {
|
|
|
+ // 非IE下载
|
|
|
+ const elink = document.createElement('a');
|
|
|
+ elink.download = fileName;
|
|
|
+ elink.style.display = 'none';
|
|
|
+ elink.href = URL.createObjectURL(blob);
|
|
|
+ document.body.appendChild(elink);
|
|
|
+ elink.click();
|
|
|
+ URL.revokeObjectURL(elink.href); // 释放URL 对象
|
|
|
+ document.body.removeChild(elink);
|
|
|
+ } else {
|
|
|
+ // IE10+下载
|
|
|
+ navigator.msSaveBlob(blob, fileName);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
// 获取部门集合
|
|
|
getDepartmentData() {
|
|
|
this.$axios.post('/bmy/getAllDepartment').then(res => {
|