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.
 
 
 
 

489 lines
13 KiB

<template>
<div class="routineBox">
<div class="header">
<div>
<el-checkbox v-model="checkedSeJue" class="mr30">色觉检查</el-checkbox>
<span>OD:</span>
<el-select v-model="odStatus" placeholder="请选择" style="display: inline-block;width: 120px;" size="small">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<span style="margin-left: 32px">OS:</span>
<el-select v-model="osStatus" placeholder="请选择" style="display: inline-block;width: 120px" size="small">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div v-if="!onlyRead">
<div 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">
</div>
</div>
</div>
<div class="content">
<div class="lineBox">
<el-checkbox v-model="checkedShiLi">视力</el-checkbox>
<div style="display: flex">
<echarts-shili
:id-name="'indicators-shili'"
:chart-data="routineData.shili"
class="scroll-echearts"
/>
<div class="eyeBox">
<div class="eye el">
<div>最近一次</div>
<div>眼别</div>
<div>裸眼视力</div>
<div>矫正视力</div>
</div>
<div class="eye">
<div>{{ shiliLast.length ? shiliLast[0].examTime : '' }}</div>
<div class="info">
<span class="eye_w">OD</span>
<span class="eye_w">OS</span>
</div>
<div class="info">
<span class="eye_w">{{ shiliLast.length ? shiliLast[0].odVan : '' }}</span>
<span class="eye_w">{{ shiliLast.length ? shiliLast[0].osVan : '' }}</span>
</div>
<div class="info">
<span class="eye_w">{{ shiliLast.length ? shiliLast[0].odVag : '' }}</span>
<span class="eye_w">{{ shiliLast.length ? shiliLast[0].osVag : '' }}</span>
</div>
</div>
</div>
</div>
</div>
<div class="lineBox">
<el-checkbox v-model="checkedYanYa">眼压</el-checkbox>
<div style="display: flex">
<echarts-yanya
:id-name="'indicators-yanya'"
:chart-data="routineData.yanya"
class="scroll-echearts"
/>
<div class="eyeBox" style="height: 135px">
<div class="eye el">
<div>最近一次</div>
<div>眼别</div>
<div>眼压</div>
</div>
<div class="eye">
<div>{{ yanyaLast.length ? yanyaLast[0].examTime : '' }}</div>
<div class="info">
<span class="eye_w">OD</span>
<span class="eye_w">OS</span>
</div>
<div class="info">
<span class="eye_w">{{ yanyaLast.length ? yanyaLast[0].odIop : '' }}</span>
<span class="eye_w">{{ yanyaLast.length ? yanyaLast[0].osIop : '' }}</span>
</div>
</div>
</div>
</div>
</div>
<div class="lineBox">
<el-checkbox v-model="checkedDL" @change="changeDL">电脑验光</el-checkbox>
<el-table
ref="tableDL"
:data="routineData.dNyanguang"
style="width: 100%;margin-top: 32px"
@selection-change="handleSelectionDL"
>
<el-table-column
type="selection"
width="55"
/>
<el-table-column
prop="examTime"
label="时间"
width="200"
/>
<el-table-column
prop="eyeType"
label="眼别"
align="center"
/>
<el-table-column
prop="odSph"
label="球镜 DS"
align="center"
/>
<el-table-column
prop="odCyl"
label="柱镜 DC"
align="center"
/>
<el-table-column
prop="odAx"
label="轴位 Axis"
align="center"
/>
<el-table-column
prop="odVa"
label="矫正视力(VA)"
align="center"
/>
<el-table-column
prop="odAdd"
label="下加光(ADD)"
align="center"
/>
</el-table>
</div>
<div class="lineBox">
<el-checkbox v-model="checkedZJ" @change="changeZJ">主觉验光</el-checkbox>
<el-table
ref="tableZJ"
:data="routineData.zJyanguang"
style="width: 100%;margin-top: 32px"
@selection-change="handleSelectionZJ"
>
<el-table-column
type="selection"
width="55"
/>
<el-table-column
prop="examTime"
label="时间"
width="200"
/>
<el-table-column
prop="eyeType"
label="眼别"
align="center"
/>
<el-table-column
prop="odSph"
label="球镜 DS"
align="center"
/>
<el-table-column
prop="odCyl"
label="柱镜 DC"
align="center"
/>
<el-table-column
prop="odAx"
label="轴位 Axis"
align="center"
/>
<el-table-column
prop="odVa"
label="矫正视力VA"
align="center"
/>
<el-table-column
prop="odAdd"
label="下加光(ADD)"
align="center"
/>
</el-table>
</div>
</div>
</div>
</template>
<script>
import eventBus from '@/page-subspecialty/utils/eventBus'
import echartsYanya from '@/components/echarts/yanya'
import echartsShili from '@/components/echarts/shili copy'
const Base64 = require('js-base64').Base64
export default {
components: {
echartsShili,
echartsYanya
},
mixins: [],
props: {
patientIdNumber: {
type: String,
default: ''
},
patientId: {
type: String,
default: ''
},
onlyRead: {
type: Boolean,
default: false
},
date: {
type: String,
default: ''
}
},
inject: ['refresh'],
data() {
return {
checkedSeJue: false,
checkedShiLi: false,
checkedYanYa: false,
checkedDL: false,
checkedZJ: false,
options: [
{
value: '',
label: '全部'
},
{
value: '10',
label: '正常'
},
{
value: '20',
label: '色盲'
},
{
value: '30',
label: '色弱'
}
],
routineData: {},
osStatus: '',
odStatus: '',
selectionDL: [],
selectionZJ: [],
shiliLast: [],
yanyaLast: []
}
},
created() {
},
mounted() {
this.getroutineDataData()
},
methods: {
async getroutineDataData() {
const { data: res } = await this.$http.get('/patient/view/getVaAndIopAndRefAndLast', {
params: {
patientId: this.patientId,
date: ''
}
})
if (res.code === 0) {
this.routineData = res.data
this.shiliLast = res.data.shiliLast || []
this.yanyaLast = res.data.yanyaLast || []
this.odStatus = this.shiliLast.length ? this.shiliLast[0].odCvText : ''
this.osStatus = this.shiliLast.length ? this.shiliLast[0].osCvText : ''
if (this.shiliLast.length) {
window.localStorage.setItem('shili', JSON.stringify(res.data.shiliLast))
} else {
window.localStorage.setItem('shili', [])
}
} else {
this.routineData = {}
this.$message.error(res.msg)
}
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
if (rowIndex % 2 === 0) {
return {
rowspan: 2,
colspan: 1
}
} else {
return {
rowspan: 0,
colspan: 0
}
}
}
},
handleSelectionDL(val) {
this.selectionDL = val
},
handleSelectionZJ(val) {
this.selectionZJ = val
},
changeDL() {
if (this.checkedDL) {
const data = this.routineData.dNyanguang.slice(0, 2)
if (data.length) {
data.forEach(row => {
this.$refs.tableDL.toggleRowSelection(row)
})
}
} else {
this.$refs.tableDL.clearSelection()
}
},
changeZJ() {
if (this.checkedZJ) {
const data = this.routineData.zJyanguang.slice(0, 2)
if (data.length) {
data.forEach(row => {
this.$refs.tableZJ.toggleRowSelection(row)
})
}
} else {
this.$refs.tableZJ.clearSelection()
}
},
// 添加数据集
addDataList() {
let dataArray = []
if (this.checkedSeJue) {
const data = [{
name: '',
odValue: '',
osValue: ''
}]
data[0].name = '色觉检查'
data[0].odValue = this.odStatus
data[0].osValue = this.osStatus
data[0].id = 'SJ001'
dataArray = dataArray.concat(data)
}
if (this.checkedShiLi) {
const data = [
{
name: '',
odValue: '',
osValue: ''
},
{
name: '',
odValue: '',
osValue: ''
}]
const shili = this.shiliLast[0]
data[0].name = '裸眼视力'
data[0].odValue = shili.odVan
data[0].osValue = shili.osVan
data[0].id = 'LY001'
data[1].name = '矫正视力'
data[1].odValue = shili.odVag
data[1].osValue = shili.osVag
data[1].id = 'JZ001'
dataArray = dataArray.concat(data)
}
if (this.checkedYanYa) {
const data = [{
name: '',
odValue: '',
osValue: ''
}]
const yanya = this.yanyaLast[0]
data[0].name = '眼压'
data[0].odValue = yanya.odIop
data[0].osValue = yanya.osIop
data[0].id = 'YY001'
dataArray = dataArray.concat(data)
}
if (this.selectionDL) {
console.log(this.selectionDL)
this.selectionDL.forEach((item, index) => {
item.name = '电脑验光'
item.id = 'dl' + index
item.sort = 5
})
dataArray = dataArray.concat(this.selectionDL)
}
if (this.selectionZJ) {
this.selectionZJ.forEach((item, index) => {
item.name = '主觉验光'
item.id = 'zj' + index
item.sort = 6
})
dataArray = dataArray.concat(this.selectionZJ)
}
eventBus.$emit('sendForData', dataArray)
}
}
}
</script>
<style lang="scss" scoped>
.routineBox{
width: 100%;
height: 100%;
padding: 16px;
box-sizing: border-box;
overflow-y: auto;
.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%;
box-sizing: border-box;
}
.lineBox{
width: 100%;
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);
}
.eye_w{
display: inline-block;
width: 80px;
text-align: center;
}
}
.el{
background: rgba(0, 0, 0, 0.04);
}
}
.mr30{
margin-right: 30px;
}
}
</style>
<style lang="scss">
.routineBox{
.el-radio {
margin-right: 15px;
}
.el-checkbox__label, .el-input__inner{
font-size: 16px;
}
}
</style>