eight
2024-09-19 396fa3839bc63329feab4e2d143a64e944dd106d
重叫功能 完成
已添加1个文件
已修改3个文件
118 ■■■■■ 文件已修改
src/api/ecg/call/index.ts 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/ecg/doctor/index.ts 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/callingscreen/bigscreen.vue 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/doctor/index.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/ecg/call/index.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
import request from '@/config/axios'
// å«å· VO
export interface CallVO {
  id: number // id
  patId: string // æ‚£è€…编号
  patName: string // æ‚£è€…姓名
  patGender: number // æ‚£è€…性别
  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` })
  }
}
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 })
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); // æ¯X秒滚动一次
@@ -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) => {
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>