From 396fa3839bc63329feab4e2d143a64e944dd106d Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期四, 19 九月 2024 17:15:22 +0800
Subject: [PATCH] 重叫功能 完成

---
 src/views/ecg/callingscreen/bigscreen.vue |   50 +++++--------------------
 src/api/ecg/call/index.ts                 |   55 +++++++++++++++++++++++++++
 src/views/ecg/doctor/index.vue            |    8 ++--
 src/api/ecg/doctor/index.ts               |    5 ++
 4 files changed, 74 insertions(+), 44 deletions(-)

diff --git a/src/api/ecg/call/index.ts b/src/api/ecg/call/index.ts
new file mode 100644
index 0000000..3b0d2fb
--- /dev/null
+++ b/src/api/ecg/call/index.ts
@@ -0,0 +1,55 @@
+import request from '@/config/axios'
+
+// 鍙彿 VO
+export interface CallVO {
+  id: number // id
+  patId: string // 鎮h�呯紪鍙�
+  patName: string // 鎮h�呭鍚�
+  patGender: number // 鎮h�呮�у埆
+  seqNum: number // 鎺掗槦搴忓彿
+  passed: number // 杩囧彿鏍囪
+  expired: number // 棰勭害杩囨湡鏍囪
+  called: number // 鍙彿鐘舵�� 0 鏈挱 1 宸叉挱 
+  jumpFlag: number // 鎻掗槦鏍囪
+  roomId: number // 璇婂缂栧彿
+  roomName: string // 璇婂鍚嶇О
+  bedNo: string // 璇婄枟搴婄紪鍙�
+}
+
+// 鍙彿 API
+export const CallApi = {
+  // 鏌ヨ鍙彿鍒嗛〉
+  getCallPage: async (params: any) => {
+    return await request.get({ url: `/ecg/call/page`, params })
+  },
+
+  // 鏌ヨ鍙彿璇︽儏
+  getCall: async (id: number) => {
+    return await request.get({ url: `/ecg/call/get?id=` + id })
+  },
+
+  // 鏂板鍙彿
+  createCall: async (data: CallVO) => {
+    return await request.post({ url: `/ecg/call/create`, data })
+  },
+
+  // 淇敼鍙彿
+  updateCall: async (data: CallVO) => {
+    return await request.put({ url: `/ecg/call/update`, data })
+  },
+
+  // 鍒犻櫎鍙彿
+  deleteCall: async (id: number) => {
+    return await request.delete({ url: `/ecg/call/delete?id=` + id })
+  },
+
+  // 瀵煎嚭鍙彿 Excel
+  exportCall: async (params) => {
+    return await request.download({ url: `/ecg/call/export-excel`, params })
+  },
+
+  // 鑾峰彇涓嬩竴鍙彿
+  getNextCall: async () => {
+    return await request.get({ url: `/ecg/call/next` })
+  }
+}
diff --git a/src/api/ecg/doctor/index.ts b/src/api/ecg/doctor/index.ts
index 4f6e59a..893ad83 100644
--- a/src/api/ecg/doctor/index.ts
+++ b/src/api/ecg/doctor/index.ts
@@ -58,6 +58,11 @@
     return await request.get({ url: `/ecg/doctor/pass-next-patient`, params })
   },
 
+  // 閲嶅彨
+  callAgainPatient: async (params: RoomBedVO) => {
+    return await request.get({ url: `/ecg/doctor/call-again`, params })
+  },
+
   // 鍙栧垵濮嬫偅鑰呭垪琛�
   getPatientList: async (params: RoomBedVO) => {
     return await request.get({ url: `/ecg/doctor/get-patient-list`, params })
diff --git a/src/views/ecg/callingscreen/bigscreen.vue b/src/views/ecg/callingscreen/bigscreen.vue
index 7387ef3..a59b1b8 100644
--- a/src/views/ecg/callingscreen/bigscreen.vue
+++ b/src/views/ecg/callingscreen/bigscreen.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 
-import dayjs from 'dayjs'
 import {ScreenApi, statusMap, CallingVO} from "@/api/ecg/screen";
+import {CallApi, CallVO} from "@/api/ecg/call";
 
 defineOptions({ name: 'bigscreen' })
 
@@ -9,9 +9,7 @@
 const listWaiting = ref<CallingVO[]>([]) // 鍒楄〃鐨勬暟鎹�
 const listPassed = ref<CallingVO[]>([]) //
 
-let curSpeakPat : CallingVO | undefined = undefined;
-let curSpeakSeqNum : number = 0
-let curWorkDay : Date | undefined = undefined
+let curSpeakPat : CallVO | null = null;
 
 const getList = async () => {
   const data = await ScreenApi.getBigScreenData()
@@ -23,7 +21,7 @@
 const startScrolling = () => {
   setInterval(() => {
     getList();
-    if ( curSpeakPat === undefined ) {
+    if ( curSpeakPat === null ) {
       initiateSpeak()
     }
   }, 5000); // 姣廥绉掓粴鍔ㄤ竴娆�
@@ -35,35 +33,16 @@
 
 const onSpeachEndEvent = async (event) => {
   console.log("Speech ended... " + event.currentTarget.text);
-  await ScreenApi.markCalled(curSpeakPat!.patId)
+  curSpeakPat!.called = 1
+  await CallApi.updateCall(curSpeakPat!)
   initiateSpeak()
 }
 
-const getNextSpeak = () => {
-  if (listReady.value.length === 0) {
-    return undefined;
-  }
-
-  // 澶勭悊姣忓ぉ 鍙嶈浆鐨勬儏鍐�
-  if ( curWorkDay === undefined) {
-    curSpeakSeqNum = 0;
-    curWorkDay = new Date()
-  } else if (!isSameDate(dayjs(listReady.value[0].bookDate).toDate(), curWorkDay)) {
-    curSpeakSeqNum = 0;
-    curWorkDay = dayjs(listReady.value[0].bookDate).toDate()
-  }
-
-  return listReady.value.find( item => item.status === 30 && item.called === 0 && item.seqNum > curSpeakSeqNum)
-}
-
-const initiateSpeak = () => {
-  const queuePat = getNextSpeak()
-  if (queuePat !== undefined) {
-    curSpeakPat = queuePat
-    curSpeakSeqNum = curSpeakPat.seqNum
-    speak("璇枫��" + queuePat.patName + "鍒�" + queuePat.roomName + "灏辫瘖");
-  } else {
-    curSpeakPat = undefined
+const initiateSpeak = async () => {
+  curSpeakPat = await CallApi.getNextCall()
+  console.info( curSpeakPat )
+  if (curSpeakPat !== null) {
+    speak("璇枫��" + curSpeakPat.patName + "鍒�" + curSpeakPat.roomName + "灏辫瘖");
   }
 }
 
@@ -78,15 +57,6 @@
 
   speech.onend = onSpeachEndEvent
   speechSynthesis.speak(speech)
-}
-
-const isSameDate = ( date1: Date, date2 : Date) => {
-  if (date1.getFullYear() === date2.getFullYear()
-      && date1.getMonth() === date2.getMonth()
-      && date1.getDate() === date2.getDate())
-    return true
-  else
-    return false
 }
 
 const nameDesensitize = (patName) => {
diff --git a/src/views/ecg/doctor/index.vue b/src/views/ecg/doctor/index.vue
index 453c753..9dd31e2 100644
--- a/src/views/ecg/doctor/index.vue
+++ b/src/views/ecg/doctor/index.vue
@@ -58,6 +58,10 @@
   }
 }
 
+const callAgain = async () => {
+  await DoctorApi.callAgainPatient(roomBedVO)
+}
+
 const getOnstagePatient = () => {
   const tempPatient : QueueVO | undefined = patientList.value.find(item => item.status === 30)
   if (undefined === tempPatient) {
@@ -146,10 +150,6 @@
 const devInstallPanelRef = ref()
 const setOnStagePatient = (tempPatient: QueueVO | undefined) => {
   devInstallPanelRef.value.setPatient(tempPatient)
-}
-
-const callAgain = () => {
-
 }
 
 </script>

--
Gitblit v1.9.3