7 changed files with 487 additions and 44 deletions
@ -0,0 +1,413 @@ |
|||||
|
<template> |
||||
|
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always"> |
||||
|
<div class="btnBox"> |
||||
|
<div v-if="!onlyRead && isPlatform"> |
||||
|
<el-button v-print="'#reportForm'" size="small" @click="handlePrint">打印</el-button> |
||||
|
<template v-if="isCreator"> |
||||
|
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> |
||||
|
<el-button type="danger" size="small" @click="formDelete">删除</el-button> |
||||
|
</template> |
||||
|
</div> |
||||
|
<div v-if="creator" style="margin: 10px 0;text-align: left;color: #409EFF"> |
||||
|
<div> |
||||
|
操作者:{{ creator.doctorName }} |
||||
|
</div> |
||||
|
<div> |
||||
|
工号:{{ creator.doctorCode }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div style="width: 840px"> |
||||
|
<div id="reportForm" style="width: 100%;padding-right: 8px;text-align: left"> |
||||
|
<div v-if="!isDev" class="flex j-c" style="padding-bottom: 8px"> |
||||
|
<img width="650" src="@/assets/img/xianganlogo2.jpg"> |
||||
|
</div> |
||||
|
<p style="color:#000000;font-size:24px;font-weight: 700;letter-spacing: 10px;text-align:center;margin-bottom: 10px;word-spacing: 3px"> |
||||
|
视力筛查报告单 |
||||
|
</p> |
||||
|
<div class="flex"> |
||||
|
<div class="flex a-c">登记号:<el-input v-model="confirmData.patientId" style="flex: 1" /></div> |
||||
|
<div class="flex" style="width: 240px">姓名:<el-input v-model="confirmData.patientName" style="flex: 1" /></div> |
||||
|
<div class="flex" style="width: 240px">性别:<el-input v-model="confirmData.patientSex" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">年龄:<el-input v-model="confirmData.patientAge" style="flex: 1" /></div> |
||||
|
</div> |
||||
|
<table class="treatAction"> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td> |
||||
|
瞳孔 |
||||
|
</td> |
||||
|
<td colspan="2"> |
||||
|
<el-select v-model="confirmData.tk" filterable allow-create placeholder="" clearable> |
||||
|
<el-option |
||||
|
v-for="item in tkList" |
||||
|
:key="item.id" |
||||
|
:label="item.name" |
||||
|
:value="item.name" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>眼别</td> |
||||
|
<td>右眼</td> |
||||
|
<td>左眼</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>屈光不正度(D)</td> |
||||
|
<td> |
||||
|
<div class="flex"> |
||||
|
<el-input v-model="confirmData.qgbzdSphOd" placeholder="" /> |
||||
|
<span>/</span> |
||||
|
<el-input v-model="confirmData.qgbzdCylOd" placeholder="" /> |
||||
|
<span>/</span> |
||||
|
<el-input v-model="confirmData.qgbzdAxisOd" placeholder="" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div class="flex"> |
||||
|
<el-input v-model="confirmData.qgbzdSphOs" placeholder="" /> |
||||
|
<span>/</span> |
||||
|
<el-input v-model="confirmData.qgbzdCylOs" placeholder="" /> |
||||
|
<span>/</span> |
||||
|
<el-input v-model="confirmData.qgbzdAxisOs" placeholder="" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>眼位</td> |
||||
|
<td><el-input v-model="confirmData.ywOd" /></td> |
||||
|
<td><el-input v-model="confirmData.ywOs" /></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>瞳孔大小(mm)</td> |
||||
|
<td> |
||||
|
<el-input v-model="confirmData.tkdxOd" /> |
||||
|
</td> |
||||
|
<td> |
||||
|
<el-input v-model="confirmData.tkdxOs" /> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>结果</td> |
||||
|
<td colspan="2"> |
||||
|
<el-checkbox-group v-model="jgSelect"> |
||||
|
<el-checkbox label="正常" /> |
||||
|
<el-checkbox label="远视" /> |
||||
|
<el-checkbox label="近视" /> |
||||
|
<el-checkbox label="散光" /> |
||||
|
<el-checkbox label="屈光不正" /> |
||||
|
<el-checkbox label="斜视" /> |
||||
|
<el-checkbox label="其他"> |
||||
|
其他<el-input v-model="confirmData.jgOther" /> |
||||
|
</el-checkbox> |
||||
|
</el-checkbox-group> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>建议</td> |
||||
|
<td colspan="2"> |
||||
|
<el-select v-model="confirmData.jy" filterable allow-create placeholder="" clearable> |
||||
|
<el-option |
||||
|
v-for="item in jyList" |
||||
|
:key="item.id" |
||||
|
:label="item.name" |
||||
|
:value="item.name" |
||||
|
/> |
||||
|
</el-select> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'ScreenReport', |
||||
|
props: { |
||||
|
onlyRead: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
}, |
||||
|
isDev: { |
||||
|
type: Boolean |
||||
|
}, |
||||
|
isPlatform: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
}, |
||||
|
patientId: { |
||||
|
type: String |
||||
|
}, |
||||
|
caseId: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
isCreator: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
}, |
||||
|
// 操作者 |
||||
|
creator: { |
||||
|
type: Object |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
origin: {}, |
||||
|
originForm: {}, |
||||
|
tkList: [ |
||||
|
{ |
||||
|
name: '正常', |
||||
|
id: 1 |
||||
|
}, { |
||||
|
name: '复方托吡卡胺', |
||||
|
id: 2 |
||||
|
}, { |
||||
|
name: '赛飞杰', |
||||
|
id: 3 |
||||
|
}, { |
||||
|
name: '阿托品', |
||||
|
id: 4 |
||||
|
} |
||||
|
], |
||||
|
jyList: [ |
||||
|
{ |
||||
|
name: '随访', |
||||
|
id: '1' |
||||
|
}, { |
||||
|
name: '进一步检查', |
||||
|
id: '2' |
||||
|
} |
||||
|
], |
||||
|
jgSelect: [], |
||||
|
confirmData: { |
||||
|
tk: '正常', |
||||
|
jg: '', |
||||
|
jgOther: '', |
||||
|
jy: '', |
||||
|
tkdxOd: '', |
||||
|
tkdxOs: '', |
||||
|
ywOd: '', |
||||
|
ywOs: '', |
||||
|
qgbzdSphOd: '', |
||||
|
qgbzdSphOs: '', |
||||
|
qgbzdCylOd: '', |
||||
|
qgbzdCylOs: '', |
||||
|
qgbzdAxisOd: '', |
||||
|
qgbzdAxisOs: '', |
||||
|
jzNumber: '', |
||||
|
patientName: '', |
||||
|
patientAge: '', |
||||
|
patientSex: '', |
||||
|
patientId: '', |
||||
|
idList: [] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
caseId(val) { |
||||
|
if (val) { |
||||
|
this.getReportInfo() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.getReportInfo() |
||||
|
}, |
||||
|
methods: { |
||||
|
async getPatientData() { |
||||
|
const { data: res } = await this.$http.get( |
||||
|
'/slscbg/getSlscbgInfo', |
||||
|
{ |
||||
|
params: { |
||||
|
patientId: this.patientId |
||||
|
} |
||||
|
} |
||||
|
) |
||||
|
if (res.code === 0) { |
||||
|
this.confirmData.patientId = res.data.patientId |
||||
|
this.confirmData.patientAge = res.data.patientAge |
||||
|
this.confirmData.patientSex = res.data.patientSex |
||||
|
this.confirmData.patientName = res.data.patientName |
||||
|
} else { |
||||
|
this.$message.error(res.msg) |
||||
|
} |
||||
|
}, |
||||
|
// 获取详情数据展示 |
||||
|
handleResValue(val, change) { |
||||
|
if (!val) { |
||||
|
return |
||||
|
} |
||||
|
change.forEach(item => { |
||||
|
item.isSelect = false |
||||
|
item.remark = '' |
||||
|
}) |
||||
|
const list = val.split('/') |
||||
|
change.forEach(item => { |
||||
|
list.forEach(lis => { |
||||
|
if (lis === item.name) { |
||||
|
item.isSelect = true |
||||
|
} |
||||
|
if (lis.includes('其他') && item.name === '其他:') { |
||||
|
item.isSelect = true |
||||
|
item.remark = lis.split(':')[1] |
||||
|
} |
||||
|
}) |
||||
|
// 如果未选中,默认后面注释不保存 |
||||
|
if (!item.isSelect && item.name === '其他:') { |
||||
|
item.remark = '' |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
handlePrint() { |
||||
|
if (!this.isCreator) { |
||||
|
return |
||||
|
} |
||||
|
this.handleSaveTable() |
||||
|
}, |
||||
|
// 保存 |
||||
|
handleSaveTable() { |
||||
|
this.confirmData.jg = this.jgSelect.join('/') |
||||
|
this.confirmData.jzNumber = window.sessionStorage.getItem('jzNumber') |
||||
|
this.$http.post('/slscbg/saveSlscbg', { |
||||
|
caseId: this.caseId, |
||||
|
...this.confirmData |
||||
|
}).then(() => { |
||||
|
this.getReportInfo() |
||||
|
this.$emit('handleSaveTable') |
||||
|
}) |
||||
|
}, |
||||
|
getReportInfo() { |
||||
|
const params = { |
||||
|
patientId: this.patientId, |
||||
|
caseId: this.caseId |
||||
|
} |
||||
|
this.$http.get('/slscbg/getSlscbgInfo', { params }).then(data => { |
||||
|
const res = data.data.data |
||||
|
this.setData(res) |
||||
|
}) |
||||
|
}, |
||||
|
setData(res) { |
||||
|
this.confirmData = res |
||||
|
this.jgSelect = this.confirmData.jg.split('/') |
||||
|
if (!res.jzNumber) { |
||||
|
this.getPatientData() |
||||
|
const userData = JSON.parse(window.sessionStorage.getItem('qg-userData')) |
||||
|
this.confirmData.operator = userData.signImgBase |
||||
|
this.confirmData.operateDate = this.$moment().format('YYYY-MM-DD') |
||||
|
} |
||||
|
}, |
||||
|
// 获取项目id列表 |
||||
|
async queryProject() { |
||||
|
const project = window.sessionStorage.getItem('projectItem') ? JSON.parse(window.sessionStorage.getItem('projectItem')) : [] |
||||
|
const { data: res } = await this.$http.get( |
||||
|
'/patient/getZlItemDict', |
||||
|
{ |
||||
|
params: { |
||||
|
caseName: '报告' |
||||
|
} |
||||
|
} |
||||
|
) |
||||
|
if (res.code === 0) { |
||||
|
const data = res.data || [] |
||||
|
const list = [] |
||||
|
if (data.length) { |
||||
|
for (let i = 0; i < data.length; i++) { |
||||
|
for (let j = 0; j < project.length; j++) { |
||||
|
if (data[i].itemId === project[j].porjectCode) { |
||||
|
list.push(project[j].id) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
this.confirmData.idList = list |
||||
|
} |
||||
|
} else { |
||||
|
this.$message.error(res.msg) |
||||
|
} |
||||
|
}, |
||||
|
formDelete() { |
||||
|
this.$confirmFun('确定删除吗?').then(() => { |
||||
|
this.$http.post('/slscbg/delSlscbgInfo', { |
||||
|
id: this.caseId |
||||
|
}).then(() => { |
||||
|
this.$message.success('删除成功') |
||||
|
this.$emit('formDelete', 'del') |
||||
|
}) |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
#operation-record{ |
||||
|
background: #fff; |
||||
|
padding: 10px 20px 50px 20px; |
||||
|
page-break-after:always; |
||||
|
height: 100%; |
||||
|
overflow: auto; |
||||
|
} |
||||
|
.btnBox{ |
||||
|
position: fixed; |
||||
|
z-index: 999; |
||||
|
right: 90px; |
||||
|
} |
||||
|
.check { |
||||
|
cursor: pointer; |
||||
|
user-select: none; |
||||
|
display: flex; |
||||
|
input{ |
||||
|
-webkit-appearance: checkbox !important; |
||||
|
margin-right: 5px; |
||||
|
} |
||||
|
} |
||||
|
.flex{ |
||||
|
display: flex; |
||||
|
} |
||||
|
.a-c{ |
||||
|
align-items: center; |
||||
|
} |
||||
|
.j-b{ |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
.treatAction{ |
||||
|
width: 100%; |
||||
|
margin-top: 10px; |
||||
|
tr td,tr th{ |
||||
|
border: 1px solid #ccc; |
||||
|
padding: 5px; |
||||
|
} |
||||
|
td{ |
||||
|
width: 25%; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
::v-deep .el-input__inner { |
||||
|
border: none; |
||||
|
height: 26px !important; |
||||
|
line-height: 26px !important; |
||||
|
text-align: center; |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
::v-deep .el-input__icon{ |
||||
|
line-height: 26px !important; |
||||
|
} |
||||
|
::v-deep .el-checkbox-group{ |
||||
|
text-align: left; |
||||
|
} |
||||
|
::v-deep .el-input__inner { |
||||
|
border-bottom: 1px solid #ccc; |
||||
|
border-radius: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
::v-deep .el-input__prefix { |
||||
|
display: none; |
||||
|
} |
||||
|
::v-deep .el-checkbox__label{ |
||||
|
font-size: 16px !important; |
||||
|
} |
||||
|
</style> |
Loading…
Reference in new issue