| | |
| | | const listPassed = ref<CallingVO[]>([]) // |
| | | |
| | | let curSpeakPat : CallingVO | undefined = undefined; |
| | | let curSpeakSeqNum : number = 0 |
| | | let curWorkDay : Date | undefined = undefined |
| | | |
| | | const getList = async () => { |
| | | const data = await ScreenApi.getBigScreenData() |
| | |
| | | const startScrolling = () => { |
| | | setInterval(() => { |
| | | getList(); |
| | | console.info("..." + curSpeakPat) |
| | | if ( curSpeakPat === undefined ) { |
| | | const queuePat = getNextSpeak() |
| | | if (queuePat !== undefined) { |
| | | console.info("...2" + queuePat) |
| | | curSpeakPat = queuePat |
| | | speak(queuePat.patName + queuePat.roomName); |
| | | } else { |
| | | console.info("...3" ) |
| | | curSpeakPat = undefined |
| | | initiateSpeak() |
| | | } |
| | | } |
| | | }, 10000); // 每X秒滚动一次 |
| | | } |
| | | |
| | | const getNextSpeak = () => { |
| | | if (curSpeakPat === undefined || curSpeakPat === null) { |
| | | return listReady.value.find( item => item.status === 30 && item.called === 0) |
| | | } else { |
| | | return listReady.value.find( item => item.status === 30 && item.called === 0 && item.seqNum > curSpeakPat!.seqNum) |
| | | } |
| | | }, 5000); // 每X秒滚动一次 |
| | | } |
| | | |
| | | onMounted( () => { |
| | |
| | | }) |
| | | |
| | | const onSpeachEndEvent = async (event) => { |
| | | console.log("Speech ended 3" + event); |
| | | console.log("Speech ended" + event); |
| | | await ScreenApi.markCalled(curSpeakPat!.patId) |
| | | initiateSpeak() |
| | | } |
| | | |
| | | const getNextSpeak = () => { |
| | | if (listReady.value.length === 0) { |
| | | return undefined; |
| | | } |
| | | |
| | | // TODO 处理每天 反转的情况 |
| | | if ( curWorkDay === undefined) { |
| | | curSpeakSeqNum = 0; |
| | | curWorkDay = new Date() |
| | | } else if (!isSameDate(listReady.value[0].bookDate, curWorkDay)) { |
| | | curSpeakSeqNum = 0; |
| | | curWorkDay.setFullYear( listReady.value[0].bookDate[0] ) |
| | | curWorkDay.setMonth( listReady.value[0].bookDate[1] ) |
| | | curWorkDay.setDate( listReady.value[0].bookDate[2] ) |
| | | } |
| | | |
| | | 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 |
| | |
| | | speechSynthesis.speak(speech) |
| | | } |
| | | |
| | | const isSameDate = ( date1: number[], date2 : Date) => { |
| | | if ( date1[0] === date2.getFullYear() |
| | | && date1[1] === date2.getMonth() |
| | | && date1[2] === date2.getDate() ) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |