<template>
|
<el-form-item label="患者编号">
|
<el-input v-model="queryParams.patId" placeholder="请输入患者编号" clearable @input="searchBookInfo"/>
|
</el-form-item>
|
|
<el-button @click="_confirmAppointment"><Icon icon="ep:refresh" class="mr-5px" /> 排队 </el-button>
|
|
<el-divider/>
|
|
<el-form
|
ref="formRef"
|
:model="formData"
|
label-width="100px"
|
class="two-column-form"
|
>
|
<div class="form-row">
|
<el-form-item label="患者姓名" prop="patName">
|
<el-input v-model="formData.patName" placeholder="请输入患者姓名" />
|
</el-form-item>
|
</div>
|
<div class="form-row">
|
<el-form-item label="患者性别" prop="patGender">
|
<el-radio-group v-model="formData.patGender">
|
<el-radio
|
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
|
:key="dict.value"
|
:label="dict.value"
|
>
|
{{ dict.label }}
|
</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="预约日期" prop="bookDate">
|
<el-date-picker
|
v-model="formData.bookDate"
|
type="date"
|
value-format="x"
|
placeholder="选择预约日期"
|
/>
|
</el-form-item>
|
</div>
|
<div class="form-row">
|
<el-form-item label="预约时间段" prop="bookTimeslot">
|
<el-select v-model="formData.bookTimeslot" placeholder="请选择预约时间段">
|
<el-option
|
v-for="dict in getIntDictOptions(DICT_TYPE.ECG_BOOK_TIMESLOT)"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
/>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="预约检查类型" prop="bookCheckType">
|
<el-select v-model="formData.bookCheckType" placeholder="请选择预约检查类型">
|
<el-option
|
v-for="dict in checkTypeStore.getCheckTypeOptions()"
|
:key="dict.value"
|
:label="dict.label"
|
:value="dict.value"
|
/>
|
</el-select>
|
</el-form-item>
|
</div>
|
<div class="form-row">
|
<el-form-item label="患者生日" prop="patBirthday">
|
<el-date-picker
|
v-model="formData.patBirthday"
|
type="date"
|
value-format="x"
|
placeholder="选择患者生日"
|
/>
|
</el-form-item>
|
<el-form-item label="患者手机" prop="patMobile">
|
<el-input v-model="formData.patMobile" placeholder="请输入患者手机" />
|
</el-form-item>
|
</div>
|
<div class="form-row">
|
<el-form-item label="患者电话" prop="patPhone">
|
<el-input v-model="formData.patPhone" placeholder="请输入患者电话" />
|
</el-form-item>
|
<el-form-item label="身份证号" prop="patIdentityId">
|
<el-input v-model="formData.patIdentityId" placeholder="请输入身份证号" />
|
</el-form-item>
|
</div>
|
<div class="form-row">
|
<el-form-item label="患者地址" prop="patAddr">
|
<el-input v-model="formData.patAddr" placeholder="请输入患者地址" />
|
</el-form-item>
|
<el-form-item label="患者所在科室代码" prop="patDeptCode">
|
<el-input v-model="formData.patDeptCode" placeholder="请输入患者所在科室代码" />
|
</el-form-item>
|
</div>
|
<div class="form-row">
|
<el-form-item label="患者所在科室名称" prop="patDeptDesc">
|
<el-input v-model="formData.patDeptDesc" placeholder="请输入患者所在科室名称" />
|
</el-form-item>
|
<el-form-item label="患者所在病区代码" prop="patWardCode">
|
<el-input v-model="formData.patWardCode" placeholder="请输入患者所在病区代码" />
|
</el-form-item>
|
</div>
|
<div class="form-row">
|
<el-form-item label="患者所在病区名称" prop="patWardDesc">
|
<el-input v-model="formData.patWardDesc" placeholder="请输入患者所在病区名称" />
|
</el-form-item>
|
<el-form-item label="床号" prop="patBedNo">
|
<el-input v-model="formData.patBedNo" placeholder="请输入床号" />
|
</el-form-item>
|
</div>
|
</el-form>
|
</template>
|
<script setup lang="ts">
|
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
|
import { AppointmentApi, AppointmentVO } from '@/api/ecg/appointment'
|
import {useCheckTypeStore} from "@/store/modules/checkType";
|
|
/** 预约确认 表单 */
|
defineOptions({ name: 'AppointmentConfirm' })
|
|
const checkTypeStore = useCheckTypeStore();
|
|
const message = useMessage() // 消息弹窗
|
|
const loading = ref(true) // 列表的加载中
|
const list = ref<AppointmentVO[]>([]) // 列表的数据
|
const total = ref(0) // 列表的总页数
|
const queryParams = reactive({
|
pageNo: 1,
|
pageSize: 10,
|
patId: undefined
|
})
|
|
const formData = ref<AppointmentVO>({
|
id: 0,
|
patId: "",
|
patName: "",
|
patGender: 1, // 1 男 2 女
|
patBirthday: new Date(),
|
patMobile: "",
|
patPhone: "",
|
patIdentityId: "",
|
patAddr: "",
|
patDeptCode: "",
|
patDeptDesc: "",
|
patWardCode: "",
|
patWardDesc: "",
|
patBedNo: "",
|
bookId: "",
|
bookTime: new Date(),
|
bookDate: new Date(),
|
bookTimeslot: 9000930,
|
bookCheckType: 10
|
})
|
const formRef = ref() // 表单 Ref
|
|
const searchBookInfo = async () => {
|
resetForm()
|
total.value = 0
|
list.value = []
|
|
await getList()
|
if (total.value === 1) {
|
formData.value = list.value[0]
|
return
|
}
|
message.notify("请先预约!")
|
}
|
|
/** 查询列表 */
|
const getList = async () => {
|
loading.value = true
|
try {
|
const data = await AppointmentApi.getAppointmentPage(queryParams)
|
list.value = data.list
|
total.value = data.total
|
} finally {
|
loading.value = false
|
}
|
}
|
|
const _confirmAppointment = async () => {
|
const data = await AppointmentApi.confirmAppointment(formData.value)
|
ElNotification({
|
title: '温馨提示',
|
message: data,
|
type: 'warning'
|
})
|
}
|
|
/** 重置表单 */
|
const resetForm = () => {
|
formData.value = {
|
id: 0,
|
patId: "",
|
patName: "",
|
patGender: 1, // 1 男 2 女
|
patBirthday: new Date(),
|
patMobile: "",
|
patPhone: "",
|
patIdentityId: "",
|
patAddr: "",
|
patDeptCode: "",
|
patDeptDesc: "",
|
patWardCode: "",
|
patWardDesc: "",
|
patBedNo: "",
|
bookId: "",
|
bookTime: new Date(),
|
bookDate: new Date(),
|
bookTimeslot: 9000930,
|
bookCheckType: 10
|
}
|
formRef.value?.resetFields()
|
}
|
</script>
|
|
<style lang="scss" scoped>
|
.two-column-form .form-row {
|
display: flex;
|
justify-content: space-between;
|
margin-bottom: 20px;
|
}
|
|
.two-column-form .form-row .el-form-item {
|
width: 48%;
|
}
|
</style>
|