17 changed files with 2604 additions and 725 deletions
@ -0,0 +1,93 @@ |
|||||
|
<template> |
||||
|
<table> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td rowspan="2" style="width: 30%" /> |
||||
|
<td class="table_title">翔安医院</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>个案管理信息表</td> |
||||
|
</tr> |
||||
|
<tr><td colspan="2" style="font-weight: bold">无效联系记录</td></tr> |
||||
|
<tr> |
||||
|
<td colspan="2"> |
||||
|
<el-radio v-model="radio" label="1">拒接</el-radio> |
||||
|
<el-radio v-model="radio" label="2">未接</el-radio> |
||||
|
<el-radio v-model="radio" label="3">空号</el-radio> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'Invalid', |
||||
|
props: { |
||||
|
followId: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
jsonText: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
radio: '0' |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
jsonText(val) { |
||||
|
if (val) { |
||||
|
const data = val && JSON.parse(val) |
||||
|
this.radio = data.radio |
||||
|
} else { |
||||
|
this.radio = '0' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
if (this.jsonText) { |
||||
|
this.radio = this.jsonText && JSON.parse(this.jsonText).radio |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
addOrUpdateHandle() { |
||||
|
const jsonText = JSON.stringify({ |
||||
|
radio: this.radio |
||||
|
}) |
||||
|
const dataForm = { |
||||
|
flag: '7', |
||||
|
name: '无效联系', |
||||
|
patientId: this.patientId, |
||||
|
platform: this.platform, |
||||
|
id: this.followId, |
||||
|
updateTime: this.$moment().format('YYYY-MM-DD HH:mm:ss') |
||||
|
} |
||||
|
const params = { |
||||
|
jsonText: jsonText, |
||||
|
...dataForm |
||||
|
} |
||||
|
return this.$http.post('/case/update', params) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
table{ |
||||
|
width: 100%; |
||||
|
margin-top: 20px; |
||||
|
font-size: 16px; |
||||
|
.table_title{ |
||||
|
font-size: 22px !important; |
||||
|
} |
||||
|
tr td{ |
||||
|
border: 1px solid #ccc; |
||||
|
text-align: center; |
||||
|
padding: 10px 0; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,356 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<table> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td rowspan="2" style="width: 30%" /> |
||||
|
<td class="table_title" colspan="2">翔安医院</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td colspan="2">个案管理信息表</td> |
||||
|
</tr> |
||||
|
<tr><td colspan="3" style="font-weight: bold">门诊随访记录</td></tr> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex">随访日期: |
||||
|
<el-date-picker |
||||
|
v-model="patientData.followDate" |
||||
|
type="date" |
||||
|
/> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex a-c" style="width: 380px"> |
||||
|
主诉:<el-input v-model="patientData.mainSuit" style="flex: 1" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr><td colspan="3"> |
||||
|
<div class="flex a-c"> |
||||
|
诊断: |
||||
|
<div class="flex" style="width: 180px">眼别:<el-input v-model="patientData.eyeLevel" style="flex: 1;margin-right: 15px" /></div> |
||||
|
<div class="flex" style="width: 280px">疾病诊断:<el-input v-model="patientData.diagnose" style="flex: 1;margin-right: 15px" /></div> |
||||
|
</div> |
||||
|
</td></tr> |
||||
|
<!-- 常规检查--> |
||||
|
<tr> |
||||
|
<td colspan="3"><div class="flex">常规检查</div></td> |
||||
|
</tr> |
||||
|
<tr v-for="(check,index) in checks" :key="index" class="content_input"> |
||||
|
<td>{{ check.name }}</td> |
||||
|
<td> |
||||
|
<div v-if="check.OD==='OD'">{{ check.OD }}</div> |
||||
|
<div v-else> |
||||
|
<el-input v-model="check.OD" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div v-if="check.OS==='OS'">{{ check.OS }}</div> |
||||
|
<div v-else> |
||||
|
<el-input v-model="check.OS" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<!-- 裂隙灯检查--> |
||||
|
<tr> |
||||
|
<td colspan="3"><div class="flex">裂隙灯检查</div></td> |
||||
|
</tr> |
||||
|
<tr v-for="(check,index) in slitChecks" :key="index+check.name" class="content_input"> |
||||
|
<td> |
||||
|
<el-checkbox v-if="check.name!=='检查内容'" v-model="check.isSelect">{{ check.name }}</el-checkbox> |
||||
|
<div v-else>{{ check.name }}</div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div v-if="check.OD==='OD'">{{ check.OD }}</div> |
||||
|
<div v-else> |
||||
|
<el-input v-model="check.OD" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div v-if="check.OS==='OS'">{{ check.OS }}</div> |
||||
|
<div v-else> |
||||
|
<el-input v-model="check.OS" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<!-- 诊断措施--> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex">诊断措施: |
||||
|
<div v-for="(item,idx) in diaMeasures" :key="idx+'_'+idx" style="margin-right: 15px"> |
||||
|
<el-input v-model="item.cure" :placeholder="item.placeholder" style="flex: 1;margin-right: 15px" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<!-- 复查--> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex">复查备注(计划)</div> |
||||
|
<div class="flex" style="margin-top: 10px"> |
||||
|
<el-radio v-model="patientData.period" label="week">按计划随访</el-radio> |
||||
|
<el-radio v-model="patientData.period" label="month">临时调整</el-radio> |
||||
|
日期:<el-date-picker v-model="patientData.periodDate" type="date" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'OutFollow', |
||||
|
props: { |
||||
|
patientId: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
platform: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
followId: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
jsonText: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
initData: {}, |
||||
|
patientData: { |
||||
|
followDate: '', |
||||
|
mainSuit: '', |
||||
|
eyeLevel: '', |
||||
|
diagnose: '', |
||||
|
period: '', |
||||
|
periodDate: '' |
||||
|
}, |
||||
|
// 常规检查 |
||||
|
checks: [ |
||||
|
{ |
||||
|
name: '检查内容', |
||||
|
OD: 'OD', |
||||
|
OS: 'OS' |
||||
|
}, |
||||
|
{ |
||||
|
name: '视力', |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '眼压', |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: 'C/D', |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
} |
||||
|
], |
||||
|
slitChecks: [ |
||||
|
{ |
||||
|
name: '检查内容', |
||||
|
OD: 'OD', |
||||
|
OS: 'OS' |
||||
|
}, |
||||
|
{ |
||||
|
name: '结膜/滤过泡', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '角膜', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '中央前房', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '周边前房', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '虹膜', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '瞳孔', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '直径', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '对光反射', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '晶体', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '盘沿', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '神经纤维层', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '动态房角镜', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '静态房角镜', |
||||
|
isSelect: false, |
||||
|
OD: '', |
||||
|
OS: '' |
||||
|
} |
||||
|
], |
||||
|
diaMeasures: [ |
||||
|
{ |
||||
|
placeholder: '降压用药', |
||||
|
cure: '' |
||||
|
}, |
||||
|
{ |
||||
|
placeholder: '手术', |
||||
|
cure: '' |
||||
|
}, |
||||
|
{ |
||||
|
placeholder: '激光', |
||||
|
cure: '' |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
jsonText(val) { |
||||
|
if (val) { |
||||
|
const data = JSON.parse(this.jsonText) |
||||
|
this.patientData = data.patientData |
||||
|
this.checks = data.checks |
||||
|
this.slitChecks = data.slitChecks |
||||
|
this.diaMeasures = data.diaMeasures |
||||
|
} else { |
||||
|
this.patientData = this.initData.patientData |
||||
|
this.checks = this.initData.checks |
||||
|
this.slitChecks = this.initData.slitChecks |
||||
|
this.diaMeasures = this.initData.diaMeasures |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
// 初始化赋空 |
||||
|
const data = { |
||||
|
patientData: this.patientData, |
||||
|
checks: this.checks, |
||||
|
slitChecks: this.slitChecks, |
||||
|
diaMeasures: this.diaMeasures |
||||
|
} |
||||
|
this.initData = JSON.parse(JSON.stringify(data)) |
||||
|
// 赋值 |
||||
|
if (this.jsonText) { |
||||
|
const data = JSON.parse(this.jsonText) |
||||
|
this.patientData = data.patientData |
||||
|
this.checks = data.checks |
||||
|
this.slitChecks = data.slitChecks |
||||
|
this.diaMeasures = data.diaMeasures |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
addOrUpdateHandle() { |
||||
|
const jsonText = JSON.stringify({ |
||||
|
patientData: this.patientData, |
||||
|
checks: this.checks, |
||||
|
slitChecks: this.slitChecks, |
||||
|
diaMeasures: this.diaMeasures |
||||
|
}) |
||||
|
const dataForm = { |
||||
|
id: this.followId, |
||||
|
flag: '7', |
||||
|
name: '门诊随访', |
||||
|
patientId: this.patientId, |
||||
|
platform: this.platform, |
||||
|
updateTime: this.$moment().format('YYYY-MM-DD HH:mm:ss') |
||||
|
} |
||||
|
const params = { |
||||
|
jsonText: jsonText, |
||||
|
...dataForm |
||||
|
} |
||||
|
return this.$http.post('/case/update', params) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.flex{ |
||||
|
display: flex; |
||||
|
} |
||||
|
table{ |
||||
|
width: 100%; |
||||
|
margin-top: 20px; |
||||
|
.table_title{ |
||||
|
font-size: 22px !important; |
||||
|
} |
||||
|
tr td{ |
||||
|
border: 1px solid #ccc; |
||||
|
text-align: center; |
||||
|
padding: 10px; |
||||
|
} |
||||
|
} |
||||
|
::v-deep .el-input__inner { |
||||
|
border: none; |
||||
|
height: 26px !important; |
||||
|
line-height: 26px !important; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
::v-deep .el-input__inner { |
||||
|
border-bottom: 1px solid #ccc; |
||||
|
border-radius: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
::v-deep .el-input__prefix { |
||||
|
display: none; |
||||
|
} |
||||
|
.content_input{ |
||||
|
::v-deep .el-input__inner{ |
||||
|
width: 150px; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,212 @@ |
|||||
|
<template> |
||||
|
<table> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td rowspan="2" style="width: 30%" /> |
||||
|
<td class="table_title" colspan="2">翔安医院</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td colspan="2">个案管理信息表</td> |
||||
|
</tr> |
||||
|
<tr><td colspan="3" style="font-weight: bold">电话随访记录</td></tr> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex a-c"> |
||||
|
<div class="flex a-c"> |
||||
|
随访日期:<el-date-picker |
||||
|
v-model="followData.followDate" |
||||
|
type="date" |
||||
|
/> |
||||
|
</div> |
||||
|
<div class="flex a-c">上次复查注意事项:<el-input v-model="followData.followDesc" style="flex: 1" /></div> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex a-c"> |
||||
|
主诉:<el-input v-model="followData.mainSuit" style="flex: 1" /> |
||||
|
</div></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex a-c"> |
||||
|
诊断:眼别:<el-input v-model="followData.eyeLevel" style="flex: 1;margin-right: 15px" /> |
||||
|
疾病诊断:<el-input v-model="followData.diagnose" style="flex: 1;margin-right: 15px" /> |
||||
|
后缀:<el-input v-model="followData.suffix" style="flex: 1" /> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<!-- 常规检查--> |
||||
|
<tr> |
||||
|
<td colspan="3">常规检查</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>检查内容</td> |
||||
|
<td>OD</td> |
||||
|
<td>OS</td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>视力</td> |
||||
|
<td><el-input v-model="followData.OD.vision" style="flex: 1" /></td> |
||||
|
<td><el-input v-model="followData.OD.pressure" style="flex: 1" /></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td>眼压</td> |
||||
|
<td><el-input v-model="followData.OS.vision" style="flex: 1" /></td> |
||||
|
<td><el-input v-model="followData.OS.pressure" style="flex: 1" /></td> |
||||
|
</tr> |
||||
|
<!-- 处理选择--> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
处理选择: |
||||
|
<el-radio v-model="followData.selection" label="again">继续随访</el-radio> |
||||
|
<el-radio v-model="followData.selection" label="add">加药</el-radio> |
||||
|
<el-radio v-model="followData.selection" label="sub">减药</el-radio> |
||||
|
<el-radio v-model="followData.selection" label="goin">预约入院手术</el-radio> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<!-- 用药--> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex a-c">用药:<el-input v-model="followData.pharmacy" style="flex: 1" /></div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<!-- 备注--> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex a-c">备注: |
||||
|
<el-radio v-model="followData.notes" label="suspicious">可疑进展</el-radio> |
||||
|
<el-radio v-model="followData.notes" label="confirm">确认进展</el-radio> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
<!-- 复查备注--> |
||||
|
<tr> |
||||
|
<td colspan="3"> |
||||
|
<div class="flex a-c">复查备注(计划): |
||||
|
<el-radio v-model="followData.schedule" label="onSchedule">按计划随访</el-radio> |
||||
|
<div style="width: 180px"><el-input v-model="followData.period" style="flex: 1" placeholder="请输入周期" /></div> |
||||
|
<el-radio v-model="followData.periodCircle" label="week">周</el-radio> |
||||
|
<el-radio v-model="followData.periodCircle" label="month">月</el-radio> |
||||
|
</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'PhoneFollow', |
||||
|
props: { |
||||
|
followId: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
}, |
||||
|
jsonText: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
initData: {}, |
||||
|
followData: { |
||||
|
followDate: '', |
||||
|
followDesc: '', |
||||
|
mainSuit: '', |
||||
|
eyeLevel: '', |
||||
|
diagnose: '', // 疾病诊断 |
||||
|
suffix: '', // 后缀 |
||||
|
OD: { |
||||
|
vision: '', |
||||
|
pressure: '' |
||||
|
}, |
||||
|
OS: { |
||||
|
vision: '', |
||||
|
pressure: '' |
||||
|
}, |
||||
|
selection: '', // 处理选择 |
||||
|
pharmacy: '', |
||||
|
notes: '', // 备注 |
||||
|
schedule: '', |
||||
|
period: '', // 周期 |
||||
|
periodCircle: '' // 周期单选 |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
jsonText(val) { |
||||
|
if (val) { |
||||
|
this.followData = JSON.parse(this.jsonText) |
||||
|
} else { |
||||
|
this.followData = this.initData |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
this.initData = JSON.parse(JSON.stringify(this.followData)) |
||||
|
if (this.jsonText) { |
||||
|
this.followData = JSON.parse(this.jsonText) |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
addOrUpdateHandle() { |
||||
|
const jsonText = JSON.stringify({ |
||||
|
...this.followData |
||||
|
}) |
||||
|
const dataForm = { |
||||
|
flag: '7', |
||||
|
name: '电话随访', |
||||
|
patientId: this.patientId, |
||||
|
platform: this.platform, |
||||
|
id: this.followId, |
||||
|
updateTime: this.$moment().format('YYYY-MM-DD HH:mm:ss') |
||||
|
} |
||||
|
const params = { |
||||
|
jsonText: jsonText, |
||||
|
...dataForm |
||||
|
} |
||||
|
return this.$http.post('/case/update', params) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.flex{ |
||||
|
display: flex; |
||||
|
} |
||||
|
.a-c{ |
||||
|
align-items: center; |
||||
|
} |
||||
|
table{ |
||||
|
width: 100%; |
||||
|
margin-top: 20px; |
||||
|
font-size: 16px; |
||||
|
.table_title{ |
||||
|
font-size: 22px !important; |
||||
|
} |
||||
|
tr td{ |
||||
|
border: 1px solid #ccc; |
||||
|
text-align: center; |
||||
|
padding: 10px; |
||||
|
} |
||||
|
} |
||||
|
::v-deep .el-input__inner { |
||||
|
border: none; |
||||
|
height: 26px !important; |
||||
|
line-height: 26px !important; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
::v-deep .el-input__inner { |
||||
|
border-bottom: 1px solid #ccc; |
||||
|
border-radius: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
::v-deep .el-input__prefix { |
||||
|
display: none; |
||||
|
} |
||||
|
</style> |
@ -1,117 +1,118 @@ |
|||||
// system入口
|
// system入口
|
||||
import Vue from 'vue' |
|
||||
import Element from 'element-ui' |
|
||||
|
import Vue from "vue"; |
||||
|
import Element from "element-ui"; |
||||
// import 'lib-flexible/flexible'
|
// import 'lib-flexible/flexible'
|
||||
import App from './App.vue' |
|
||||
import router from './router' |
|
||||
import store from './store' |
|
||||
import http from './utils/request' |
|
||||
import jQuery from 'jquery' |
|
||||
import 'element-ui/lib/theme-chalk/index.css' |
|
||||
import '@/icons' |
|
||||
import '@/assets/scss/aui.scss' |
|
||||
import '@/assets/scss/reset.scss' |
|
||||
import i18n from '@/i18n' |
|
||||
import * as filters from '@/filters' |
|
||||
import renRadioGroup from '@/components/ren-radio-group' |
|
||||
import renDeptTree from '@/components/ren-dept-tree' |
|
||||
import { hasPermission, getDictLabel } from '@/utils' |
|
||||
import cloneDeep from 'lodash/cloneDeep' |
|
||||
import 'xe-utils' |
|
||||
import VXETable from 'vxe-table' |
|
||||
import 'vxe-table/lib/index.css' |
|
||||
|
import App from "./App.vue"; |
||||
|
import router from "./router"; |
||||
|
import store from "./store"; |
||||
|
import http from "./utils/request"; |
||||
|
import jQuery from "jquery"; |
||||
|
import "element-ui/lib/theme-chalk/index.css"; |
||||
|
import "@/icons"; |
||||
|
import "@/assets/scss/aui.scss"; |
||||
|
import "@/assets/scss/reset.scss"; |
||||
|
import i18n from "@/i18n"; |
||||
|
import * as filters from "@/filters"; |
||||
|
import renRadioGroup from "@/components/ren-radio-group"; |
||||
|
import renDeptTree from "@/components/ren-dept-tree"; |
||||
|
import { hasPermission, getDictLabel } from "@/utils"; |
||||
|
import cloneDeep from "lodash/cloneDeep"; |
||||
|
import "xe-utils"; |
||||
|
import VXETable from "vxe-table"; |
||||
|
import "vxe-table/lib/index.css"; |
||||
// import echarts from 'echarts'
|
// import echarts from 'echarts'
|
||||
import * as echarts from 'echarts' |
|
||||
import moment from 'moment' |
|
||||
import VueChatScroll from 'vue-chat-scroll' |
|
||||
|
import * as echarts from "echarts"; |
||||
|
import moment from "moment"; |
||||
|
import VueChatScroll from "vue-chat-scroll"; |
||||
|
import "default-passive-events"; |
||||
|
|
||||
// import jsNSV from '@/utils/js-NSV.js'
|
// import jsNSV from '@/utils/js-NSV.js'
|
||||
|
|
||||
import Base64 from '@/utils/base64.js' |
|
||||
Vue.prototype.$Base64 = Base64 |
|
||||
|
import Base64 from "@/utils/base64.js"; |
||||
|
Vue.prototype.$Base64 = Base64; |
||||
|
|
||||
import Print from 'vue-print-nb' |
|
||||
Vue.use(Print) |
|
||||
|
import Print from "vue-print-nb"; |
||||
|
Vue.use(Print); |
||||
|
|
||||
import { confirm } from '@/utils/confirm' |
|
||||
Vue.prototype.$confirmFun = confirm |
|
||||
|
import { confirm } from "@/utils/confirm"; |
||||
|
Vue.prototype.$confirmFun = confirm; |
||||
|
|
||||
// import VueDragResize from 'vue-drag-resize'
|
// import VueDragResize from 'vue-drag-resize'
|
||||
// Vue.component('vue-drag-resize', VueDragResize)
|
// Vue.component('vue-drag-resize', VueDragResize)
|
||||
|
|
||||
// 裁切工具
|
// 裁切工具
|
||||
import VueCropper from 'vue-cropper' |
|
||||
Vue.use(VueCropper) |
|
||||
|
import VueCropper from "vue-cropper"; |
||||
|
Vue.use(VueCropper); |
||||
|
|
||||
import Recorder from 'js-audio-recorder' |
|
||||
|
import Recorder from "js-audio-recorder"; |
||||
const recorder = new Recorder({ |
const recorder = new Recorder({ |
||||
sampleBits: 16, // 采样位数,支持 8 或 16,默认是16
|
sampleBits: 16, // 采样位数,支持 8 或 16,默认是16
|
||||
sampleRate: 16000, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
|
sampleRate: 16000, // 采样率,支持 11025、16000、22050、24000、44100、48000,根据浏览器默认值,我的chrome是48000
|
||||
numChannels: 1 // 声道,支持 1 或 2, 默认是1
|
|
||||
|
numChannels: 1, // 声道,支持 1 或 2, 默认是1
|
||||
// compiling: false,(0.x版本中生效,1.x增加中) // 是否边录边转换,默认是false
|
// compiling: false,(0.x版本中生效,1.x增加中) // 是否边录边转换,默认是false
|
||||
}) |
|
||||
Vue.prototype.$recorder = recorder |
|
||||
|
}); |
||||
|
Vue.prototype.$recorder = recorder; |
||||
|
|
||||
// 全局监听DOM元素
|
// 全局监听DOM元素
|
||||
import ElementResizeDetectorMaker from 'element-resize-detector' |
|
||||
Vue.prototype.$erd = ElementResizeDetectorMaker() |
|
||||
|
import ElementResizeDetectorMaker from "element-resize-detector"; |
||||
|
Vue.prototype.$erd = ElementResizeDetectorMaker(); |
||||
|
|
||||
import animejs from 'animejs' |
|
||||
Vue.prototype.$anime = animejs |
|
||||
|
import animejs from "animejs"; |
||||
|
Vue.prototype.$anime = animejs; |
||||
|
|
||||
moment.locale('zh-cn') // 设置语言 或 moment.lang('zh-cn');
|
|
||||
|
moment.locale("zh-cn"); // 设置语言 或 moment.lang('zh-cn');
|
||||
|
|
||||
Vue.use(Element, { |
Vue.use(Element, { |
||||
size: 'default', |
|
||||
i18n: (key, value) => i18n.t(key, value) |
|
||||
}) |
|
||||
|
size: "default", |
||||
|
i18n: (key, value) => i18n.t(key, value), |
||||
|
}); |
||||
|
|
||||
Object.keys(filters).forEach(key => { |
|
||||
Vue.filter(key, filters[key]) |
|
||||
}) |
|
||||
|
Object.keys(filters).forEach((key) => { |
||||
|
Vue.filter(key, filters[key]); |
||||
|
}); |
||||
|
|
||||
// 全局组件
|
// 全局组件
|
||||
Vue.use(renRadioGroup) |
|
||||
Vue.use(renDeptTree) |
|
||||
Vue.use(VueChatScroll) |
|
||||
Vue.use(VXETable) |
|
||||
|
Vue.use(renRadioGroup); |
||||
|
Vue.use(renDeptTree); |
||||
|
Vue.use(VueChatScroll); |
||||
|
Vue.use(VXETable); |
||||
|
|
||||
// DICOM
|
// DICOM
|
||||
import cornerstone from 'cornerstone-core' |
|
||||
import cornerstoneMath from 'cornerstone-math' |
|
||||
import cornerstoneTools from 'cornerstone-tools' |
|
||||
import Hammer from 'hammerjs' |
|
||||
import dicomParser from 'dicom-parser' |
|
||||
import cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader' |
|
||||
import cornerstoneWebImageLoader from 'cornerstone-web-image-loader' |
|
||||
|
|
||||
cornerstoneTools.external.cornerstone = cornerstone |
|
||||
cornerstoneTools.external.Hammer = Hammer |
|
||||
cornerstoneTools.external.cornerstoneMath = cornerstoneMath |
|
||||
cornerstoneWADOImageLoader.external.dicomParser = dicomParser |
|
||||
cornerstoneWADOImageLoader.external.cornerstoneMath = cornerstoneMath |
|
||||
cornerstoneWADOImageLoader.external.cornerstone = cornerstone |
|
||||
cornerstoneWebImageLoader.external.cornerstone = cornerstone |
|
||||
cornerstone.registerImageLoader('http', cornerstoneWADOImageLoader.loadImage) |
|
||||
cornerstone.registerImageLoader('https', cornerstoneWADOImageLoader.loadImage) |
|
||||
cornerstone.registerImageLoader('http', cornerstoneWebImageLoader.loadImage) |
|
||||
Vue.prototype.$cornerstone = cornerstone |
|
||||
Vue.prototype.$cornerstoneTools = cornerstoneTools |
|
||||
|
import cornerstone from "cornerstone-core"; |
||||
|
import cornerstoneMath from "cornerstone-math"; |
||||
|
import cornerstoneTools from "cornerstone-tools"; |
||||
|
import Hammer from "hammerjs"; |
||||
|
import dicomParser from "dicom-parser"; |
||||
|
import cornerstoneWADOImageLoader from "cornerstone-wado-image-loader"; |
||||
|
import cornerstoneWebImageLoader from "cornerstone-web-image-loader"; |
||||
|
|
||||
|
cornerstoneTools.external.cornerstone = cornerstone; |
||||
|
cornerstoneTools.external.Hammer = Hammer; |
||||
|
cornerstoneTools.external.cornerstoneMath = cornerstoneMath; |
||||
|
cornerstoneWADOImageLoader.external.dicomParser = dicomParser; |
||||
|
cornerstoneWADOImageLoader.external.cornerstoneMath = cornerstoneMath; |
||||
|
cornerstoneWADOImageLoader.external.cornerstone = cornerstone; |
||||
|
cornerstoneWebImageLoader.external.cornerstone = cornerstone; |
||||
|
cornerstone.registerImageLoader("http", cornerstoneWADOImageLoader.loadImage); |
||||
|
cornerstone.registerImageLoader("https", cornerstoneWADOImageLoader.loadImage); |
||||
|
cornerstone.registerImageLoader("http", cornerstoneWebImageLoader.loadImage); |
||||
|
Vue.prototype.$cornerstone = cornerstone; |
||||
|
Vue.prototype.$cornerstoneTools = cornerstoneTools; |
||||
|
|
||||
// 挂载全局
|
// 挂载全局
|
||||
Vue.prototype.$http = http |
|
||||
Vue.prototype.$ = jQuery |
|
||||
Vue.prototype.$hasPermission = hasPermission |
|
||||
Vue.prototype.$getDictLabel = getDictLabel |
|
||||
Vue.prototype.$moment = moment |
|
||||
Vue.prototype.$echarts = echarts |
|
||||
|
|
||||
Vue.config.productionTip = false |
|
||||
|
Vue.prototype.$http = http; |
||||
|
Vue.prototype.$ = jQuery; |
||||
|
Vue.prototype.$hasPermission = hasPermission; |
||||
|
Vue.prototype.$getDictLabel = getDictLabel; |
||||
|
Vue.prototype.$moment = moment; |
||||
|
Vue.prototype.$echarts = echarts; |
||||
|
|
||||
|
Vue.config.productionTip = false; |
||||
// 保存整站vuex本地储存初始状态
|
// 保存整站vuex本地储存初始状态
|
||||
window.SITE_CONFIG.storeState = cloneDeep(store.state) |
|
||||
|
window.SITE_CONFIG.storeState = cloneDeep(store.state); |
||||
new Vue({ |
new Vue({ |
||||
i18n, |
i18n, |
||||
router, |
router, |
||||
store, |
store, |
||||
render: h => h(App) |
|
||||
}).$mount('#app') |
|
||||
|
render: (h) => h(App), |
||||
|
}).$mount("#app"); |
||||
|
@ -0,0 +1,341 @@ |
|||||
|
<template> |
||||
|
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always"> |
||||
|
<div class="btnBox"> |
||||
|
<el-button v-print="'#threeFunc'" size="small">打印</el-button> |
||||
|
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> |
||||
|
</div> |
||||
|
<div id="threeFunc" style="width: 840px;padding-right: 8px"> |
||||
|
<p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;"> |
||||
|
眼科激光手术患者知情同意书 |
||||
|
</p> |
||||
|
<!--患者信息--> |
||||
|
<div class="flex"> |
||||
|
<div class="flex a-c item">姓名:<el-input v-model="patient.patientName" style="flex: 1" placeholder="" /></div> |
||||
|
<div class="flex a-c item">年龄:<el-input v-model="patient.age" style="flex: 1" placeholder="" />岁</div> |
||||
|
<div class="flex a-c item">性别:<el-input v-model="patient.sex" style="flex: 1" placeholder="" /></div> |
||||
|
<div class="flex a-c item">眼别:<el-input v-model="patient.eyeLevel" style="flex: 1" placeholder="" /></div> |
||||
|
</div> |
||||
|
<!--术前判断--> |
||||
|
<div> |
||||
|
<div class="formTitle"> |
||||
|
一、术前诊断: |
||||
|
</div> |
||||
|
<div v-for="(item, index) in judgement" :key="index" class="judgeItem"> |
||||
|
{{ `${index+1}. ${item.name}:` }} |
||||
|
<el-input v-if="item.isEdit" v-model="item.remark" style="flex: 1" /> |
||||
|
<template v-else> |
||||
|
<div v-for="(judge,idx) in item.symptom" :key="idx" class="flex a-c"> |
||||
|
<el-checkbox v-model="judge.isSelected" class="checkboxItem" /> |
||||
|
{{ judge.title }} |
||||
|
<el-input v-if="judge.isEdit" v-model="judge.remark" style="flex: 1" /> |
||||
|
</div> |
||||
|
</template> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!--麻醉方式选择--> |
||||
|
<div> |
||||
|
<div class="formTitle">二、麻醉方式选择:</div> |
||||
|
<div class="flex"> |
||||
|
<div v-for="(sel,i) in modeSelect" :key="i" style="margin-right: 30px"><el-checkbox v-model="sel.isSelected" class="checkboxItem" />{{ sel.name }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!--拟行激光术名称--> |
||||
|
<div> |
||||
|
<div class="formTitle">三、拟行激光术名称:</div> |
||||
|
<div class="proposed"> |
||||
|
<div v-for="(item,i) in proposedName" :key="i" style="margin-right: 35px"><el-checkbox v-model="item.isSelected" class="checkboxItem" /> |
||||
|
{{ item.name }} |
||||
|
<span v-if="item.area">( |
||||
|
<span v-for="(area,index) in item.area" :key="`${index}_${i}`" class="areaItem"><el-checkbox v-model="area.isSelected" class="checkboxItem" />{{ area.name }}</span> |
||||
|
)</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 术中可能发生的并发症及处理--> |
||||
|
<div> |
||||
|
<div class="formTitle">四、术中可能发生的并发症及处理:</div> |
||||
|
<div v-for="(item,index) in intraoperation" :key="index"> |
||||
|
{{ `${index+1}. ${item}` }} |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 术后视力预后--> |
||||
|
<div> |
||||
|
<div class="formTitle">五、术后视力预后</div> |
||||
|
<div>取决于眼内情况,若眼底条件太差或者出现并发症,激光治疗后视力可能恢复不良。</div> |
||||
|
</div> |
||||
|
<!-- 术后可能发生下列并发症--> |
||||
|
<div> |
||||
|
<div class="formTitle">六、术后可能发生下列并发症</div> |
||||
|
<div class="proposed"> |
||||
|
<div v-for="(post,idx) in postoperative" :key="idx" class="postItem" style="margin-right: 30px"> |
||||
|
{{ `${idx+1},${post}` }} |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="btnBox"> |
||||
|
<div> |
||||
|
<div class="flex a-c">主诊/谈话医生签名:<el-input v-model="doctor.name" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">日期:<el-input v-model="doctor.dateTime" style="flex: 1" /></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 术前患者--> |
||||
|
<div> |
||||
|
<div class="formTitle">七、术前患者(或家属、单位意见):</div> |
||||
|
<div class="proposed"> |
||||
|
医生已和我详细讨论了治疗计划、手术方式、治疗目的以及术后可能的效果。我已详细阅读以上内容,并完全理解和接受手术可能出现的风险和并发症,我同意医生的治疗并接受手术。 |
||||
|
</div> |
||||
|
<div class="btnBox"> |
||||
|
<div> |
||||
|
<div class="flex a-c">患者或直系亲属签名:<el-input v-model="patientInfo.name" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">日期:<el-input v-model="patientInfo.dateTime" style="flex: 1" /></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'InformedConsent', |
||||
|
data() { |
||||
|
return { |
||||
|
// 患者信息 |
||||
|
patient: { |
||||
|
patientName: '', |
||||
|
age: '', |
||||
|
sex: '', |
||||
|
eyeLevel: '' |
||||
|
}, |
||||
|
// 主诊医生 |
||||
|
doctor: { |
||||
|
name: '', |
||||
|
dateTime: '' |
||||
|
}, |
||||
|
patientInfo: { |
||||
|
name: '', |
||||
|
dateTime: '' |
||||
|
}, |
||||
|
// 术前判断 |
||||
|
judgement: [ |
||||
|
{ |
||||
|
name: '白内障', |
||||
|
symptom: [{ |
||||
|
title: '后发性', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '其他', |
||||
|
isSelected: false, |
||||
|
isEdit: true, |
||||
|
remark: '' |
||||
|
}] |
||||
|
}, { |
||||
|
name: '青光眼', |
||||
|
symptom: [{ |
||||
|
title: '闭角型', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '开角型', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '其他', |
||||
|
isSelected: false, |
||||
|
remark: '', |
||||
|
isEdit: true |
||||
|
}] |
||||
|
}, { |
||||
|
name: '眼底病', |
||||
|
symptom: [{ |
||||
|
title: '糖尿病视网膜病变', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '视网膜裂孔', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '视网膜变性', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '黄斑部疾病', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '其他', |
||||
|
isSelected: false, |
||||
|
isEdit: true, |
||||
|
remark: '' |
||||
|
}] |
||||
|
}, { |
||||
|
name: '视网膜血管性病变', |
||||
|
symptom: [{ |
||||
|
title: '视网膜静脉阻塞(中央)', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '视网膜静脉阻塞(分支)', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
title: '视网膜静脉周围炎', |
||||
|
isSelected: false |
||||
|
}] |
||||
|
}, { |
||||
|
name: "Coat's 病", |
||||
|
symptom: [{ |
||||
|
title: '', |
||||
|
isSelected: false |
||||
|
}] |
||||
|
}, { |
||||
|
name: '其他', |
||||
|
isEdit: true, |
||||
|
remark: '', |
||||
|
symptom: [] |
||||
|
} |
||||
|
], |
||||
|
// 麻醉方式选择 |
||||
|
modeSelect: [ |
||||
|
{ |
||||
|
name: '表麻', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '局麻', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '局麻+镇静', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '基础麻醉', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '其他', |
||||
|
isSelected: false, |
||||
|
isEdit: true, |
||||
|
remark: '' |
||||
|
} |
||||
|
], |
||||
|
// 拟行激光术名称 |
||||
|
proposedName: [ |
||||
|
{ |
||||
|
name: '激光后囊切开术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '激光前囊切开术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '激光周边虹膜切除', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '激光房角成形术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '激光睫状体光凝术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '激光断线', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '视网膜光凝术', |
||||
|
isSelected: false, |
||||
|
area: [{ |
||||
|
name: '局部', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '全', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '黄斑区', |
||||
|
isSelected: false |
||||
|
}] |
||||
|
}, { |
||||
|
name: '激光瞳孔成形术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '激光瞳孔残膜切开术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '激光虹膜黏连剖除术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '玻璃体条索切开术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '激光倒睫术', |
||||
|
isSelected: false |
||||
|
}, { |
||||
|
name: '其他', |
||||
|
isSelected: false |
||||
|
} |
||||
|
], |
||||
|
// 术中 |
||||
|
intraoperation: ['麻醉意外:需进行抢救或暂停手术', '出血:需要压迫止血,推迟或暂停手术', '其他无法预计的并发症', '术中可能会根据具体情况变更手术方式'], |
||||
|
postoperative: ['暂时性眼压升高', '损伤人工晶体', '角膜内皮损伤', '虹膜炎症反应', '玻璃体前界膜破裂', '视功能损伤', '渗出性视网膜脱离', '黄斑水肿', '脉络膜脱离', '虹膜(视网膜、脉络膜)出血', '其他'] |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
handleSaveTable() { |
||||
|
const data = { |
||||
|
patient: this.patient, |
||||
|
doctor: this.doctor, |
||||
|
patientInfo: this.patientInfo, |
||||
|
judgement: this.judgement, |
||||
|
modeSelect: this.modeSelect, |
||||
|
proposedName: this.proposedName |
||||
|
} |
||||
|
console.log(data) |
||||
|
this.$emit('save', data) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.flex{ |
||||
|
display: flex; |
||||
|
} |
||||
|
.a-c{ |
||||
|
align-items: center; |
||||
|
} |
||||
|
.item{ |
||||
|
&:not(:last-child){ |
||||
|
margin-right: 15px; |
||||
|
} |
||||
|
} |
||||
|
.formTitle{ |
||||
|
font-weight: bold; |
||||
|
margin-top: 10px; |
||||
|
} |
||||
|
.areaItem{ |
||||
|
&:not(:last-child){ |
||||
|
margin-right: 10px; |
||||
|
} |
||||
|
} |
||||
|
.judgeItem{ |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
div{ |
||||
|
margin: 0 5px; |
||||
|
} |
||||
|
} |
||||
|
.checkboxItem{ |
||||
|
margin-right: 5px; |
||||
|
} |
||||
|
.proposed{ |
||||
|
display: flex; |
||||
|
flex-wrap: wrap; |
||||
|
} |
||||
|
.btnBox{ |
||||
|
display: flex; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
::v-deep .el-input__inner { |
||||
|
border: none; |
||||
|
height: 26px !important; |
||||
|
line-height: 26px !important; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
::v-deep .el-input__inner { |
||||
|
border-bottom: 1px solid #ccc; |
||||
|
border-radius: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
::v-deep .el-input__prefix { |
||||
|
display: none; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,609 @@ |
|||||
|
<template> |
||||
|
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always"> |
||||
|
<div class="btnBox"> |
||||
|
<el-button v-print="'#threeFunc'" size="small">打印</el-button> |
||||
|
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> |
||||
|
</div> |
||||
|
<div id="threeFunc" style="width: 840px;padding-right: 8px"> |
||||
|
<p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;"> |
||||
|
青少年儿童屈光发育档案 |
||||
|
</p> |
||||
|
<div class="operation-record-table"> |
||||
|
<el-table :data="headData" :span-method="headSpanMethod" border style="width: 820px; margin-top: 20px"> |
||||
|
<el-table-column label="" width="" align="center" :resizable="false"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span>{{ scope.row.name }}</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="" width="" :resizable="false" prop="type"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="scope.row.name == '姓名'"> |
||||
|
<div class="width-100 center"> |
||||
|
<el-input v-model="scope.row.patientName" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '身高'"> |
||||
|
<div class="width-100 center"> |
||||
|
<el-input v-model="scope.row.height" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '是否戴镜'"> |
||||
|
<div class="width-100 center"> |
||||
|
<el-input v-model="scope.row.isMirror" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="" width="" :resizable="false"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="scope.row.name == '姓名'"> |
||||
|
<div class="width-100 center"> |
||||
|
性别 |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '身高'"> |
||||
|
<div class="width-100 center"> |
||||
|
体重 |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '是否戴镜'"> |
||||
|
<div class="width-100 center"> |
||||
|
戴镜习惯 |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="" width="" :resizable="false"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="scope.row.name == '姓名'"> |
||||
|
<div class="width-100 center"> |
||||
|
<el-input v-model="scope.row.sex" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '身高'"> |
||||
|
<div class="width-100 center"> |
||||
|
<el-input v-model="scope.row.weight" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '是否戴镜'"> |
||||
|
<div class="width-100 center"> |
||||
|
<el-input v-model="scope.row.mirrorHabit" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="" width="" :resizable="false"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="scope.row.name == '姓名'"> |
||||
|
<div class="width-100 center"> |
||||
|
出生日期 |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '身高'"> |
||||
|
<div class="width-100 center"> |
||||
|
何时发现视力下降 |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="" width="" :resizable="false"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="scope.row.name == '姓名'"> |
||||
|
<div class="width-100 center"> |
||||
|
<el-input v-model="scope.row.birthday" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '身高'"> |
||||
|
<div class="width-100 center"> |
||||
|
<el-input v-model="scope.row.time" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
<el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 820px"> |
||||
|
<el-table-column label="" width="" align="center" :resizable="false"> |
||||
|
<template slot-scope="scope"> |
||||
|
<span>{{ scope.row.name }}</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="" width="" :resizable="false" prop="type"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="scope.row.name == '戴镜类型'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-checkbox-group v-model="scope.row.mirrorType"> |
||||
|
<el-checkbox label="框架" /> |
||||
|
<el-checkbox label="OK镜" /> |
||||
|
<el-checkbox label="RGP" /> |
||||
|
<el-checkbox label="软镜" /> |
||||
|
</el-checkbox-group> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '旧镜参数'"> |
||||
|
<div class="width-120 center"> |
||||
|
OD:<el-input v-model="scope.row.od" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '父母是否近视'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-checkbox-group v-model="scope.row.shortsighte"> |
||||
|
<el-checkbox label="父亲" /> |
||||
|
<el-checkbox label="母亲" /> |
||||
|
<el-checkbox label="父亲和母亲" /> |
||||
|
<el-checkbox label="均无" /> |
||||
|
</el-checkbox-group> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '户外活动时间'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-checkbox-group v-model="scope.row.outTime"> |
||||
|
<el-checkbox label="<1h" /> |
||||
|
<el-checkbox label="1h-2h" /> |
||||
|
<el-checkbox label=">2h" /> |
||||
|
</el-checkbox-group> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '备注'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.note" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '项目'"> |
||||
|
<div class="width-180 center"> |
||||
|
OD |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '裸眼/旧镜视力'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.od" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '是否散瞳'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-checkbox-group v-model="scope.row.mydriasis"> |
||||
|
<el-checkbox label="未散瞳" /> |
||||
|
<el-checkbox label="美多丽" /> |
||||
|
<el-checkbox label="阿托品" /> |
||||
|
<el-checkbox label="其他" /> |
||||
|
</el-checkbox-group> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '主觉验光'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.od" placeholder="" style="width: 100px" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '眼位'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.od" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '眼压/mmHg'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.od" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '角膜曲率/D'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.od" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '角膜厚度/μm'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.od" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '处方'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.od" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '建议'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-checkbox-group v-model="scope.row.suggest"> |
||||
|
<el-checkbox label="框架" /> |
||||
|
<el-checkbox label="OK镜" /> |
||||
|
<el-checkbox label="RGP" /> |
||||
|
<el-checkbox label="软镜" /> |
||||
|
<el-checkbox label="其他" /> |
||||
|
</el-checkbox-group> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '眼轴/眼底照/地形图'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.type" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
<el-table-column label="" width="" :resizable="false"> |
||||
|
<template slot-scope="scope"> |
||||
|
<div v-if="scope.row.name == '旧镜参数'"> |
||||
|
<div class="width-120 center"> |
||||
|
OS:<el-input v-model="scope.row.os" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '项目'"> |
||||
|
<div class="width-180 center"> |
||||
|
OS |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '裸眼/旧镜视力'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.os" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '主觉验光'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.os" placeholder="" style="width: 100px" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '眼位'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.os" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '眼压/mmHg'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.os" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '角膜曲率/D'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.os" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '角膜厚度/μm'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.os" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div v-if="scope.row.name == '处方'"> |
||||
|
<div class="width-180 center"> |
||||
|
<el-input v-model="scope.row.os" placeholder="" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
props: { |
||||
|
archiveCaseCRFItem: { |
||||
|
type: Object, |
||||
|
default: () => { } |
||||
|
}, |
||||
|
formContent: { |
||||
|
type: Object, |
||||
|
default: () => { } |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
dataForm: { |
||||
|
yghcValue: '', |
||||
|
operationListValueOD: [] |
||||
|
}, |
||||
|
headData: [ |
||||
|
{ |
||||
|
name: '个人基础信息', |
||||
|
type: '' |
||||
|
}, |
||||
|
{ |
||||
|
name: '姓名', |
||||
|
patientName: '', |
||||
|
sex: '', |
||||
|
birthday: '', |
||||
|
type: '' |
||||
|
}, { |
||||
|
name: '身高', |
||||
|
height: '', |
||||
|
weight: '', |
||||
|
time: '' |
||||
|
}, { |
||||
|
name: '是否戴镜', |
||||
|
isMirror: '', |
||||
|
mirrorHabit: '', |
||||
|
type: '' |
||||
|
}], |
||||
|
tableData: [ |
||||
|
{ |
||||
|
name: '戴镜类型', |
||||
|
mirrorType: [] |
||||
|
}, |
||||
|
{ |
||||
|
name: '旧镜参数', |
||||
|
od: '', |
||||
|
os: '', |
||||
|
type: '' |
||||
|
}, { |
||||
|
name: '父母是否近视', |
||||
|
shortsighte: [] |
||||
|
}, { |
||||
|
name: '户外活动时间', |
||||
|
outTime: [], |
||||
|
type: '' |
||||
|
}, { |
||||
|
name: '备注', |
||||
|
note: '' |
||||
|
}, { |
||||
|
name: '综合检查信息', |
||||
|
type: '1' |
||||
|
}, { |
||||
|
name: '项目' |
||||
|
}, { |
||||
|
name: '裸眼/旧镜视力', |
||||
|
od: '', |
||||
|
os: '' |
||||
|
}, { |
||||
|
name: '是否散瞳', |
||||
|
mydriasis: [] |
||||
|
}, { |
||||
|
name: '主觉验光', |
||||
|
od: '', |
||||
|
os: '', |
||||
|
vaod: '', |
||||
|
vaos: '', |
||||
|
type: '2' |
||||
|
}, { |
||||
|
name: '眼位', |
||||
|
od: '', |
||||
|
os: '', |
||||
|
type: '' |
||||
|
}, { |
||||
|
name: '眼压/mmHg', |
||||
|
od: '', |
||||
|
os: '' |
||||
|
}, { |
||||
|
name: '角膜曲率/D', |
||||
|
od: '', |
||||
|
os: '' |
||||
|
}, { |
||||
|
name: '角膜厚度/μm', |
||||
|
od: '', |
||||
|
os: '' |
||||
|
}, { |
||||
|
name: '处方', |
||||
|
od: '', |
||||
|
os: '' |
||||
|
}, { |
||||
|
name: '建议', |
||||
|
suggest: [] |
||||
|
}, { |
||||
|
name: '眼轴/眼底照/地形图', |
||||
|
type: '' |
||||
|
}] |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
operationRecord: { |
||||
|
get() { |
||||
|
return this.$store.getters.operationRecord |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
operationRecord: { |
||||
|
handler(value) { |
||||
|
console.log(value) |
||||
|
}, |
||||
|
deep: true, |
||||
|
immediate: true |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
// this.printPage('threeFunc') |
||||
|
}, |
||||
|
methods: { |
||||
|
setData() { |
||||
|
this.headData = this.formContent.a |
||||
|
this.tableData = this.formContent.b |
||||
|
}, |
||||
|
// 签名 |
||||
|
singHandle(text) { |
||||
|
const value = { |
||||
|
text: text, |
||||
|
pageName: 'operationRecord' |
||||
|
} |
||||
|
this.$store.commit('beginSign', value) |
||||
|
}, |
||||
|
objectSpanMethod({ row, column, rowIndex, columnIndex }) { |
||||
|
if (columnIndex === 0) { |
||||
|
if (rowIndex === 5) { |
||||
|
return { |
||||
|
rowspan: 1, |
||||
|
colspan: 3 |
||||
|
} |
||||
|
} |
||||
|
} else if (columnIndex === 1) { |
||||
|
if (rowIndex === 0 || rowIndex === 2 || rowIndex === 3 || rowIndex === 4 || rowIndex === 8 || rowIndex === 15 || rowIndex === 16) { |
||||
|
return { |
||||
|
rowspan: 1, |
||||
|
colspan: 2 |
||||
|
} |
||||
|
} else if (rowIndex === 5) { |
||||
|
return { |
||||
|
rowspan: 0, |
||||
|
colspan: 0 |
||||
|
} |
||||
|
} |
||||
|
} else if (columnIndex === 2) { |
||||
|
if (rowIndex === 0 || rowIndex === 2 || rowIndex === 3 || rowIndex === 4 || rowIndex === 5 || rowIndex === 8 || rowIndex === 15 || rowIndex === 16) { |
||||
|
return { |
||||
|
rowspan: 0, |
||||
|
colspan: 0 |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
headSpanMethod({ row, column, rowIndex, columnIndex }) { |
||||
|
if (columnIndex === 0) { |
||||
|
if (rowIndex === 0) { |
||||
|
return { |
||||
|
rowspan: 1, |
||||
|
colspan: 6 |
||||
|
} |
||||
|
} |
||||
|
} else if (columnIndex === 1 || columnIndex === 3) { |
||||
|
if (rowIndex === 3) { |
||||
|
return { |
||||
|
rowspan: 1, |
||||
|
colspan: 2 |
||||
|
} |
||||
|
} |
||||
|
} else if (columnIndex === 1 || columnIndex === 2 || columnIndex === 3 || columnIndex === 4 || columnIndex === 5) { |
||||
|
if (rowIndex === 0) { |
||||
|
return { |
||||
|
rowspan: 0, |
||||
|
colspan: 0 |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
handlePrint() { |
||||
|
this.printPage('threeFunc') |
||||
|
}, |
||||
|
handleSaveTable() { |
||||
|
const data = { |
||||
|
a: this.headData, |
||||
|
b: this.tableData |
||||
|
} |
||||
|
this.$emit('save', data) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
|
||||
|
#operation-record { |
||||
|
//height: 93%; |
||||
|
// overflow: auto; |
||||
|
.btnBox{ |
||||
|
display: flex; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
.el-table--border{ |
||||
|
border-right: 1px solid #EBEEF5; |
||||
|
} |
||||
|
.operation-record-table { |
||||
|
//width: 100%; |
||||
|
width: 840px !important; |
||||
|
padding-right: 8px; |
||||
|
.operation-text { |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
.text { |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
.sign { |
||||
|
cursor: pointer; |
||||
|
color: #46a1ff; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
} |
||||
|
.center { |
||||
|
text-align: center; |
||||
|
} |
||||
|
.left { |
||||
|
text-align: left; |
||||
|
} |
||||
|
|
||||
|
.width-50 { |
||||
|
.el-input { |
||||
|
width: 50px; |
||||
|
} |
||||
|
} |
||||
|
.width-70 { |
||||
|
.el-input { |
||||
|
width: 70px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.width-100 { |
||||
|
.el-input { |
||||
|
width: 100px; |
||||
|
} |
||||
|
} |
||||
|
.width-120 { |
||||
|
.el-input { |
||||
|
width: 120px; |
||||
|
} |
||||
|
} |
||||
|
.width-180 { |
||||
|
.el-input { |
||||
|
width: 180px; |
||||
|
} |
||||
|
} |
||||
|
.el-input__inner { |
||||
|
border: none; |
||||
|
height: 26px !important; |
||||
|
line-height: 26px !important; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.el-input__inner { |
||||
|
border-bottom: 1px solid #ccc; |
||||
|
border-radius: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
.el-input__prefix { |
||||
|
display: none; |
||||
|
} |
||||
|
//.el-date-editor.el-input, |
||||
|
//.el-date-editor.el-input__inner { |
||||
|
// width: 140px; |
||||
|
//} |
||||
|
//.el-input__suffix { |
||||
|
// top: -7px; |
||||
|
//} |
||||
|
//.el-checkbox__input.is-checked + .el-checkbox__label { |
||||
|
// color: #606266; |
||||
|
//} |
||||
|
//.el-checkbox__input.is-checked .el-checkbox__inner, |
||||
|
//.el-checkbox__input.is-indeterminate .el-checkbox__inner { |
||||
|
// background: #767676; |
||||
|
// border-color: #767676; |
||||
|
//} |
||||
|
//.el-checkbox__inner:hover, |
||||
|
//.el-checkbox__inner { |
||||
|
// border-color: #767676; |
||||
|
//} |
||||
|
//.el-radio__input.is-checked + .el-radio__label { |
||||
|
// color: #606266; |
||||
|
//} |
||||
|
//.el-radio__input.is-checked .el-radio__inner { |
||||
|
// background: #767676; |
||||
|
// border-color: #767676; |
||||
|
//} |
||||
|
//.el-radio { |
||||
|
// margin-right: 8px; |
||||
|
// display: block; |
||||
|
//} |
||||
|
//.el-radio__inner { |
||||
|
// border: 1px solid #767676 !important; |
||||
|
//} |
||||
|
//.el-radio__inner:hover { |
||||
|
// border-color: #767676; |
||||
|
//} |
||||
|
.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell { |
||||
|
background: none !important; |
||||
|
} |
||||
|
.has-gutter { |
||||
|
display: none; |
||||
|
.cell { |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
.el-table__cell { |
||||
|
background: #ced4d9; |
||||
|
} |
||||
|
} |
||||
|
.el-table__header-wrapper{ |
||||
|
display: none; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,253 @@ |
|||||
|
<template> |
||||
|
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always"> |
||||
|
<div class="btnBox"> |
||||
|
<el-button v-print="'#threeFunc'" size="small">打印</el-button> |
||||
|
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button> |
||||
|
</div> |
||||
|
<div id="threeFunc" style="width: 840px;padding-right: 8px"> |
||||
|
<p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;"> |
||||
|
眼科激光手术患者知情同意书 |
||||
|
</p> |
||||
|
<!--患者信息--> |
||||
|
<div> |
||||
|
<div class="flex"> |
||||
|
<div class="flex a-c item">姓名:<el-input v-model="patient.patientName" style="flex: 1" /></div> |
||||
|
<div class="flex a-c item">年龄:<el-input v-model="patient.age" style="flex: 1" />岁</div> |
||||
|
<div class="flex a-c item">性别:<el-input v-model="patient.sex" style="flex: 1" /></div> |
||||
|
<div class="flex a-c item">病例号:<el-input v-model="patient.caseNo" style="flex: 1" /></div> |
||||
|
</div> |
||||
|
<div class="flex"> |
||||
|
<div class="flex a-c">联系电话:<el-input v-model="patient.phone" style="flex: 1" /></div> |
||||
|
<div class="flex a-c item">家庭住址:<el-input v-model="patient.address" style="flex: 1" /></div> |
||||
|
</div> |
||||
|
<div class="flex a-c item">诊断:<el-input v-model="patient.diagnose" style="flex: 1" /></div> |
||||
|
</div> |
||||
|
<!-- 治疗前--> |
||||
|
<div class="subTitle">治疗前</div> |
||||
|
<table class="treatAction"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th colspan="2">OD</th> |
||||
|
<th colspan="2">OS</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody> |
||||
|
<tr> |
||||
|
<td> |
||||
|
<div class="flex a-c">{{ beforeTreat.OD.eye.name }}:<el-input v-model="beforeTreat.OD.eye.level" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">{{ beforeTreat.OD.illness.name }}:<el-input v-model="beforeTreat.OD.illness.desc" style="flex: 1" /></div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div class="descImg">示意图</div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div class="flex a-c">{{ beforeTreat.OS.eye.name }}:<el-input v-model="beforeTreat.OS.eye.level" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">{{ beforeTreat.OS.illness.name }}:<el-input v-model="beforeTreat.OS.illness.desc" style="flex: 1" /></div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div class="descImg">示意图</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
<!-- 激光治疗--> |
||||
|
<div class="subTitle">激光治疗</div> |
||||
|
<table class="treatAction"> |
||||
|
<thead> |
||||
|
<tr> |
||||
|
<th colspan="2">OD</th> |
||||
|
<th colspan="2">OS</th> |
||||
|
</tr> |
||||
|
</thead> |
||||
|
<tbody> |
||||
|
<tr v-for="(item,index) in treatData" :key="index"> |
||||
|
<td> |
||||
|
<div class="flex a-c">日期:<el-input v-model="item.OD.data" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">次数:<el-input v-model="item.OD.order" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">视力:<el-input v-model="item.OD.vision" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">光斑大小:<el-input v-model="item.OD.flareSize" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">功率:<el-input v-model="item.OD.power" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">点数:<el-input v-model="item.OD.count" style="flex: 1" /></div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div class="descImg">示意图</div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div class="flex a-c">日期:<el-input v-model="item.OS.data" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">次数:<el-input v-model="item.OS.order" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">视力:<el-input v-model="item.OS.vision" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">光斑大小:<el-input v-model="item.OS.flareSize" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">功率:<el-input v-model="item.OS.power" style="flex: 1" /></div> |
||||
|
<div class="flex a-c">点数:<el-input v-model="item.OS.count" style="flex: 1" /></div> |
||||
|
</td> |
||||
|
<td> |
||||
|
<div class="descImg">示意图</div> |
||||
|
</td> |
||||
|
</tr> |
||||
|
</tbody> |
||||
|
</table> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'LaserSurgery', |
||||
|
data() { |
||||
|
return { |
||||
|
// 患者信息 |
||||
|
patient: { |
||||
|
patientName: '', |
||||
|
age: '', |
||||
|
sex: '', |
||||
|
caseNo: '', |
||||
|
phone: '', |
||||
|
address: '', |
||||
|
diagnose: '' |
||||
|
}, |
||||
|
beforeTreat: { |
||||
|
OD: { |
||||
|
eye: { |
||||
|
name: '视力1', |
||||
|
level: '' |
||||
|
}, |
||||
|
illness: { |
||||
|
name: '疾病分期', |
||||
|
desc: '' |
||||
|
} |
||||
|
}, |
||||
|
OS: { |
||||
|
eye: { |
||||
|
name: '视力2', |
||||
|
level: '' |
||||
|
}, |
||||
|
illness: { |
||||
|
name: '疾病分期', |
||||
|
desc: '' |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
treatData: [ |
||||
|
{ |
||||
|
OD: { |
||||
|
date: '', |
||||
|
order: '', |
||||
|
vision: '', |
||||
|
flareSize: '', |
||||
|
power: '', |
||||
|
count: '' |
||||
|
}, |
||||
|
OS: { |
||||
|
date: '', |
||||
|
order: '', |
||||
|
vision: '', |
||||
|
flareSize: '', |
||||
|
power: '', |
||||
|
count: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
OD: { |
||||
|
date: '', |
||||
|
order: '', |
||||
|
vision: '', |
||||
|
flareSize: '', |
||||
|
power: '', |
||||
|
count: '' |
||||
|
}, |
||||
|
OS: { |
||||
|
date: '', |
||||
|
order: '', |
||||
|
vision: '', |
||||
|
flareSize: '', |
||||
|
power: '', |
||||
|
count: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
OD: { |
||||
|
date: '', |
||||
|
order: '', |
||||
|
vision: '', |
||||
|
flareSize: '', |
||||
|
power: '', |
||||
|
count: '' |
||||
|
}, |
||||
|
OS: { |
||||
|
date: '', |
||||
|
order: '', |
||||
|
vision: '', |
||||
|
flareSize: '', |
||||
|
power: '', |
||||
|
count: '' |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
handleSaveTable() { |
||||
|
const data = { |
||||
|
treat: this.treatData, |
||||
|
beforeTreat: this.beforeTreat |
||||
|
} |
||||
|
// console.log(data) |
||||
|
this.$emit('save', data) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.flex{ |
||||
|
display: flex; |
||||
|
} |
||||
|
.a-c{ |
||||
|
align-items: center; |
||||
|
} |
||||
|
.item{ |
||||
|
flex: 1; |
||||
|
&:not(:last-child){ |
||||
|
margin-right: 15px; |
||||
|
} |
||||
|
} |
||||
|
.subTitle{ |
||||
|
text-align: center; |
||||
|
font-size: 16px; |
||||
|
font-weight: 500; |
||||
|
margin-top: 30px; |
||||
|
} |
||||
|
.descImg{ |
||||
|
font-size: 12px; |
||||
|
height: 140px; |
||||
|
} |
||||
|
.treatAction{ |
||||
|
width: 100%; |
||||
|
tr td,tr th{ |
||||
|
border: 1px solid #ccc; |
||||
|
padding: 5px; |
||||
|
} |
||||
|
td{ |
||||
|
width: 25%; |
||||
|
} |
||||
|
} |
||||
|
.btnBox{ |
||||
|
display: flex; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
::v-deep .el-input__inner { |
||||
|
border: none; |
||||
|
height: 26px !important; |
||||
|
line-height: 26px !important; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
::v-deep .el-input__inner { |
||||
|
border-bottom: 1px solid #ccc; |
||||
|
border-radius: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
::v-deep .el-input__prefix { |
||||
|
display: none; |
||||
|
} |
||||
|
</style> |
Loading…
Reference in new issue