Browse Source

peter

360view
newPeter7 2 years ago
parent
commit
b60c70ae55
  1. 18
      src/components/360View/commonForm/eyesVision.vue
  2. 1
      src/components/360View/commonForm/threeVision.vue
  3. 167
      src/page-subspecialty/views/modules/optometryManagement/outFocusEye/HIS-add.vue
  4. 113
      src/page-subspecialty/views/modules/optometryManagement/outFocusEye/editPatid.vue
  5. 233
      src/page-subspecialty/views/modules/optometryManagement/outFocusEye/index.vue
  6. 328
      src/page-subspecialty/views/modules/optometryManagement/outFocusEye/outDetail.vue
  7. 296
      src/page-subspecialty/views/modules/optometryManagement/outFocusEye/patient-add-or-update.vue

18
src/components/360View/commonForm/eyesVision.vue

@ -20,10 +20,10 @@
</div>
<div class="operation-record-table eyesTable">
<el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 100%; margin-top: 20px">
<el-table-column label="" width="200" align="center" :resizable="false">
<el-table-column label="" width="180" align="center" :resizable="false">
<template slot-scope="scope">
<div v-if="scope.row.name == '1'">
<div class="width-120 center" style="display: flex">
<div class="center" style="display: flex">
<el-input v-model="formData.qgztOs1" placeholder="">
<template slot="prepend">OS:</template>
</el-input>
@ -38,7 +38,7 @@
<div v-else-if="scope.row.name == '集合近点(NPC)'">
<p>{{ scope.row.name }}</p>
<div style="border-top: 1px solid #D9D9D9;display: flex;flex-wrap: wrap;margin: 3px 0">
<div v-for="(item,index) in npcList" :key="index" class="check" style="margin: 0 10px 0 16px;font-size: 14px" @click="item.isSelect = !item.isSelect">
<div v-for="(item,index) in npcList" :key="index" class="check" style="margin: 0 10px 0 6px;font-size: 14px" @click="item.isSelect = !item.isSelect">
<input type="checkbox" :checked="item.isSelect">
<div>{{ item.name }}</div>
</div>
@ -47,7 +47,7 @@
<div v-else-if="scope.row.name == '梯度性AC/A'">
<p>{{ scope.row.name }}</p>
<div style="border-top: 1px solid #D9D9D9;display: flex;flex-wrap: wrap;margin: 3px 0">
<div v-for="(item,index) in acaList" :key="index" class="check" style="margin: 0 12px 0 20px;font-size: 14px" @click="item.isSelect = !item.isSelect">
<div v-for="(item,index) in acaList" :key="index" class="check" style="margin: 0 12px 0 10px;font-size: 14px" @click="item.isSelect = !item.isSelect">
<input type="checkbox" :checked="item.isSelect">
<div>{{ item.name }}</div>
</div>
@ -56,7 +56,7 @@
<div v-else-if="scope.row.name == '调节幅度(AMP)'">
<p>{{ scope.row.name }}</p>
<div style="border-top: 1px solid #D9D9D9;display: flex;flex-wrap: wrap;margin: 3px 0">
<div v-for="(item,index) in ampList" :key="index" class="check" style="margin: 0 12px 0 16px;font-size: 14px" @click="item.isSelect = !item.isSelect">
<div v-for="(item,index) in ampList" :key="index" class="check" style="margin: 0 12px 0 6px;font-size: 14px" @click="item.isSelect = !item.isSelect">
<input type="checkbox" :checked="item.isSelect">
<div>{{ item.name }}</div>
</div>
@ -96,7 +96,7 @@
<p v-else>{{ scope.row.name }}</p>
</template>
</el-table-column>
<el-table-column label="" width="" :resizable="false" prop="type">
<el-table-column label="" width="240" :resizable="false" prop="type">
<template slot-scope="scope">
<div v-if="scope.row.name==='检查项目'" style="text-align: center">检查结果</div>
<div v-if="scope.row.name == '1'">
@ -396,7 +396,7 @@
/>
</el-select>
@N(
<el-input v-model="formData.worth4" placeholder="" style="width: 100px" />
<el-input v-model="formData.worth4" placeholder="" style="width: 90px" />
)
</div>
</div>
@ -773,11 +773,11 @@ export default {
id: '1'
},
{
name: '200“',
name: '240“',
id: '2'
},
{
name: '100“',
name: '120“',
id: '3'
},
{

1
src/components/360View/commonForm/threeVision.vue

@ -584,6 +584,7 @@
:value="item.name"
/>
</el-select>
<span>@40cm</span>
</div>
</div>
<div v-if="scope.row.name == '检查画片' && scope.row.type == '1'">

167
src/page-subspecialty/views/modules/optometryManagement/outFocusEye/HIS-add.vue

@ -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>

113
src/page-subspecialty/views/modules/optometryManagement/outFocusEye/editPatid.vue

@ -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>

233
src/page-subspecialty/views/modules/optometryManagement/outFocusEye/index.vue

@ -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>

328
src/page-subspecialty/views/modules/optometryManagement/outFocusEye/outDetail.vue

@ -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>

296
src/page-subspecialty/views/modules/optometryManagement/outFocusEye/patient-add-or-update.vue

@ -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…
Cancel
Save