7 changed files with 1147 additions and 9 deletions
@ -0,0 +1,167 @@ |
|||
<template> |
|||
<el-dialog |
|||
class="HIS-dialog" |
|||
:visible.sync="visible" |
|||
width="60%" |
|||
title="HIS查询" |
|||
> |
|||
<el-form ref="dataFormHis" :inline="true" :model="dataFormHis" class="demo-form-inline" :rules="dataRule" @keyup.enter.native="findHandle(2)"> |
|||
<el-form-item prop="patientId"> |
|||
<el-input v-model="dataFormHis.patientId" placeholder="请输入登记号" clearable /> |
|||
</el-form-item> |
|||
<el-form-item prop="patientName"> |
|||
<el-input v-model="dataFormHis.patientName" placeholder="请输入姓名" clearable /> |
|||
</el-form-item> |
|||
<el-form-item prop="patientIdNumber"> |
|||
<el-input v-model="dataFormHis.patientIdNumber" placeholder="请输入身份证号" clearable /> |
|||
</el-form-item> |
|||
<el-col :span="6"> |
|||
<el-form-item> |
|||
<el-button type="primary" @click="findHandle(2)">查询</el-button> |
|||
<el-button @click="visible = !visible">取消</el-button> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-form> |
|||
<el-table v-loading="loading" :data="tableData" style="margin-bottom: 32px" height="500"> |
|||
<template slot="empty"> |
|||
<span style="color: #969799;">{{ tableText }}</span> |
|||
</template> |
|||
<el-table-column property="patientId" label="登记号" /> |
|||
<el-table-column property="patientName" label="患者姓名" /> |
|||
<el-table-column property="patientIdNumber" label="身份证号" /> |
|||
<el-table-column property="patientPhone" label="联系电话" /> |
|||
<el-table-column property="zlProject" label="医疗项目" width="140" /> |
|||
<el-table-column property="remark" label="备注" width="140" /> |
|||
<!-- <el-table-column property="patientAddress" label="家庭地址" />--> |
|||
<el-table-column label="操作" width="80"> |
|||
<template slot-scope="scope"> |
|||
<p class="introduce" @click="introduceHandle(scope.row)">引入</p> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
visible: false, |
|||
dataFormHis: { |
|||
patientId: '', |
|||
patientName: '', |
|||
patientIdNumber: '' |
|||
}, |
|||
dataForm: {}, |
|||
tableData: [], |
|||
tableText: '请查询所需数据', |
|||
loading: false |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule() { |
|||
return { |
|||
patientId: [ |
|||
{ message: '请输入登记号', trigger: 'blur' } |
|||
], |
|||
patientName: [ |
|||
{ message: '请输入姓名', trigger: 'blur' } |
|||
], |
|||
patientIdNumber: [ |
|||
{ message: '请输入身份证号', trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
init() { |
|||
this.visible = true |
|||
this.$nextTick(() => { |
|||
this.tableText = '请查询所需数据' |
|||
this.$refs.dataFormHis.resetFields() // 重置表单 |
|||
this.tableData = [] |
|||
}) |
|||
}, |
|||
// His查询按钮 |
|||
async findHandle(flag) { |
|||
if (flag === 2 && !this.dataFormHis.patientId && !this.dataFormHis.patientName && !this.dataFormHis.patientIdNumber) { |
|||
return this.$message.error('搜索内容不能为空') |
|||
} |
|||
this.loading = true |
|||
const { data: res } = await this.$http.get('/patient/getHisPatient', { |
|||
params: this.dataFormHis |
|||
}) |
|||
if (res.code === 0) { |
|||
this.loading = false |
|||
this.tableData = res.data |
|||
if (res.data.length <= 0 && flag === 2) { |
|||
this.tableText = '查询成功,未查询到相关数据' |
|||
} else if (res.data.length <= 0 && flag === 1) { |
|||
this.tableText = '请查询所需数据' |
|||
} |
|||
} else { |
|||
this.loading = false |
|||
this.tableText = res.msg |
|||
this.$message.error(res.msg) |
|||
} |
|||
}, |
|||
// 点击引入按钮 |
|||
async introduceHandle(scopwRow) { |
|||
this.dataFormHis.patientId = scopwRow.patientId |
|||
this.dataFormHis.patientName = scopwRow.patientName |
|||
this.visible = false |
|||
// this.$parent.addOrUpdateHandle('', scopwRow, 'HIS引入') |
|||
await this.doLeadIn() |
|||
}, |
|||
async doLeadIn() { |
|||
this.loading = true |
|||
const { data: res } = await this.$http.get('/lenses/doLeadIn', { |
|||
params: this.dataFormHis |
|||
}) |
|||
if (res.code === 0) { |
|||
this.loading = false |
|||
this.$parent.getDataListInitial() |
|||
} else { |
|||
this.loading = false |
|||
this.$message.error(res.msg) |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.HIS-dialog { |
|||
box-sizing: border-box; |
|||
.cycle-display { |
|||
.el-form-item__content { |
|||
display: flex; |
|||
} |
|||
.el-input-number { |
|||
width: 100px; |
|||
margin-right: 16px; |
|||
} |
|||
} |
|||
.introduce { |
|||
color: #1F78FF; |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
<style lang="scss"> |
|||
.HIS-dialog { |
|||
.el-form { |
|||
display: flex; |
|||
} |
|||
.el-dialog__header { |
|||
margin-bottom:12px |
|||
} |
|||
.el-dialog__body { |
|||
padding-right: 30px; |
|||
} |
|||
.formItemOne .el-form-item__content { |
|||
display: flex; |
|||
} |
|||
|
|||
} |
|||
</style> |
@ -0,0 +1,113 @@ |
|||
<template> |
|||
<el-dialog |
|||
class="patientDialog" |
|||
:visible.sync="visible" |
|||
width="30%" |
|||
title="修改身份证" |
|||
@close="closedDialog" |
|||
> |
|||
<el-form ref="dataForm" :model="dataForm" :rules="dataRule"> |
|||
<el-form-item label="身份证号:" label-width="90px" prop="newIdNumber" class="formItemOne"> |
|||
<el-input v-model="dataForm.newIdNumber" placeholder="请输入患者身份证号" /> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template slot="footer"> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
<el-button type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import debounce from 'lodash/debounce' |
|||
export default { |
|||
props: { |
|||
patientTypeList: { |
|||
type: Array, |
|||
default: () => [] |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
visible: false, |
|||
dataForm: { |
|||
newIdNumber: '', |
|||
oldIdNumber: '', |
|||
drgsName: window.localStorage.getItem('identity') |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule() { |
|||
return { |
|||
newIdNumber: [ |
|||
{ required: true, message: '请输入身份证号', trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
init() { |
|||
this.visible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.dataForm.resetFields() // 重置表单 |
|||
}) |
|||
}, |
|||
// 表单提交 |
|||
dataFormSubmitHandle: debounce(function() { |
|||
this.$refs.dataForm.validate((valid) => { |
|||
if (!valid) { |
|||
return false |
|||
} |
|||
this.$http.post('/pat/Manage/updateIdNumber', this.dataForm).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.$message({ |
|||
message: this.$t('prompt.success'), |
|||
type: 'success', |
|||
duration: 500, |
|||
onClose: () => { |
|||
this.visible = false |
|||
this.$emit('refreshDataList') |
|||
} |
|||
}) |
|||
}).catch(() => {}) |
|||
}) |
|||
}, 1000, { leading: true, trailing: false }), |
|||
|
|||
// 关闭dialog |
|||
closedDialog() { |
|||
this.$emit('editPatidVisible') |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.patientDialog { |
|||
.cycle-display { |
|||
.el-form-item__content { |
|||
display: flex; |
|||
} |
|||
.el-input-number { |
|||
width: 100px; |
|||
margin-right: 16px; |
|||
} |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
<style lang="scss"> |
|||
.patientDialog { |
|||
.el-dialog__header { |
|||
margin-bottom:12px |
|||
} |
|||
.el-dialog__body { |
|||
padding-right: 30px; |
|||
} |
|||
.formItemOne .el-form-item__content { |
|||
display: flex; |
|||
} |
|||
|
|||
} |
|||
</style> |
@ -0,0 +1,233 @@ |
|||
<template> |
|||
<div class="patient-info"> |
|||
<template> |
|||
<div v-if="!detailViewVisible"> |
|||
<div class="patient-info-head"> |
|||
<el-form :inline="true" :model="dataForm" class="demo-form-inline" @keyup.enter.native="getDataListInitial()"> |
|||
<el-form-item label="登记号:"> |
|||
<el-input v-model="dataForm.patientId" size="small" clearable placeholder="登记号" @clear="getDataListInitial()" /> |
|||
</el-form-item> |
|||
<el-form-item label="患者姓名:"> |
|||
<el-input v-model="dataForm.patientName" placeholder="患者姓名" size="small" clearable @clear="getDataListInitial()" /> |
|||
</el-form-item> |
|||
<el-form-item label="身份证:"> |
|||
<el-input v-model="dataForm.patientIdNumber" size="small" clearable placeholder="身份证" @clear="getDataListInitial()" /> |
|||
</el-form-item> |
|||
<el-form-item prop="dateRange" label="就诊时间" class="form-item-date"> |
|||
<el-date-picker |
|||
v-model="nextVisitTime" |
|||
size="small" |
|||
type="daterange" |
|||
range-separator="-" |
|||
start-placeholder="开始日期" |
|||
end-placeholder="结束日期" |
|||
value-format="yyyy-MM-dd" |
|||
@change="dateChange" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item style="flex:1"> |
|||
<el-button type="primary" icon="el-icon-search" size="small" @click="getDataListInitial()">查询</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
<div style="display: flex;justify-content: flex-end;background-color: white;padding: 16px 16px 0"> |
|||
<div> |
|||
<el-button type="primary" size="small" @click="HISHandle"> |
|||
<svg-icon icon-class="icon-HIS-up" style="font-size:12px;" /> |
|||
<span style="padding-left:5px;vertical-align: middle;">HIS引入</span> |
|||
</el-button> |
|||
</div> |
|||
</div> |
|||
<div class="patient-info-content"> |
|||
<el-table |
|||
ref="multipleTable" |
|||
:data="dataList" |
|||
tooltip-effect="dark" |
|||
style="width: 100%" |
|||
@sort-change="dataListSortChangeHandle" |
|||
> |
|||
<el-table-column prop="patientId" label="登记号 " header-align="center" align="center" /> |
|||
<el-table-column prop="patientName" label="患者姓名" header-align="center" align="center" /> |
|||
<el-table-column prop="patientSex" label="患者性别" header-align="center" align="center" /> |
|||
<el-table-column label="出生日期" header-align="center" align="center"> |
|||
<template slot-scope="scope"> |
|||
{{ scope.row.patientBirthday ? $options.filters.dateFilterTwo( scope.row.patientBirthday): '- ' }} |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column prop="operation" label="操作" header-align="center" align="center"> |
|||
<template slot-scope="scope"> |
|||
<span |
|||
style="color: #1890ff; padding-right: 8px" |
|||
class="operation-details" |
|||
@click="browseClick(scope.row)" |
|||
>离焦眼镜</span> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination background layout="total,prev, pager, next" :total="total" :current-page.sync="page" @current-change="pageCurrentChangeHandle" /> |
|||
</div> |
|||
</div> |
|||
<!-- 弹窗, 新增 / 修改 --> |
|||
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataListInitial" /> |
|||
<!-- HIS引入弹框 --> |
|||
<his-add v-if="HisAddVisible" ref="HisAddRef" /> |
|||
<out-detail v-if="detailViewVisible" :is-search="'3'" :patient-id="patientId"></out-detail> |
|||
</template> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import checked from '@/mixins/checked' |
|||
import headTemplate from '@/components/head' |
|||
import mixinViewModule from '@/mixins/view-module' |
|||
import AddOrUpdate from './patient-add-or-update' |
|||
import hisAdd from './HIS-add' |
|||
import outDetail from './outDetail' |
|||
export default { |
|||
components: { |
|||
headTemplate, |
|||
AddOrUpdate, |
|||
outDetail, |
|||
hisAdd |
|||
}, |
|||
mixins: [checked, mixinViewModule], |
|||
data() { |
|||
return { |
|||
mixinViewModuleOptions: { |
|||
getDataListURL: '/lenses/page', |
|||
// getDataListURL: '/patient/page', |
|||
getDataListIsPage: true |
|||
}, |
|||
nextVisitTime: [], |
|||
detailViewVisible: false, |
|||
HisAddVisible: false, |
|||
dataForm: { |
|||
// platform: 3, |
|||
patientId: '', |
|||
beginDate: '', |
|||
endDate: '', |
|||
// searchType: '0', |
|||
patientName: '', |
|||
patientStatus: '', |
|||
patientIdNumber: '' |
|||
}, |
|||
addGroupVisible: false, |
|||
patientId: '', |
|||
patientIdNumber: '', |
|||
detailId: '' |
|||
} |
|||
}, |
|||
created() { |
|||
}, |
|||
methods: { |
|||
reFresh() { |
|||
this.pageCurrentChangeHandle(this.page) |
|||
}, |
|||
// 浏览 |
|||
browseClick(scopeRow) { |
|||
this.detailViewVisible = true |
|||
this.patientId = scopeRow.patientId |
|||
this.patientIdNumber = scopeRow.patientIdNumber |
|||
// this.$router.push({ |
|||
// path: '/patientInfo', |
|||
// query: { |
|||
// info: this.$Base64.encode(JSON.stringify({ |
|||
// patientIdNumber: scopeRow.patientIdNumber, |
|||
// patientId: scopeRow.patientId |
|||
// })) |
|||
// } |
|||
// }) |
|||
}, |
|||
// 日期改变时 |
|||
dateChange(e) { |
|||
this.dataForm.beginDate = e ? e[0] : '' |
|||
this.dataForm.endDate = e ? e[1] : '' |
|||
this.getDataListInitial() |
|||
}, |
|||
// His引入 |
|||
HISHandle() { |
|||
this.HisAddVisible = true |
|||
this.$nextTick(() => { |
|||
this.$refs.HisAddRef.init() |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.patient-info { |
|||
width: 100%; |
|||
height: 100%; |
|||
.patient-info-head, |
|||
.patient-info-content { |
|||
background: #fff; |
|||
.head { |
|||
padding-bottom: 10px; |
|||
} |
|||
} |
|||
.patient-info-content { |
|||
padding: 16px; |
|||
margin-bottom: 45px; |
|||
} |
|||
.patient-info-head { |
|||
margin-bottom: 16px; |
|||
padding: 10px 16px; |
|||
} |
|||
.operation-delete, |
|||
.operation-details { |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
</style> |
|||
<style lang="scss"> |
|||
.patient-info { |
|||
.patient-info-head { |
|||
.el-form { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
} |
|||
.el-form-item { |
|||
display: flex; |
|||
} |
|||
.el-form-item__label { |
|||
min-width: 75px; |
|||
} |
|||
.el-form-item { |
|||
margin-bottom: 0; |
|||
width: 25%; |
|||
} |
|||
.el-form-item__content, |
|||
.el-select, |
|||
.el-range-editor--small.el-input__inner { |
|||
width: 100%; |
|||
} |
|||
.form-item-date .el-form-item__content { |
|||
min-width: 180px; |
|||
} |
|||
} |
|||
.el-select { |
|||
width: 100%; |
|||
} |
|||
.detail-view { |
|||
height: 100%; |
|||
background: #0c1016; |
|||
padding: 0; |
|||
} |
|||
.detail-view .el-dialog .el-dialog__header > .el-dialog__title{ |
|||
color: #FFFFFF; |
|||
} |
|||
.detail-view .el-dialog > .el-dialog__header{ |
|||
width: 100%; |
|||
height: 48px; |
|||
line-height: 48px; |
|||
text-align: center; |
|||
background: linear-gradient(180deg,#0c1016, #2c3543 100%); |
|||
padding: 0; |
|||
} |
|||
.detail-view .el-dialog > .el-dialog__body{ |
|||
height: calc(100% - 48px); |
|||
flex: 1; |
|||
background: #0c1016; |
|||
padding: 0; |
|||
} |
|||
} |
|||
</style> |
@ -0,0 +1,328 @@ |
|||
<template> |
|||
<div class="see-doctor"> |
|||
<div class="header"> |
|||
<img :src="require('@/assets/img/back-l.png')" alt="" style="margin-right: 8px;cursor: pointer" @click="backList"> |
|||
<img :src="require('@/assets/img/boy.png')" alt=""> |
|||
<p class="head-t"> |
|||
<span class="head-r">{{ patientInfoObj.patientName }}</span> |
|||
<span class="head-r">{{ patientInfoObj.patientSex }}</span> |
|||
<span v-if="patientInfoObj.patientAge" class="head-r">{{ patientInfoObj.patientAge }}岁</span> |
|||
<img v-if="patientInfoObj.patientId" class="icon-a" :src="require('@/assets/img/pid.png')" alt="" style="margin-right: 6px;vertical-align: text-top"> |
|||
<span style="vertical-align: text-bottom">{{ patientInfoObj.patientId }}</span> |
|||
</p> |
|||
<p class="head-b"> |
|||
<img v-if="patientInfoObj.patientId" :src="require('@/assets/img/id.png')" alt="" style="margin-right: 6px;vertical-align: middle"> |
|||
<span class="mr16" style="vertical-align: middle">{{ patientInfoObj.patientId }}</span> |
|||
<img v-if="patientInfoObj.patientPhone" :src="require('@/assets/img/phone.png')" alt="" style="margin-right: 6px;vertical-align: middle"> |
|||
<span class="mr16" style="vertical-align: middle">{{ patientInfoObj.patientPhone }}</span> |
|||
<img v-if="patientInfoObj.patientAddress" :src="require('@/assets/img/position.png')" alt="" style="margin-right: 6px;vertical-align: middle"> |
|||
<span style="vertical-align: middle">{{ patientInfoObj.patientAddress }}</span> |
|||
</p> |
|||
</div> |
|||
<div class="see-docto-right"> |
|||
<el-tabs v-model="activeName" type="card" @tab-click="TabClick"> |
|||
<el-tab-pane label="初诊" name="1"> |
|||
<el-table |
|||
:data="tableData5" |
|||
:default-expand-all="true" |
|||
:span-method="objectSpanMethod" |
|||
style="width: 100%" |
|||
> |
|||
<el-table-column |
|||
label="初诊信息" |
|||
width="180" |
|||
prop="id" |
|||
/> |
|||
<el-table-column |
|||
label="眼别" |
|||
prop="name" |
|||
/> |
|||
<el-table-column |
|||
label="球镜" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="柱镜" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="轴向" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="矫正视力" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="瞳距" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="瞳高" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="眼轴" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="备注" |
|||
prop="desc" |
|||
/> |
|||
</el-table> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="复诊" name="2"> |
|||
<el-table |
|||
:data="tableData5" |
|||
:default-expand-all="true" |
|||
:span-method="objectSecondMethod" |
|||
style="width: 100%" |
|||
> |
|||
<el-table-column |
|||
label="复诊信息" |
|||
width="180" |
|||
prop="id" |
|||
/> |
|||
<el-table-column |
|||
label="眼别" |
|||
prop="name" |
|||
/> |
|||
<el-table-column |
|||
label="球镜" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="柱镜" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="轴向" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="矫正视力" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="瞳距" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="瞳高" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="眼轴" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="联合光度" |
|||
prop="desc" |
|||
/> |
|||
<el-table-column |
|||
label="备注" |
|||
prop="desc" |
|||
/> |
|||
</el-table> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="眼轴折线图" name="3"> |
|||
</el-tab-pane> |
|||
</el-tabs> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
|
|||
export default { |
|||
components: { |
|||
}, |
|||
props: { |
|||
patientId: { |
|||
type: String, |
|||
default: '' |
|||
}, |
|||
onlyRead: { |
|||
type: Boolean, |
|||
default: false |
|||
}, |
|||
isSearch: { |
|||
type: String, |
|||
default: '' |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
tableData5: [{ |
|||
id: '日期:2023.07.03', |
|||
name: '左眼', |
|||
category: '江浙小吃', |
|||
desc: '1.2', |
|||
address: '上海市', |
|||
shop: '王小虎', |
|||
shopId: '10333' |
|||
}, |
|||
{ |
|||
id: '日期', |
|||
name: '右眼', |
|||
category: '江浙小吃', |
|||
desc: '1.5', |
|||
address: '上海市路', |
|||
shop: '王小虎', |
|||
shopId: '10333' |
|||
}], |
|||
patientInfo: [], |
|||
patientInfoObj: {}, |
|||
activeName: '1', |
|||
pageParams: {} |
|||
} |
|||
}, |
|||
mounted() { |
|||
}, |
|||
created() { |
|||
this.getPatientInfo() |
|||
}, |
|||
methods: { |
|||
backList() { |
|||
this.$parent.detailViewVisible = false |
|||
this.$parent.reFresh() |
|||
}, |
|||
objectSpanMethod({ row, column, rowIndex, columnIndex }) { |
|||
if (columnIndex === 0 || columnIndex === 9) { |
|||
if (rowIndex % 2 === 0) { |
|||
return { |
|||
rowspan: 2, |
|||
colspan: 1 |
|||
} |
|||
} else { |
|||
return { |
|||
rowspan: 0, |
|||
colspan: 0 |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
objectSecondMethod({ row, column, rowIndex, columnIndex }) { |
|||
if (columnIndex === 0 || columnIndex === 10) { |
|||
if (rowIndex % 2 === 0) { |
|||
return { |
|||
rowspan: 2, |
|||
colspan: 1 |
|||
} |
|||
} else { |
|||
return { |
|||
rowspan: 0, |
|||
colspan: 0 |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
// 获取患者信息 |
|||
async getPatientInfo() { |
|||
this.$http.get('/patient/getPatientInfo', { |
|||
params: { |
|||
patientId: this.patientId |
|||
} |
|||
}).then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.patientInfoObj = res.data |
|||
} |
|||
}).catch(() => {}) |
|||
}, |
|||
TabClick(tab, event) { |
|||
if (tab.name === 'okLensRgp') { |
|||
this.$refs.okLensRgp.init() |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.see-doctor { |
|||
width: 100%; |
|||
height: 100%; |
|||
.header{ |
|||
width: 100%; |
|||
height: 88px; |
|||
padding: 8px; |
|||
position: relative; |
|||
margin-bottom: 16px; |
|||
box-sizing: border-box; |
|||
background: #FFFFFF; |
|||
border-radius: 4px; |
|||
.head-t{ |
|||
position: absolute; |
|||
left: 155px; |
|||
top: 20px; |
|||
} |
|||
.head-b{ |
|||
position: absolute; |
|||
left: 155px; |
|||
bottom: 20px; |
|||
font-size: 14px; |
|||
} |
|||
.head-r{ |
|||
margin-right: 16px; |
|||
font-weight: 500; |
|||
font-size: 20px; |
|||
color: rgba(0, 0, 0, 0.88); |
|||
} |
|||
} |
|||
.mr16{ |
|||
margin-right: 16px; |
|||
} |
|||
.see-docto-right{ |
|||
height: calc( 100vh - 90px - 82px); |
|||
overflow: hidden; |
|||
} |
|||
} |
|||
</style> |
|||
|
|||
<style lang="scss"> |
|||
.see-doctor { |
|||
.el-tabs__nav { |
|||
z-index:0; |
|||
} |
|||
.el-tabs__header { |
|||
margin: 0; |
|||
} |
|||
.el-tabs__nav { |
|||
background: #fff; |
|||
} |
|||
.el-tabs__content { |
|||
padding: 16px; |
|||
background: #fff; |
|||
height: calc( 100vh - 145px - 32px - 42px); |
|||
} |
|||
.el-tabs--card>.el-tabs__header .el-tabs__nav { |
|||
border: 1px solid #f0f0f0; |
|||
} |
|||
.el-tab-pane{ |
|||
height: 100%; |
|||
} |
|||
.detail-view { |
|||
height: 100%; |
|||
background: #0c1016; |
|||
padding: 0; |
|||
} |
|||
.detail-view .el-dialog .el-dialog__header > .el-dialog__title{ |
|||
color: #FFFFFF; |
|||
} |
|||
.detail-view .el-dialog > .el-dialog__header{ |
|||
width: 100%; |
|||
height: 48px; |
|||
line-height: 48px; |
|||
text-align: center; |
|||
background: linear-gradient(180deg,#0c1016, #2c3543 100%); |
|||
padding: 0; |
|||
} |
|||
.detail-view .el-dialog > .el-dialog__body{ |
|||
height: 100%; |
|||
flex: 1; |
|||
background: #0c1016; |
|||
padding: 0; |
|||
} |
|||
} |
|||
|
|||
</style> |
@ -0,0 +1,296 @@ |
|||
<template> |
|||
<el-dialog |
|||
class="patientDialog" |
|||
:visible.sync="visible" |
|||
width="40%" |
|||
:title="dataForm.title" |
|||
@close="closeDialog" |
|||
> |
|||
<el-form ref="dataForm" :model="dataForm" :rules="dataRule"> |
|||
<el-form-item label="登记号:" label-width="120px" prop="patientId" class="formItemOne"> |
|||
<el-input v-model="dataForm.patientId" placeholder="请输入登记号" /> |
|||
</el-form-item> |
|||
<el-form-item label="患者姓名:" label-width="120px" prop="patientName"> |
|||
<el-input v-model="dataForm.patientName" placeholder="请输入姓名" /> |
|||
</el-form-item> |
|||
<el-form-item label="身份证号:" label-width="120px" prop="patientIdNumber"> |
|||
<el-input v-model="dataForm.patientIdNumber" placeholder="请输入身份证号" @change="handleBirth" /> |
|||
</el-form-item> |
|||
<el-form-item label="出生日期:" label-width="120px" prop="patientBirthday"> |
|||
<el-date-picker |
|||
v-model="dataForm.patientBirthday" |
|||
align="right" |
|||
type="date" |
|||
placeholder="选择日期" |
|||
value-format="yyyy-MM-dd" |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="性别:" label-width="120px" prop="gender"> |
|||
<el-radio-group v-model="dataForm.patientSex" size="medium"> |
|||
<el-radio-button label="男">男</el-radio-button> |
|||
<el-radio-button label="女">女</el-radio-button> |
|||
<el-radio-button label="保密">保密</el-radio-button> |
|||
</el-radio-group> |
|||
</el-form-item> |
|||
<el-form-item label="联系电话:" label-width="120px" prop="patientPhone"> |
|||
<el-input v-model="dataForm.patientPhone" placeholder="请输入手机号" /> |
|||
</el-form-item> |
|||
<el-form-item label="家庭地址:" label-width="120px" prop="patientAddress"> |
|||
<el-input v-model="dataForm.patientAddress" placeholder="请输入地址" /> |
|||
</el-form-item> |
|||
<div style="border-bottom: 1px solid #ccc;margin-bottom: 20px" /> |
|||
<el-form-item required label="患者来源:" prop="patientSource" label-width="120px"> |
|||
<el-select v-model="dataForm.patientSource" placeholder="请选择患者来源"> |
|||
<el-option |
|||
v-for="item in sourceList" |
|||
:key="item.value" |
|||
:label="item.name" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="门诊医师:" prop="mzDoctorId" label-width="120px"> |
|||
<el-select v-model="dataForm.mzDoctorId" placeholder="请选择门诊医师"> |
|||
<el-option |
|||
v-for="item in mzDoctorList" |
|||
:key="item.id" |
|||
:label="item.realName" |
|||
:value="item.employeeId |
|||
" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="视光医师" prop="sgDoctorId" label-width="120px"> |
|||
<el-select v-model="dataForm.sgDoctorId" placeholder="请选择视光医师"> |
|||
<el-option |
|||
v-for="item in sgDoctorList" |
|||
:key="item.id" |
|||
:label="item.realName" |
|||
:value="item.employeeId |
|||
" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="眼别:" prop="zlEye" label-width="120px"> |
|||
<el-select v-model="dataForm.zlEye" placeholder="请选择眼别"> |
|||
<el-option v-for="item in zlEyeList" :key="item.value" :label="item.name" :value="item.value" /> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="医疗项目:" label-width="120px" prop="zlProjectCode"> |
|||
<el-select v-model="dataForm.zlProjectCode" multiple placeholder="请选择医疗项目"> |
|||
<el-option |
|||
v-for="item in projectList" |
|||
:key="item.itemId" |
|||
:label="item.itemName" |
|||
:value="item.itemId |
|||
" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="备注:" label-width="120px" prop="remarks"> |
|||
<el-input v-model="dataForm.remark" type="textarea" /> |
|||
</el-form-item> |
|||
</el-form> |
|||
<template slot="footer"> |
|||
<el-button @click="visible = false">{{ $t('cancel') }}</el-button> |
|||
<el-button :disabled="disabled" type="primary" @click="dataFormSubmitHandle()">{{ $t('confirm') }}</el-button> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import debounce from 'lodash/debounce' |
|||
import { isMobile, isIDNumber } from '@/utils/validate' |
|||
export default { |
|||
data() { |
|||
return { |
|||
disabled: false, |
|||
visible: false, |
|||
dataForm: { |
|||
registerType: 1, |
|||
// platform: 3, |
|||
patientId: '', |
|||
patientName: '', |
|||
patientIdNumber: '', |
|||
patientSex: '男', |
|||
patientPhone: '', |
|||
patientAddress: '', |
|||
patientBirthday: '', |
|||
mzDoctorId: '', // 门诊医师 |
|||
sgDoctorId: '', // 视光医师 |
|||
patientSource: '', |
|||
zlEye: 'ou', |
|||
zlProjectCode: [], |
|||
visitId: '', |
|||
remark: '' |
|||
}, |
|||
zlEyeList: [ |
|||
{ name: '左眼', value: 'os' }, |
|||
{ name: '右眼', value: 'od' }, |
|||
{ name: '双眼', value: 'ou' } |
|||
], |
|||
sourceList: [{ |
|||
name: '门诊', |
|||
value: '门诊' |
|||
}, { |
|||
name: '住院', |
|||
value: '住院' |
|||
} |
|||
], |
|||
params: {}, |
|||
mzDoctorList: [], |
|||
sgDoctorList: [], |
|||
projectList: [] |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule() { |
|||
var validataMobile = (rule, value, callback) => { |
|||
if (value && !isMobile(value)) { |
|||
return callback(new Error('您输入的手机号格式不正确')) |
|||
} |
|||
callback() |
|||
} |
|||
var validataIDNumber = (rule, value, callback) => { |
|||
if (value && !isIDNumber(value)) { |
|||
return callback(new Error('您输入的身份证格式不正确')) |
|||
} else if (!value) { |
|||
return callback(new Error('请输入身份证号')) |
|||
} |
|||
callback() |
|||
} |
|||
return { |
|||
patientId: [ |
|||
{ required: true, message: '请输入登记号', trigger: 'blur' } |
|||
], |
|||
patientName: [ |
|||
{ required: true, message: '请输入患者姓名', trigger: 'blur' } |
|||
], |
|||
patientIdNumber: [ |
|||
{ validator: validataIDNumber, trigger: 'blur' } |
|||
], |
|||
sgDoctorId: [ |
|||
{ required: false, message: '请选择视光医师', trigger: 'blur' } |
|||
], |
|||
patientSource: [ |
|||
{ required: true, message: '请选择患者来源', trigger: 'blur' } |
|||
] |
|||
} |
|||
} |
|||
}, |
|||
methods: { |
|||
init() { |
|||
this.visible = true |
|||
this.dataForm.registerType = 1 |
|||
this.getDoctorList('视光医师') |
|||
this.getDoctorList('门诊医师') |
|||
this.getProject() |
|||
this.$nextTick(() => { |
|||
this.$refs.dataForm.resetFields() // 重置表单 |
|||
if (this.params.patientId && this.dataForm.title !== 'HIS引入') { |
|||
this.dataForm = { |
|||
title: this.dataForm.title, |
|||
...this.params |
|||
} |
|||
} else if (this.dataForm.title === 'HIS引入') { |
|||
this.getHisInfo() |
|||
} |
|||
}) |
|||
}, |
|||
handleBirth(value) { |
|||
if (value) { |
|||
const year = value.substr(6, 4) |
|||
const month = value.substr(10, 2) |
|||
const day = value.substr(12, 2) |
|||
this.dataForm.patientBirthday = `${year}-${month}-${day}` |
|||
} |
|||
}, |
|||
// 获取医师列表 |
|||
getDoctorList(val) { |
|||
this.$http.get('/sys/user', { params: { position: val }}).then(data => { |
|||
if (val === '视光医师') { |
|||
this.sgDoctorList = data.data.data |
|||
} else { |
|||
this.mzDoctorList = data.data.data |
|||
} |
|||
// this.dataForm.sgDoctorId = JSON.parse(window.sessionStorage.getItem('qg-userData')).employeeId |
|||
}) |
|||
}, |
|||
// 获取项目列表 |
|||
getProject() { |
|||
this.$http.get('/patient/getZlItemDict', { params: { type: this.dataForm.platform }}).then(data => { |
|||
this.projectList = data.data.data |
|||
}) |
|||
}, |
|||
// 获取His信息 |
|||
getHisInfo() { |
|||
this.dataForm = { ...this.dataForm, ...this.params } |
|||
this.dataForm.revisitCycles = this.dataForm.revisitCycles ? this.dataForm.revisitCycles : '1' |
|||
this.dataForm.revisitCyclesUnit = this.dataForm.revisitCyclesUnit ? this.dataForm.revisitCyclesUnit : '3' |
|||
this.dataForm.registerType = 0 |
|||
}, |
|||
// 表单提交 |
|||
dataFormSubmitHandle: debounce(function() { |
|||
this.disabled = true |
|||
this.$refs.dataForm.validate((valid) => { |
|||
if (!valid) { |
|||
this.disabled = false |
|||
return false |
|||
} |
|||
this.dataForm.zlProjectCode = this.dataForm.zlProjectCode.length && this.dataForm.zlProjectCode.join(',') |
|||
this.$http[!this.dataForm.id ? 'post' : 'put']('/patient/savePatient', this.dataForm) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} |
|||
this.$message({ |
|||
message: this.$t('prompt.success'), |
|||
type: 'success', |
|||
duration: 500, |
|||
onClose: () => { |
|||
this.visible = false |
|||
this.$emit('refreshDataList') |
|||
} |
|||
}) |
|||
}) |
|||
.catch(() => {}) |
|||
.finally(() => { this.disabled = false }) |
|||
}) |
|||
}, 1000, { leading: true, trailing: false }), |
|||
// 关闭弹框 |
|||
closeDialog() { |
|||
this.$emit('closeDialog') |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
.patientDialog { |
|||
.cycle-display { |
|||
.el-form-item__content { |
|||
display: flex; |
|||
} |
|||
.el-input-number { |
|||
width: 100px; |
|||
margin-right: 16px; |
|||
} |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
<style lang="scss"> |
|||
.patientDialog { |
|||
.el-dialog__header { |
|||
margin-bottom:12px |
|||
} |
|||
.el-dialog__body { |
|||
padding-right: 30px; |
|||
} |
|||
.formItemOne .el-form-item__content { |
|||
display: flex; |
|||
} |
|||
.el-date-editor.el-input, .el-date-editor.el-input__inner { |
|||
width: 100%; |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue