You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

336 lines
8.2 KiB

3 years ago
<template>
<div class="specialBox">
2 years ago
<div class="examineBox">
2 years ago
<i class="el-icon-refresh refresh" @click="getSpecialItem"></i>
2 years ago
<el-table
:data="tableData"
2 years ago
v-loading="loading"
2 years ago
@row-click="handleData"
2 years ago
style="width: 100%;margin-top: 16px"
3 years ago
>
2 years ago
<el-table-column
prop="examTime"
label="时间"
2 years ago
align="center"
width="165"
2 years ago
/>
<el-table-column
prop="examineItem"
label="检查项目"
2 years ago
align="center"
width="195"
2 years ago
/>
<el-table-column
prop="name"
label="检查报告"
2 years ago
align="center"
width="180"
2 years ago
>
<template slot-scope="scope">
2 years ago
<el-button type="text" size="small" @click.native.stop="handleRecord(scope.row)">
2 years ago
当次报告
</el-button>
2 years ago
<el-button type="text" size="small" @click.native.stop="handleRecord(scope.row)">
2 years ago
所有报告
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class="examineData">
2 years ago
<i class="el-icon-refresh refresh-r" @click="getItemData"></i>
3 years ago
<div style="display: flex;justify-content: space-between">
<span style="font-size: 16px;font-weight: 500;color: rgba(0, 0, 0, 0.88);margin-top: 4px">提取数据</span>
2 years ago
<div v-if="!onlyRead" size="small" style="display:inline-block;margin-left:10px;width: 32px;height: 32px;line-height:32px;text-align:center;background-color: #1e79ff;border-radius: 4px;vertical-align: middle" @click="addDataList">
<img :src="require('@/assets/img/data.png')" alt="" style="width: 17px;height: 16px;margin-bottom: 4px">
3 years ago
</div>
</div>
<el-table
class="tableBox"
3 years ago
:data="extractData"
2 years ago
v-loading="loadingFlag"
3 years ago
style="width: 100%;margin-top: 16px"
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
width="55"
/>
<el-table-column
prop="date"
label="名称"
width="120"
/>
<el-table-column
prop="name"
label="OD"
width="120"
/>
<el-table-column
prop="name"
label="OS"
width="180"
/>
<el-table-column
prop="name"
label="OU"
width="120"
/>
</el-table>
</div>
3 years ago
<!-- 图像与报告 -->
<keep-alive>
<el-dialog title="" class="detail-view" :fullscreen="true" :visible.sync="isActive" append-to-body @close="closePacs">
<imgRecord :patient-info="patientBaseData" />
</el-dialog>
</keep-alive>
3 years ago
</div>
</template>
<script>
3 years ago
import imgRecord from '@/components/360View/img-reccrd'
import eventBus from '@/page-subspecialty/utils/eventBus'
3 years ago
const Base64 = require('js-base64').Base64
export default {
components: {
3 years ago
imgRecord
3 years ago
},
mixins: [],
props: {
patientIdNumber: {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
},
3 years ago
onlyRead: {
type: Boolean,
default: false
2 years ago
}
3 years ago
},
inject: ['refresh'],
data() {
return {
2 years ago
date: '',
2 years ago
examNo: '',
examineItem: '',
3 years ago
multipleSelection: [],
3 years ago
tableData: [],
extractData: [],
patientBaseData: {},
2 years ago
loading: false,
loadingFlag: false,
3 years ago
isActive: false
3 years ago
}
},
created() {
},
mounted() {
3 years ago
this.getPatientData()
this.getSpecialItem()
3 years ago
},
methods: {
3 years ago
// 获取特殊检查项
async getSpecialItem() {
2 years ago
this.loading = true
3 years ago
const { data: res } = await this.$http.get('/patient/view/getExamineItem', {
3 years ago
params: {
2 years ago
// patientId: '1693275'
patientId: this.patientId
2 years ago
// date: this.date
3 years ago
}
})
if (res.code === 0) {
2 years ago
this.loading = false
3 years ago
this.tableData = res.data || []
2 years ago
if (res.data.length) {
this.examNo = res.data[0].examNo
this.examineItem = res.data[0].examineItem
2 years ago
this.getItemData()
2 years ago
}
3 years ago
} else {
3 years ago
this.tableData = []
3 years ago
this.$message.error(res.msg)
}
},
2 years ago
async getItemData() {
2 years ago
this.loadingFlag = true
2 years ago
const { data: res } = await this.$http.get('/patient/view/getExtractData', {
params: {
examNo: this.examNo,
examineItem: this.examineItem
}
})
if (res.code === 0) {
2 years ago
this.loadingFlag = false
2 years ago
this.extractData = res.data || []
} else {
2 years ago
this.loadingFlag = false
2 years ago
}
},
3 years ago
handleSelectionChange(val) {
this.multipleSelection = val
},
3 years ago
// 根据id获取患者信息--中间上侧患者信息
async getPatientData() {
const { data: res } = await this.$http.get(
'/patient/view/getPatientData',
{
params: {
// patientId: this.patientId
patientId: '797064'
3 years ago
}
}
3 years ago
)
if (res.code === 0) {
this.patientBaseData = res.data ? res.data : {}
} else {
this.$message.error(res.msg)
3 years ago
}
},
2 years ago
// 点击行展示提取数据
2 years ago
handleData(item) {
this.examNo = item.examNo
this.examineItem = item.examineItem
this.getItemData()
},
2 years ago
handleRecord(item) {
const patientInfo = {
examDate: item.examTime ? item.examTime.substring(0, 11) : '',
itemCode: item.examineItem,
examNo: item.examNo,
patientId: this.patientId
}
const { href } = this.$router.resolve({
name: 'pacs',
query: {
info: this.$Base64.encode(JSON.stringify(patientInfo))
}
})
window.open(href, '_blank')
3 years ago
},
// 关闭360弹框
closePacs() {
this.isActive = false
},
// 添加数据集
addDataList() {
const data = this.multipleSelection
eventBus.$emit('sendForData', data)
3 years ago
}
}
}
</script>
<style lang="scss" scoped>
.specialBox{
width: 100%;
height: 100%;
display: flex;
box-sizing: border-box;
overflow-y: auto;
2 years ago
.examineBox{
height: 100%;
overflow: auto;
2 years ago
position: relative;
.refresh{
position: absolute;
2 years ago
right: 18px;
2 years ago
top: 35px;
z-index: 999;
cursor: pointer;
color: #409EFF;
}
2 years ago
}
.examineData{
padding: 16px 0 0 16px;
height: 100%;
overflow: auto;
box-sizing: border-box;
2 years ago
position: relative;
.refresh-r{
position: absolute;
left: 90px;
top: 25px;
z-index: 999;
cursor: pointer;
color: #409EFF;
}
2 years ago
}
3 years ago
.header{
width: 100%;
display: flex;
justify-content: space-between;
height: 49px;
line-height: 49px;
padding: 0px 16px;
box-sizing: border-box;
margin-bottom: 32px;
border: 1px solid rgba(0, 0, 0, 0.06);
}
.content{
width: 100%;
//display: flex;
//justify-content: space-between;
box-sizing: border-box;
}
.lineBox{
//width: 48%;
width: 100%;
height: 260px;
padding: 16px;
box-sizing: border-box;
border: 1px solid rgba(0, 0, 0, 0.06);
margin-bottom: 32px;
}
.scroll-echearts {
padding: 5px 0;
flex: 1;
margin-bottom: 16px;
//background: #171515;
border-radius: 4px;
}
.eyeBox{
width: 480px;
height: 180px;
display: flex;
margin-left: 32px;
border: 1px solid rgba(0, 0, 0, 0.06);
.eye{
width: 50%;
display: flex;
flex-direction: column;
div{
height: 45px;
line-height: 45px;
text-align: center;
}
.info{
display: flex;
justify-content: space-between;
padding: 0 14px;
border-top: 1px solid rgba(0, 0, 0, 0.06);
}
}
.el{
background: rgba(0, 0, 0, 0.04);
}
}
.mr30{
margin-right: 30px;
}
}
</style>
<style lang="scss">
.specialBox{
.el-table th{
background-color: #FAFAFA;
}
}
</style>