From 950ce42a05ce883d3373d9a89000608836e14159 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期五, 08 十一月 2024 15:26:47 +0800
Subject: [PATCH] 预约签到界面合并
---
src/views/ecg/appointment/CheckItemPanel.vue | 55 +++++++++++++
src/api/ecg/appointment/index.ts | 2
src/views/ecg/appointment/AppointmentConfirm.vue | 147 ++++++++++++++++--------------------
src/utils/formatter.ts | 5 +
4 files changed, 127 insertions(+), 82 deletions(-)
diff --git a/src/api/ecg/appointment/index.ts b/src/api/ecg/appointment/index.ts
index bbcd7eb..836edaa 100644
--- a/src/api/ecg/appointment/index.ts
+++ b/src/api/ecg/appointment/index.ts
@@ -3,6 +3,8 @@
// 棰勭害 VO
export interface AppointmentVO {
id: number,
+ applyNo: string
+ patSrc: number
patId: string // 鎮h�呯紪鍙�
patName: string // 鎮h�呭鍚�
patGender: number // 鎮h�呮�у埆
diff --git a/src/utils/formatter.ts b/src/utils/formatter.ts
index 6931319..02bcb56 100644
--- a/src/utils/formatter.ts
+++ b/src/utils/formatter.ts
@@ -9,3 +9,8 @@
export function PrefixInteger(num, length) {
return (Array(length).join('0') + num).slice(-length);
}
+
+export function formatTimeslot(timeslot: number): string {
+ const strTimeslot = PrefixInteger( timeslot, 8 )
+ return strTimeslot.slice(0,2) + ":" + strTimeslot.slice(2,4) + ' ~ ' + strTimeslot.slice(4,6) + ":" + strTimeslot.slice(6,8)
+}
diff --git a/src/views/ecg/appointment/AppointmentConfirm.vue b/src/views/ecg/appointment/AppointmentConfirm.vue
index 8ff1564..badefc0 100644
--- a/src/views/ecg/appointment/AppointmentConfirm.vue
+++ b/src/views/ecg/appointment/AppointmentConfirm.vue
@@ -1,9 +1,15 @@
<template>
- <el-form-item label="鎮h�呯紪鍙�">
- <el-input v-model="queryParams.patId" placeholder="璇疯緭鍏ユ偅鑰呯紪鍙�" clearable @input="searchBookInfo"/>
- </el-form-item>
+ <div style="display: flex; justify-content: center; ">
+ <el-form-item label="鎮h�呯紪鍙�" >
+ <el-input v-model="queryParams.patId" placeholder="璇疯緭鍏ユ偅鑰呯紪鍙�" clearable @input="searchBookInfo" />
+ </el-form-item>
+ </div>
- <el-button @click="_confirmAppointment"><Icon icon="ep:refresh" class="mr-5px" /> 鎺掗槦 </el-button>
+ <div style="display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 20px">
+ <div v-for="_appointment in appointmentVOList" :key="_appointment.applyNo">
+ <CheckItemPanel :appointment="_appointment" />
+ </div>
+ </div>
<el-divider/>
@@ -15,95 +21,66 @@
>
<div class="form-row">
<el-form-item label="鎮h�呭鍚�" prop="patName">
- <el-input v-model="formData.patName" placeholder="璇疯緭鍏ユ偅鑰呭鍚�" />
+ <el-input v-model="formData.patName" placeholder="鎮h�呭鍚�" readonly />
</el-form-item>
- </div>
- <div class="form-row">
<el-form-item label="鎮h�呮�у埆" prop="patGender">
- <el-radio-group v-model="formData.patGender">
+ <el-radio-group v-model="formData.patGender" readonly>
<el-radio
- v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
- :key="dict.value"
- :value="dict.value"
+ v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
+ :key="dict.value"
+ :value="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="鎮h�呯敓鏃�" prop="patBirthday">
<el-date-picker
- v-model="formData.patBirthday"
- type="date"
- value-format="x"
- placeholder="閫夋嫨鎮h�呯敓鏃�"
+ v-model="formData.patBirthday"
+ type="date"
+ value-format="x"
+ placeholder="閫夋嫨鎮h�呯敓鏃�"
+ readonly
/>
</el-form-item>
- <el-form-item label="鎮h�呮墜鏈�" prop="patMobile">
- <el-input v-model="formData.patMobile" placeholder="璇疯緭鍏ユ偅鑰呮墜鏈�" />
- </el-form-item>
</div>
<div class="form-row">
- <el-form-item label="鎮h�呯數璇�" prop="patPhone">
+ <el-form-item label="鎮h�呮墜鏈�" prop="patMobile" >
+ <el-input v-model="formData.patMobile" placeholder="璇疯緭鍏ユ偅鑰呮墜鏈�" readonly />
+ </el-form-item>
+<!--
+ <el-form-item label="鎮h�呯數璇�" prop="patPhone" readonly>
<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 label="韬唤璇佸彿" prop="patIdentityId" >
+ <el-input v-model="formData.patIdentityId" placeholder="璇疯緭鍏ヨ韩浠借瘉鍙�" readonly />
</el-form-item>
</div>
<div class="form-row">
- <el-form-item label="鎮h�呭湴鍧�" prop="patAddr">
- <el-input v-model="formData.patAddr" placeholder="璇疯緭鍏ユ偅鑰呭湴鍧�" />
- </el-form-item>
- <el-form-item label="绉戝浠g爜" 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="鐥呭尯浠g爜" prop="patWardCode">
+<!--
+ <el-form-item label="鐥呭尯浠g爜" prop="patWardCode" readonly>
<el-input v-model="formData.patWardCode" placeholder="璇疯緭鍏ョ梾鍖轰唬鐮�" />
</el-form-item>
+-->
+ <el-form-item label="鐥呭尯鍚嶇О" prop="patWardDesc" >
+ <el-input v-model="formData.patWardDesc" placeholder="璇疯緭鍏ョ梾鍖哄悕绉�" readonly />
+ </el-form-item>
+ <el-form-item label="搴婂彿" prop="patBedNo" >
+ <el-input v-model="formData.patBedNo" placeholder="璇疯緭鍏ュ簥鍙�" readonly />
+ </el-form-item>
</div>
<div class="form-row">
- <el-form-item label="鐥呭尯鍚嶇О" prop="patWardDesc">
- <el-input v-model="formData.patWardDesc" placeholder="璇疯緭鍏ョ梾鍖哄悕绉�" />
+ <!--
+ <el-form-item label="绉戝浠g爜" prop="patDeptCode" readonly>
+ <el-input v-model="formData.patDeptCode" placeholder="璇疯緭鍏ョ瀹や唬鐮�" />
+ </el-form-item>
+ -->
+ <el-form-item label="绉戝鍚嶇О" prop="patDeptDesc" >
+ <el-input v-model="formData.patDeptDesc" placeholder="璇疯緭鍏ョ瀹ゅ悕绉�" readonly/>
</el-form-item>
- <el-form-item label="搴婂彿" prop="patBedNo">
- <el-input v-model="formData.patBedNo" placeholder="璇疯緭鍏ュ簥鍙�" />
+ <el-form-item label="鎮h�呭湴鍧�" prop="patAddr">
+ <el-input v-model="formData.patAddr" placeholder="璇疯緭鍏ユ偅鑰呭湴鍧�" readonly/>
</el-form-item>
</div>
</el-form>
@@ -112,6 +89,8 @@
import {DICT_TYPE, getIntDictOptions} from '@/utils/dict'
import { AppointmentApi, AppointmentVO } from '@/api/ecg/appointment'
import {useCheckTypeStore} from "@/store/modules/checkType";
+import CheckItemPanel from "@/views/ecg/appointment/CheckItemPanel.vue";
+import {RoomStatus} from "@/components/RoomStatus";
/** 棰勭害纭 琛ㄥ崟 */
defineOptions({ name: 'AppointmentConfirm' })
@@ -124,8 +103,12 @@
patId: undefined
})
+const appointmentVOList = ref<AppointmentVO[]>([])
+
const formData = ref<AppointmentVO>({
id: 0,
+ applyNo: "",
+ patSrc: 0,
patId: "",
patName: "",
patGender: 1, // 1 鐢� 2 濂�
@@ -142,7 +125,7 @@
bookId: "",
bookTime: new Date(),
bookDate: new Date(),
- bookTimeslot: 9000930,
+ bookTimeslot: 9301030,
bookCheckType: checkTypeStore.getCheckTypeName(100)
})
const formRef = ref() // 琛ㄥ崟 Ref
@@ -155,8 +138,10 @@
const data = await AppointmentApi.queryAndCreateAppointmentByPatId(queryParams.patId) // 瀵瑰簲鏁版嵁搴撲腑 pat_id
console.info( data )
+ appointmentVOList.value = data
if (null !== data) {
- formData.value = data
+ formData.value = data[0]
+ console.info( formData.value )
return
}
@@ -167,19 +152,12 @@
})
}
-const _confirmAppointment = async () => {
- const data = await AppointmentApi.confirmAppointment(formData.value)
- ElNotification({
- title: '娓╅Θ鎻愮ず',
- message: data,
- type: 'warning'
- })
-}
-
/** 閲嶇疆琛ㄥ崟 */
const resetForm = () => {
formData.value = {
id: 0,
+ applyNo: "",
+ patSrc: 0,
patId: "",
patName: "",
patGender: 1, // 1 鐢� 2 濂�
@@ -196,8 +174,8 @@
bookId: "",
bookTime: new Date(),
bookDate: new Date(),
- bookTimeslot: 9000930,
- bookCheckType: 10
+ bookTimeslot: 9301030,
+ bookCheckType: checkTypeStore.getCheckTypeName(100)
}
formRef.value?.resetFields()
}
@@ -213,4 +191,9 @@
.two-column-form .form-row .el-form-item {
width: 48%;
}
+
+.el-form-item {
+ margin-bottom: 5px;
+}
+
</style>
diff --git a/src/views/ecg/appointment/CheckItemPanel.vue b/src/views/ecg/appointment/CheckItemPanel.vue
new file mode 100644
index 0000000..58dd1ff
--- /dev/null
+++ b/src/views/ecg/appointment/CheckItemPanel.vue
@@ -0,0 +1,55 @@
+<script setup lang="ts">
+import {defineComponent, PropType} from "vue";
+import {useCheckTypeStore} from "@/store/modules/checkType";
+import {AppointmentApi, AppointmentVO} from "@/api/ecg/appointment";
+import {dateFormatter2, formatDate} from "@/utils/formatTime";
+import {formatTimeslot} from "@/utils/formatter";
+
+defineComponent({
+ name: 'CheckItemPanel'
+})
+
+const props = defineProps({
+ appointment: {
+ type: Object as PropType<AppointmentVO>,
+ required: true
+ }
+})
+
+const checkTypeStore = useCheckTypeStore();
+
+const _confirmAppointment = async () => {
+ const data = await AppointmentApi.confirmAppointment(props.appointment)
+ ElNotification({
+ title: '娓╅Θ鎻愮ず',
+ message: data,
+ type: 'warning'
+ })
+}
+
+</script>
+
+<template>
+ <el-card style="width: 200px" shadow="hover" >
+ <template #header>{{checkTypeStore.getCheckTypeName(appointment.bookCheckType)}}</template>
+ <div>{{formatDate(appointment.bookDate, 'YYYY-MM-DD')}}</div>
+ <div>{{formatTimeslot(appointment.bookTimeslot)}}</div>
+ <el-divider/>
+ <el-button type="primary" @click="_confirmAppointment"><Icon icon="ep:refresh" class="mr-5px" /> 鎺掗槦 </el-button>
+ </el-card>
+</template>
+
+<style scoped lang="scss">
+.el-card ::v-deep {
+ .el-card__header {
+ background-color: var(--el-color-primary-light-3);
+ padding: 2px;
+ text-align: center;
+ }
+ .el-card__body {
+ //background-color: var(--el-color-primary-light-3);
+ padding: 4px;
+ text-align: center;
+ }
+}
+</style>
--
Gitblit v1.9.3