Browse Source

门诊病历相关表单功能完善

360view
bianyaqi 2 years ago
parent
commit
9f82a588ad
  1. 303
      src/components/360View/medicalRecord/index.vue
  2. 4
      src/components/360View/medicalRecord/outPatientRecord/index.vue
  3. 197
      src/components/360View/medicalRecord/outPatientRecord/leftFormList.vue
  4. 350
      src/page-subspecialty/views/modules/formList/InformedConsent.vue
  5. 609
      src/page-subspecialty/views/modules/formList/deveopmentFIle.vue
  6. 244
      src/page-subspecialty/views/modules/formList/laserSurgery.vue
  7. 36
      src/page-subspecialty/views/modules/formList/mraForm.vue
  8. 178
      src/page-subspecialty/views/modules/formList/reportForm.vue

303
src/components/360View/medicalRecord/index.vue

@ -1,50 +1,42 @@
<template>
<div class="archives">
<div class="archives-content">
<div class="content-left">
<div class="content-left-top">
<div v-for="(item, index) in formList" :key="index" class="formBox" style="margin-top: 12px" :class="[index === curIndex ? 'active' : '']" @click="handleForm(index, item)">
<p :class="[index === curIndex ? 'activeFont' : 'curFont']">{{ item.createTime }}</p>
<p>{{ item.name }}</p>
</div>
<img v-if="!formList" src="@/assets/img/nodata.png" alt="" class="nodata">
<!-- <div class="button"><i class="el-icon-plus" /> 新建表单</div> -->
</div>
<div class="content-left-bottom">
<div class="commonForm-text ">
<span>常用表单</span>
<span class="line" />
<el-checkbox v-model="defaultChecked">默认新建今日</el-checkbox>
</div>
<div class="record" @click="addRecord(1,'门急诊电子病历')">
<p>门急诊电子病历</p>
<img :src="require('@/assets/img/add.png')" alt="" v-if="!onlyRead && isSearch == '1'">
</div>
<div class="comonForm-tab">
<el-radio-group v-model="formType" size="small">
<el-radio-button label="门诊" name="1" style=""></el-radio-button>
<!-- <el-radio-button label="手术" name="2" style=""></el-radio-button>-->
<el-radio-button label="其他" name="3" style=""></el-radio-button>
</el-radio-group>
<div v-if="formType === '门诊'" class="record" @click="addRecord">
<p>门急诊电子病历</p>
<img :src="require('@/assets/img/add.png')" alt="">
</div>
</div>
</div>
</div>
<left-form-list
ref="leftFormList"
:patient-id="patientId"
:is-search="isSearch"
:only-read="onlyRead"
:form-list="formList"
:cur-index="curIndex"
@handleForm="handleForm"
@addRecord="addRecord"
/>
<div class="content-right">
<ourPatientRecord v-if="name === '门急诊电子病历'" :patientId="patientId" :only-read="onlyRead" :is-search="isSearch"></ourPatientRecord>
<template v-if="formList.length">
<ourPatientRecord v-if="name === '门急诊电子病历'" :patient-id="patientId" :only-read="onlyRead" :is-search="isSearch" @formDelete="formDelete" />
<InformedConsent v-if="name==='眼科激光手术患者知情同意书'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
<mra-form v-if="name==='眼底血管造影知情同意书'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
<laser-surgery v-if="name==='眼科激光手术治疗'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
<report-form v-if="name==='报告'" :json-text="jsonText" @handleSaveTable="updateForm" @formDelete="formDelete" />
</template>
</div>
</div>
</div>
</template>
<script>
import { dateFilterTwo } from '@/filters/index.js'
import ourPatientRecord from './outPatientRecord'
const Base64 = require('js-base64').Base64
import LeftFormList from '@/components/360View/medicalRecord/outPatientRecord/leftFormList.vue'
import InformedConsent from '@/page-subspecialty/views/modules/formList/InformedConsent.vue'
import MraForm from '@/page-subspecialty/views/modules/formList/mraForm.vue'
import LaserSurgery from '@/page-subspecialty/views/modules/formList/laserSurgery.vue'
import ReportForm from '@/page-subspecialty/views/modules/formList/reportForm.vue'
export default {
components: {
ReportForm,
LaserSurgery,
MraForm,
InformedConsent,
LeftFormList,
ourPatientRecord
},
mixins: [],
@ -74,103 +66,79 @@ export default {
curIndex: 0,
formList: [],
defaultChecked: [],
formType: '门诊'
formType: '门诊',
jsonText: ''
}
},
created() {
this.getFormList()
},
methods: {
handleForm(index, item) {
handleForm({ index, item }) {
this.curIndex = index
this.id = item.id
this.name = item.name
this.jsonText = item.jsonText
if (item.name === '门急诊电子病历') {
this.eyesData = item.jsonText ? JSON.parse(item.jsonText) : {}
if (item.jsonText) {
this.$nextTick(() => {
this.$refs.eyes.setData()
})
} else {
this.$nextTick(() => {
this.$refs.eyes.reSet()
})
}
} else if (item.name === '') {
this.optomeData = item.jsonText ? JSON.parse(item.jsonText) : {}
if (item.jsonText) {
this.$nextTick(() => {
this.$refs.optome.setData()
})
} else {
this.$nextTick(() => {
this.$refs.optome.reSet()
})
}
} else if (item.name === '') {
this.threeData = item.jsonText ? JSON.parse(item.jsonText) : {}
if (item.jsonText) {
this.$nextTick(() => {
this.$refs.three.setData()
})
} else {
this.$nextTick(() => {
this.$refs.three.reSet()
})
}
// this.eyesData = item.jsonText ? JSON.parse(item.jsonText) : {}
// if (item.jsonText) {
// this.$nextTick(() => {
// this.$refs.eyes.setData()
// })
// } else {
// this.$nextTick(() => {
// this.$refs.eyes.reSet()
// })
// }
}
},
//
addRecord(index, name) {
this.saveTableData(name)
},
async saveTableData(name) {
const date = dateFilterTwo(this.$moment().format('L'))
async updateForm(data) {
const params = {
flag: 8,
name: name,
createTime: date + ' 00:00:00',
name: this.name,
jsonText: JSON.stringify(data),
patientId: this.patientId,
id: this.id,
platform: this.isSearch
}
const { data: res } = await this.$http.post('/case/save', params)
const { data: res } = await this.$http.post('/case/update', params)
if (res.code === 0) {
this.$message.success('保存成功')
this.getFormList()
this.getFormList('update')
} else {
this.$message.error(res.msg)
}
},
async updateForm(data) {
addRecord(name) {
this.name = name
const date = this.$moment().format('YYYY-MM-DD HH:mm:ss')
const params = {
flag: 6,
name: this.name,
jsonText: JSON.stringify(data),
flag: 8,
name: name,
createTime: date,
patientId: this.patientId,
id: this.id,
platform: this.isSearch
}
const { data: res } = await this.$http.post('/case/update', params)
if (res.code === 0) {
this.$message.success('保存成功')
this.$http.post('/case/save', params).then(res => {
this.$message.success('添加成功!')
this.getFormList()
} else {
this.$message.error(res.msg)
}
}).catch(err => {
this.$message.error(err.msg)
})
},
async deleteForm() {
//
formDelete() {
const params = {
id: this.id
}
const { data: res } = await this.$http.post('/case/delete', params)
if (res.code === 0) {
this.$message.success('删除成功')
this.getFormList()
} else {
this.$message.error(res.msg)
}
this.$confirmFun('你确定要删除此随访记录吗?').then(() => {
this.$http.post('/case/delete', params).then(() => {
this.getFormList()
this.$message.success('删除成功')
})
})
},
async getFormList() {
async getFormList(mode) {
const { data: res } = await this.$http.get('/patient/view/getCases', {
params: {
patientId: this.patientId,
@ -180,9 +148,17 @@ export default {
})
if (res.code === 0) {
this.formList = res.data || []
this.curIndex = 0
this.id = this.formList.length ? this.formList[0].id : ''
this.name = this.formList.length ? this.formList[0].name : ''
if (this.formList.length) {
if (mode) {
this.curIndex = this.formList.findIndex(item => item.id === this.id)
this.jsonText = this.formList[this.curIndex].jsonText
} else {
this.name = this.formList[0].name
this.id = this.formList[0].id
this.curIndex = this.formList.findIndex(item => item.id === this.id)
this.jsonText = this.formList[this.curIndex].jsonText
}
}
} else {
this.$message.error(res.msg)
}
@ -227,124 +203,6 @@ export default {
.activeFont {
color: #D9D9D9;
}
.content-left {
width: 185px;
height: 100%;
margin-right: 14px;
.nodata {
width: 175px;
margin-top: 30px;
}
.content-left-top,
.content-left-bottom {
height: 50%;
}
.tree-botton-arr {
margin-left: 10px;
}
.tree-date {
padding-right: 10px;
}
.content-left-top {
overflow-y: auto;
margin-bottom: 16px;
.CRFList-list {
display: flex;
justify-content: space-between;
align-items: center;
padding-left: 24px;
padding-right: 16px;
color: #000;
}
.CRFList-list {
height: 40px;
line-height: 40px;
font-size: 14px;
cursor: pointer;
.el-icon-more {
transform: rotate(90deg);
}
}
.CRFList-icon:hover {
color: #ff2929;
}
.CRFList-list-active {
background-color: #1890ff;
color: #fff;
.el-icon-more {
color: #fff;
}
}
.button {
margin-top: 16px;
background: #f2f3f5;
border-radius: 4px;
height: 40px;
line-height: 40px;
text-align: center;
cursor: pointer;
}
.button:hover,
.el-icon-plus:hover {
color: #1890ff;
}
}
.content-left-bottom {
.commonForm-text {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 700;
}
.line {
border-bottom: 1px solid #e5e6eb;
flex: 1;
display: inline-block;
margin: 0 10px;
}
.comonForm-tab {
margin-top: 10px;
}
.comonForm-tab-Pane {
margin-top: 10px;
}
.comonForm-list {
height: 40px;
line-height: 40px;
font-size: 14px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px;
cursor: pointer;
}
.comonForm-list:hover {
background-color: #f4f8fb;
color: #1d2129;
}
.comonForm-icon:hover {
color: #1890ff;
font-weight: 700;
}
}
}
.record{
display: flex;
justify-content: space-between;
padding-top: 12px;
cursor: pointer;
p {
display: inline-block;
font-size: 14px;
color: rgba(0, 0, 0, 0.85);
letter-spacing: 1px;
}
img {
width: 16px;
height: 16px;
margin-top: 3px;
}
}
}
.content-right {
padding: 12px;
@ -352,7 +210,8 @@ export default {
flex: 1;
text-align: center;
background-color: #F0F2F5;
overflow-y: hidden;
overflow: hidden;
overflow-y: scroll;
.content-right-buttonClick {
display: flex;
justify-content: flex-end;

4
src/components/360View/medicalRecord/outPatientRecord/index.vue

@ -3,6 +3,7 @@
<div v-if="!onlyRead" class="btnBox">
<el-button v-print="printAll" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="formDelete">删除</el-button>
<el-button v-if="comonFormActive === '2' || comonFormActive === '3'" type="primary" size="small" @click="handleTemplate">保存为模板</el-button>
<div v-if="comonFormActive === '2' || comonFormActive === '3'" size="small" style="display:inline-block;margin-left:10px;text-align:center;width: 32px;height: 32px;background-color: #1e79ff;border-radius: 4px;vertical-align: bottom" @click="addData">
<img :src="require('@/assets/img/data.png')" alt="" style="width: 17px;height: 16px;margin-top: 5px">
@ -208,6 +209,9 @@ export default {
},
// tab
handleClick() {
},
formDelete() {
this.$emit('formDelete')
}
}
}

197
src/components/360View/medicalRecord/outPatientRecord/leftFormList.vue

@ -0,0 +1,197 @@
<template>
<div class="content-left">
<div class="content-left-top">
<div v-for="(item, index) in formList" :key="index" class="formBox" style="margin-top: 12px" :class="[index === curIndex ? 'active' : '']" @click="handleForm(index, item)">
<p :class="[index === curIndex ? 'activeFont' : 'curFont']">{{ item.createTime }}</p>
<p>
{{ item.name }}
</p>
</div>
<img v-if="!formList" src="@/assets/img/nodata.png" alt="" class="nodata">
<!-- <div class="button"><i class="el-icon-plus" /> 新建表单</div> -->
</div>
<div class="content-left-bottom">
<div class="commonForm-text ">
<span>常用表单</span>
<span class="line" />
<el-checkbox v-model="defaultChecked">默认新建今日</el-checkbox>
</div>
<div class="comonForm-tab">
<el-radio-group v-model="formType" size="small">
<el-radio-button label="门诊" name="门诊" style="" />
<el-radio-button label="报告" name="报告" style="" />
<el-radio-button label="其他" name="其他" style="" />
</el-radio-group>
<div v-if="formType === '门诊'">
<div v-for="(item,index) in outFormNameList" :key="`${item}_${index}`" class="record">
<p>{{ item }}</p>
<img v-if="!onlyRead&&isSearch == '2'" :src="require('@/assets/img/add.png')" alt="" @click="addRecord(item)">
</div>
</div>
<div v-if="formType === '报告'" class="record">
<p>报告</p>
<img v-if="!onlyRead&&isSearch == '2'" :src="require('@/assets/img/add.png')" alt="" @click="addRecord('报告')">
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'LeftFormList',
props: ['onlyRead', 'isSearch', 'patientId', 'formList', 'curIndex'],
data() {
return {
formType: '门诊',
defaultChecked: [],
outFormNameList: ['门急诊电子病历', '眼科激光手术患者知情同意书', '眼科激光手术治疗', '眼底血管造影知情同意书']
}
},
methods: {
addRecord(name) {
this.$emit('addRecord', name)
},
handleForm(index, item) {
this.$emit('handleForm', { index, item })
}
}
}
</script>
<style lang="scss" scoped>
.content-left {
width: 185px;
height: 100%;
margin-right: 14px;
.nodata {
width: 175px;
margin-top: 30px;
}
.content-left-top,
.content-left-bottom {
height: 50%;
}
.tree-botton-arr {
margin-left: 10px;
}
.tree-date {
padding-right: 10px;
}
.content-left-top {
overflow-y: auto;
margin-bottom: 16px;
.formBox{
cursor: pointer;
padding: 2px 8px;
border-radius: 2px;
margin-top: 12px;
}
.active {
color: white;
background-color: #1C76FD;
}
.curFont {
color: #A6A4A4;
}
.activeFont {
color: #D9D9D9;
}
.CRFList-list {
display: flex;
justify-content: space-between;
align-items: center;
padding-left: 24px;
padding-right: 16px;
color: #000;
}
.CRFList-list {
height: 40px;
line-height: 40px;
font-size: 14px;
cursor: pointer;
.el-icon-more {
transform: rotate(90deg);
}
}
.CRFList-icon:hover {
color: #ff2929;
}
.CRFList-list-active {
background-color: #1890ff;
color: #fff;
.el-icon-more {
color: #fff;
}
}
.button {
margin-top: 16px;
background: #f2f3f5;
border-radius: 4px;
height: 40px;
line-height: 40px;
text-align: center;
cursor: pointer;
}
.button:hover,
.el-icon-plus:hover {
color: #1890ff;
}
}
.content-left-bottom {
.commonForm-text {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 700;
}
.line {
border-bottom: 1px solid #e5e6eb;
flex: 1;
display: inline-block;
margin: 0 10px;
}
.comonForm-tab {
margin-top: 10px;
}
.comonForm-tab-Pane {
margin-top: 10px;
}
.comonForm-list {
height: 40px;
line-height: 40px;
font-size: 14px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px;
cursor: pointer;
}
.comonForm-list:hover {
background-color: #f4f8fb;
color: #1d2129;
}
.comonForm-icon:hover {
color: #1890ff;
font-weight: 700;
}
}
}
.record{
display: flex;
justify-content: space-between;
padding-top: 12px;
cursor: pointer;
p {
display: inline-block;
font-size: 14px;
color: rgba(0, 0, 0, 0.85);
letter-spacing: 1px;
}
img {
width: 16px;
height: 16px;
margin-top: 3px;
}
}
</style>

350
src/page-subspecialty/views/modules/formList/InformedConsent.vue

@ -3,30 +3,30 @@
<div class="btnBox">
<el-button v-print="'#threeFunc'" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="formDelete">删除</el-button>
</div>
<div id="threeFunc" style="width: 840px;padding-right: 8px">
<div id="threeFunc" style="width: 840px;padding-right: 8px;text-align: left">
<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 class="flex a-c item">姓名<el-input v-model="formData.patient.patientName" style="flex: 1" placeholder="" /></div>
<div class="flex a-c item">年龄<el-input v-model="formData.patient.age" style="flex: 1" placeholder="" /></div>
<div class="flex a-c item">性别<el-input v-model="formData.patient.sex" style="flex: 1" placeholder="" /></div>
<div class="flex a-c item">眼别<el-input v-model="formData.patient.eyeLevel" style="flex: 1" placeholder="" /></div>
</div>
<!--术前判断-->
<div>
<div class="formTitle">
术前诊断
</div>
<div v-for="(item, index) in judgement" :key="index" class="judgeItem">
<div v-for="(item, index) in formData.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-checkbox v-model="judge.isSelected" class="checkboxItem">{{ judge.title }}</el-checkbox>
<el-input v-if="judge.isEdit" v-model="judge.remark" style="flex: 1" />
</div>
</template>
@ -36,17 +36,19 @@
<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 v-for="(sel,i) in formData.modeSelect" :key="i" style="margin-right: 30px">
<el-checkbox v-model="sel.isSelected" class="checkboxItem">{{ sel.name }}</el-checkbox>
</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 }}
<div v-for="(item,i) in formData.proposedName" :key="i" style="margin-right: 35px">
<el-checkbox v-model="item.isSelected" class="checkboxItem">{{ item.name }}</el-checkbox>
<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 v-for="(area,index) in item.area" :key="`${index}_${i}`" class="areaItem"><el-checkbox v-model="area.isSelected" class="checkboxItem">{{ area.name }}</el-checkbox></span>
)</span>
</div>
</div>
@ -54,7 +56,7 @@
<!-- 术中可能发生的并发症及处理-->
<div>
<div class="formTitle">术中可能发生的并发症及处理</div>
<div v-for="(item,index) in intraoperation" :key="index">
<div v-for="(item,index) in formData.intraoperation" :key="index">
{{ `${index+1}. ${item}` }}
</div>
</div>
@ -67,14 +69,14 @@
<div>
<div class="formTitle">术后可能发生下列并发症</div>
<div class="proposed">
<div v-for="(post,idx) in postoperative" :key="idx" class="postItem" style="margin-right: 30px">
<div v-for="(post,idx) in formData.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 class="flex a-c">主诊/谈话医生签名<el-input v-model="formData.doctor.name" style="flex: 1" /></div>
<div class="flex a-c">日期<el-input v-model="formData.doctor.dateTime" style="flex: 1" /></div>
</div>
</div>
</div>
@ -86,8 +88,8 @@
</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 class="flex a-c">患者或直系亲属签名<el-input v-model="formData.patientInfo.name" style="flex: 1" /></div>
<div class="flex a-c">日期<el-input v-model="formData.patientInfo.dateTime" style="flex: 1" /></div>
</div>
</div>
</div>
@ -98,187 +100,205 @@
<script>
export default {
name: 'InformedConsent',
props: {
jsonText: {
type: String,
default: ''
}
},
data() {
return {
//
patient: {
patientName: '',
age: '',
sex: '',
eyeLevel: ''
},
//
doctor: {
name: '',
dateTime: ''
},
patientInfo: {
name: '',
dateTime: ''
},
//
judgement: [
{
name: '白内障',
symptom: [{
title: '后发性',
originalData: {},
formData: {
//
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
}, {
title: '其他',
name: '其他',
isSelected: false,
isEdit: true,
remark: ''
}]
}, {
name: '青光眼',
symptom: [{
title: '闭角型',
}
],
//
proposedName: [
{
name: '激光后囊切开术',
isSelected: false
}, {
title: '开角型',
name: '激光前囊切开术',
isSelected: false
}, {
title: '其他',
isSelected: false,
remark: '',
isEdit: true
}]
}, {
name: '眼底病',
symptom: [{
title: '糖尿病视网膜病变',
name: '激光周边虹膜切除',
isSelected: false
}, {
title: '视网膜裂孔',
name: '激光房角成形术',
isSelected: false
}, {
title: '视网膜变性',
name: '激光睫状体光凝术',
isSelected: false
}, {
title: '黄斑部疾病',
name: '激光断线',
isSelected: false
}, {
title: '其他',
name: '视网膜光凝术',
isSelected: false,
isEdit: true,
remark: ''
}]
}, {
name: '视网膜血管性病变',
symptom: [{
title: '视网膜静脉阻塞(中央)',
isSelected: false
area: [{
name: '局部',
isSelected: false
}, {
name: '全',
isSelected: false
}, {
name: '黄斑区',
isSelected: false
}]
}, {
title: '视网膜静脉阻塞(分支)',
name: '激光瞳孔成形术',
isSelected: false
}, {
title: '视网膜静脉周围炎',
name: '激光瞳孔残膜切开术',
isSelected: false
}]
}, {
name: "Coat's 病",
symptom: [{
title: '',
}, {
name: '激光虹膜黏连剖除术',
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: '局部',
}, {
name: '玻璃体条索切开术',
isSelected: false
}, {
name: '',
name: '激光倒睫术',
isSelected: false
}, {
name: '黄斑区',
name: '其他',
isSelected: false
}]
}, {
name: '激光瞳孔成形术',
isSelected: false
}, {
name: '激光瞳孔残膜切开术',
isSelected: false
}, {
name: '激光虹膜黏连剖除术',
isSelected: false
}, {
name: '玻璃体条索切开术',
isSelected: false
}, {
name: '激光倒睫术',
isSelected: false
}, {
name: '其他',
isSelected: false
}
],
//
intraoperation: ['麻醉意外:需进行抢救或暂停手术', '出血:需要压迫止血,推迟或暂停手术', '其他无法预计的并发症', '术中可能会根据具体情况变更手术方式'],
postoperative: ['暂时性眼压升高', '损伤人工晶体', '角膜内皮损伤', '虹膜炎症反应', '玻璃体前界膜破裂', '视功能损伤', '渗出性视网膜脱离', '黄斑水肿', '脉络膜脱离', '虹膜(视网膜、脉络膜)出血', '其他']
}
],
//
intraoperation: ['麻醉意外:需进行抢救或暂停手术', '出血:需要压迫止血,推迟或暂停手术', '其他无法预计的并发症', '术中可能会根据具体情况变更手术方式'],
postoperative: ['暂时性眼压升高', '损伤人工晶体', '角膜内皮损伤', '虹膜炎症反应', '玻璃体前界膜破裂', '视功能损伤', '渗出性视网膜脱离', '黄斑水肿', '脉络膜脱离', '虹膜(视网膜、脉络膜)出血', '其他']
}
}
},
watch: {
jsonText(val) {
if (val) {
this.formData = JSON.parse(val)
} else {
this.formData = this.originalData
}
}
},
created() {
this.originalData = JSON.parse(JSON.stringify(this.formData))
if (this.jsonText) {
this.formData = JSON.parse(this.jsonText)
}
},
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)
this.$emit('handleSaveTable', this.formData)
},
formDelete() {
this.$emit('formDelete')
}
}
}

609
src/page-subspecialty/views/modules/formList/deveopmentFIle.vue

@ -1,609 +0,0 @@
<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>

244
src/page-subspecialty/views/modules/formList/laserSurgery.vue

@ -3,6 +3,7 @@
<div class="btnBox">
<el-button v-print="'#laserFunc'" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="formDelete">删除</el-button>
</div>
<div id="laserFunc" style="width: 840px;padding-right: 8px">
<p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;">
@ -11,16 +12,16 @@
<!--患者信息-->
<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 class="flex a-c item">姓名<el-input v-model="formData.patient.patientName" style="flex: 1" /></div>
<div class="flex a-c item">年龄<el-input v-model="formData.patient.age" style="flex: 1" /></div>
<div class="flex a-c item">性别<el-input v-model="formData.patient.sex" style="flex: 1" /></div>
<div class="flex a-c item">病例号<el-input v-model="formData.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 class="flex a-c">联系电话<el-input v-model="formData.patient.phone" style="flex: 1" /></div>
<div class="flex a-c item">家庭住址<el-input v-model="formData.patient.address" style="flex: 1" /></div>
</div>
<div class="flex a-c item">诊断<el-input v-model="patient.diagnose" style="flex: 1" /></div>
<div class="flex a-c item">诊断<el-input v-model="formData.patient.diagnose" style="flex: 1" /></div>
</div>
<!-- 治疗前-->
<div class="subTitle">治疗前</div>
@ -32,25 +33,25 @@
</tr>
</thead>
<tbody>
<tr>
<tr v-if="formData.beforeTreat">
<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>
<div class="flex a-c">{{ formData.beforeTreat.OD.eye.name }}<el-input v-model="formData.beforeTreat.OD.eye.level" style="flex: 1" /></div>
<div class="flex a-c">{{ formData.beforeTreat.OD.illness.name }}<el-input v-model="formData.beforeTreat.OD.illness.desc" style="flex: 1" /></div>
</td>
<td>
<div class="descImg" @click="editImg('OD')">
<div>示意图</div>
<img v-if="beforeTreat.OD.imgSrc" :src="beforeTreat.OD.imgSrc">
<img v-if="formData.beforeTreat.OD.imgSrc" :src="formData.beforeTreat.OD.imgSrc">
</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>
<div class="flex a-c">{{ formData.beforeTreat.OS.eye.name }}<el-input v-model="formData.beforeTreat.OS.eye.level" style="flex: 1" /></div>
<div class="flex a-c">{{ formData.beforeTreat.OS.illness.name }}<el-input v-model="formData.beforeTreat.OS.illness.desc" style="flex: 1" /></div>
</td>
<td>
<div class="descImg" @click="editImg('OS')">
<div>示意图</div>
<img v-if="beforeTreat.OS.imgSrc" :src="beforeTreat.OS.imgSrc">
<img v-if="formData.beforeTreat.OS.imgSrc" :src="formData.beforeTreat.OS.imgSrc">
</div>
</td>
</tr>
@ -66,7 +67,7 @@
</tr>
</thead>
<tbody>
<tr v-for="(item,index) in treatData" :key="index">
<tr v-for="(item,index) in formData.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>
@ -109,106 +110,130 @@ import ImgEditor from '@/components/360View/img-editor.vue'
export default {
name: 'LaserSurgery',
components: { ImgEditor },
props: {
jsonText: {
type: String,
default: ''
}
},
data() {
return {
curType: '',
curIndex: '',
origin: '',
//
patient: {
patientName: '',
age: '',
sex: '',
caseNo: '',
phone: '',
address: '',
diagnose: ''
},
beforeTreat: {
OD: {
eye: {
name: '视力1',
level: ''
},
illness: {
name: '疾病分期',
desc: ''
},
imgSrc: ''
formData: {
patient: {
patientName: '',
age: '',
sex: '',
caseNo: '',
phone: '',
address: '',
diagnose: ''
},
OS: {
eye: {
name: '视力2',
level: ''
},
illness: {
name: '疾病分期',
desc: ''
},
imgSrc: ''
}
},
treatData: [
{
beforeTreat: {
OD: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
eye: {
name: '视力1',
level: ''
},
illness: {
name: '疾病分期',
desc: ''
},
imgSrc: ''
},
OS: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
eye: {
name: '视力2',
level: ''
},
illness: {
name: '疾病分期',
desc: ''
},
imgSrc: ''
}
},
{
OD: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
treatData: [
{
OD: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
},
OS: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
}
},
OS: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
}
},
{
OD: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
{
OD: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
},
OS: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
}
},
OS: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
{
OD: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
},
OS: {
date: '',
order: '',
vision: '',
flareSize: '',
power: '',
count: '',
imgSrc: ''
}
}
}
]
]
}
}
},
watch: {
jsonText(val) {
if (val) {
this.formData = JSON.parse(val)
} else {
this.formData = this.origin
}
}
},
created() {
this.origin = JSON.parse(JSON.stringify(this.formData))
if (this.jsonText) {
this.formData = JSON.parse(this.jsonText)
}
},
methods: {
@ -220,30 +245,32 @@ export default {
fullImgBack(val) {
switch (this.curType) {
case 'OD':
this.beforeTreat.OD.imgSrc = val
this.formData.beforeTreat.OD.imgSrc = val
break
case 'OS':
this.beforeTreat.OS.imgSrc = val
this.formData.beforeTreat.OS.imgSrc = val
break
case 'treat-OD':
this.treatData[this.curIndex].OD.imgSrc = val
this.formData.treatData[this.curIndex].OD.imgSrc = val
break
case 'treat-OS':
this.treatData[this.curIndex].OS.imgSrc = val
this.formData.treatData[this.curIndex].OS.imgSrc = val
}
},
handleSaveTable() {
const data = {
treat: this.treatData,
beforeTreat: this.beforeTreat
}
this.$emit('save', data)
this.$emit('handleSaveTable', this.formData)
},
formDelete() {
this.$emit('formDelete')
}
}
}
</script>
<style lang="scss" scoped>
#laserFunc{
padding: 20px;
}
.flex{
display: flex;
}
@ -267,6 +294,7 @@ export default {
height: 140px;
div{
height: 20px;
text-align: left;
}
img{
height: calc(100% - 20px);

36
src/page-subspecialty/views/modules/formList/mraForm.vue

@ -3,8 +3,9 @@
<div class="btnBox">
<el-button v-print="'#mraFunc'" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="formDelete">删除</el-button>
</div>
<div id="mraFunc">
<div id="mraFunc" style="width: 840px;padding-right: 8px">
<p style="color:#000000;font-size:32px;margin:0 0 30px 0;text-align:center;">
眼底血管造影知情同意书
</p>
@ -44,8 +45,15 @@
<script>
export default {
name: 'MraForm',
props: {
jsonText: {
type: String,
default: ''
}
},
data() {
return {
origin: '',
patient: {
name: '',
sex: '',
@ -78,13 +86,28 @@ export default {
]
}
},
watch: {
jsonText(val) {
console.log(val)
if (val) {
this.patient = JSON.parse(this.jsonText)
} else {
this.patient = this.origin
}
}
},
created() {
this.origin = JSON.parse(JSON.stringify(this.patient))
if (this.jsonText) {
this.patient = JSON.parse(this.jsonText)
}
},
methods: {
handleSaveTable() {
const data = {
treat: this.treatData,
beforeTreat: this.beforeTreat
}
this.$emit('save', data)
this.$emit('handleSaveTable', this.patient)
},
formDelete() {
this.$emit('formDelete')
}
}
}
@ -102,6 +125,7 @@ export default {
}
#mraFunc{
font-size: 16px;
text-align: left;
line-height: 30px;
padding: 20px 80px;
}

178
src/page-subspecialty/views/modules/formList/reportForm.vue

@ -0,0 +1,178 @@
<template>
<div id="operation-record" style=" background: #fff; padding: 10px 20px 50px 20px;page-break-after:always">
<div class="btnBox">
<el-button v-print="'#reportForm'" size="small">打印</el-button>
<el-button type="primary" size="small" @click="handleSaveTable">保存</el-button>
<el-button type="danger" size="small" @click="formDelete">删除</el-button>
</div>
<div id="reportForm" style="width: 840px;padding-right: 8px;text-align: left">
<div class="flex" style="width: 240px">患者姓名<el-input v-model="formData.patientName" style="flex: 1" /></div>
<table class="treatAction">
<thead>
<tr>
<td colspan="2">睑板腺综合治疗睑脂性状分析</td>
</tr>
<tr>
<td>右眼</td>
<td>左眼</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<div v-for="(item,index) in formData.form.OD" :key="index">
<el-checkbox v-model="item.isSelect">
{{ item.name }}
<el-input v-if="item.isEdit" v-model="item.remark" />
</el-checkbox>
</div>
</td>
<td><div v-for="(item,index) in formData.form.OS" :key="index">
<el-checkbox v-model="item.isSelect">
{{ item.name }}
<el-input v-if="item.isEdit" v-model="item.remark" />
</el-checkbox>
</div></td>
</tr>
<tr>
<td colspan="2">
<div class="flex">
备注<el-input style="flex:1" />
</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="flex">
操作者<el-input style="flex:1" />
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
<script>
export default {
name: 'ReportForm',
props: {
jsonText: {
type: String,
default: ''
}
},
data() {
return {
origin: {},
formData: {
patientName: '',
remark: '',
operator: '',
form: {
checkList: [],
OD: [
{
name: '分泌物清亮',
isSelect: false
}, {
name: '分泌物轻浑,云雾状',
isSelect: false
}, {
name: '分泌物浑浊,粘稠可见颗粒物质',
isSelect: false
}, {
name: '分泌物呈牙膏状或压迫出现气泡',
isSelect: false
}, {
name: '其他:',
isSelect: false,
isEdit: true,
remark: ''
}
],
OS: [
{
name: '分泌物清亮',
isSelect: false
}, {
name: '分泌物轻浑,云雾状',
isSelect: false
}, {
name: '分泌物浑浊,粘稠可见颗粒物质',
isSelect: false
}, {
name: '分泌物呈牙膏状或压迫出现气泡',
isSelect: false
}, {
name: '其他:',
isSelect: false,
isEdit: true,
remark: ''
}
]
}
}
}
},
watch: {
jsonText(val) {
if (val) {
this.formData = JSON.parse(val)
} else {
this.formData = this.origin
}
}
},
created() {
this.origin = JSON.parse(JSON.stringify(this.formData))
if (this.jsonText) {
this.formData = JSON.parse(this.jsonText)
}
},
methods: {
handleSaveTable() {
this.$emit('handleSaveTable', this.formData)
},
formDelete() {
this.$emit('formDelete')
}
}
}
</script>
<style lang="scss" scoped>
.flex{
display: flex;
}
.treatAction{
width: 100%;
margin-top: 10px;
thead{
text-align: center;
}
tr td,tr th{
border: 1px solid #ccc;
padding: 5px;
}
td{
width: 25%;
}
}
::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…
Cancel
Save