From 920e530b68c0f4dba434281ce94c9814e9937db3 Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期二, 22 七月 2025 16:36:18 +0800 Subject: [PATCH] 11 --- public/ConsultationRoom.html | 230 ++++++++++++++++++++++++++++++++------------------------ 1 files changed, 131 insertions(+), 99 deletions(-) diff --git a/public/ConsultationRoom.html b/public/ConsultationRoom.html index dd138ec..55fc719 100644 --- a/public/ConsultationRoom.html +++ b/public/ConsultationRoom.html @@ -265,8 +265,10 @@ .control-btn { padding: 8px 5px; background: rgba(91, 140, 255, 0.1); - flex: 1; /* 骞冲潎鍒嗛厤瀹藉害 */ - min-width: 0; /* 闃叉鍐呭婧㈠嚭 */ + flex: 1; + /* 骞冲潎鍒嗛厤瀹藉害 */ + min-width: 0; + /* 闃叉鍐呭婧㈠嚭 */ border: none; border-radius: 12px; color: #4a7dff; @@ -398,12 +400,12 @@ <body> <div id="app"> - <div class="search-bar"> + <div class="search-bar" style="display: none;"> <input class="search-input" type="text" placeholder="璇疯緭鍏ユ埧闂村彿鏌ヨ" id="searchRoomInput"> <button class="search-btn" id="searchRoomBtn">鏌ヨ</button> </div> - <div class="header"> + <div class="header" style="display: none;"> <div class="clinic-title">蹇冪數鍥捐瘖闂村彨鍙风郴缁�</div> <div class="clinic-info"> <div class="room-name" id="roomName">璇婇棿鍔犺浇涓�...</div> @@ -413,7 +415,7 @@ <div class="main-content"> <div class="panel"> - <div class="panel-header">妫�鏌ラ槦鍒�</div> + <div class="panel-header">绛夊緟闃熷垪</div> <div class="patient-list" id="checkPatientList"> <div class="empty-state"> 鏆傛棤绛夊緟妫�鏌ョ殑鎮h�� @@ -422,7 +424,7 @@ </div> </div> - <div class="footer"> + <div class="footer" style="display: none;"> <div class="announcement" id="announcementText"> 绯荤粺杩愯涓�... </div> @@ -457,19 +459,29 @@ roomId: 1, timer: null, speechSynthesis: window.speechSynthesis || null, - apiBaseUrl: 'http://10.0.2.193/admin-api' // 鏍规嵁瀹為檯鎯呭喌淇敼 + apiBaseUrl: 'http://10.0.2.193/admin-api' + // apiBaseUrl: 'http://localhost:48080/admin-api' }; // 椤甸潰鍔犺浇瀹屾垚鍚庡垵濮嬪寲 - $(document).ready(function () { + // 椤甸潰鍔犺浇瀹屾垚鍚庡垵濮嬪寲 + document.addEventListener('DOMContentLoaded', function () { + // 浠嶶RL鑾峰彇roomId鍙傛暟 + const urlParams = new URLSearchParams(window.location.search); + const roomId = urlParams.get('roomId') || '1'; // 榛樿鍊�1 + + // 璁剧疆鍒版悳绱㈡锛堝彲閫夛級 + document.getElementById('searchRoomInput').value = roomId; // 鍒濆鍖栦簨浠剁洃鍚� - $('#searchRoomBtn').click(searchRoom); - $('#callBtn').click(initiateSpeak); - $('#testSpeakBtn').click(function () { speak('娆㈣繋浣跨敤璇婇棿鍙彿绯荤粺'); }); - $('#changeRoomBtn').click(changeRoom); + document.getElementById('searchRoomBtn').addEventListener('click', searchRoom); + document.getElementById('callBtn').addEventListener('click', initiateSpeak); + document.getElementById('testSpeakBtn').addEventListener('click', function () { + speak('娆㈣繋浣跨敤璇婇棿鍙彿绯荤粺'); + }); + document.getElementById('changeRoomBtn').addEventListener('click', changeRoom); // 鍒濆鍖栨暟鎹� - getRoomByIp(); + getRoomByIp(roomId); startScrolling(); // 鍒濆鍖栬闊冲悎鎴� @@ -480,7 +492,7 @@ // 鎼滅储鎴块棿 function searchRoom() { - var searchInput = $('#searchRoomInput').val().trim(); + var searchInput = document.getElementById('searchRoomInput').value.trim(); if (!searchInput) { updateAnnouncement('璇疯緭鍏ユ湁鏁堢殑鎴块棿鍙�'); return; @@ -488,56 +500,75 @@ updateAnnouncement('姝e湪鏌ヨ ' + searchInput + ' 鎴块棿淇℃伅...'); - // 鐪熷疄API璋冪敤 - $.ajax({ - url: appState.apiBaseUrl + '/clinic/room/get-room-by-ip', - data: { roomId: searchInput }, - type: 'GET', - dataType: 'json', - success: function (response) { - appState.roomProfile = response.data || response; - updateRoomInfo(); - updateAnnouncement('宸插姞杞� ' + appState.roomProfile.roomName + ' 淇℃伅'); - getList(); // 鑾峰彇璇ユ埧闂寸殑鎮h�呭垪琛� - }, - error: function (xhr, status, error) { - updateAnnouncement('鏌ヨ鎴块棿澶辫触: ' + (xhr.responseJSON?.message || error)); - console.error('鏌ヨ鎴块棿澶辫触:', error); + var xhr = new XMLHttpRequest(); + xhr.open('GET', appState.apiBaseUrl + '/clinic/room/get-room-by-ip?roomId=' + encodeURIComponent(searchInput), true); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + try { + var response = JSON.parse(xhr.responseText); + appState.roomProfile = response.data || response; + updateRoomInfo(); + updateAnnouncement('宸插姞杞� ' + appState.roomProfile.roomName + ' 淇℃伅'); + getList(); // 鑾峰彇璇ユ埧闂寸殑鎮h�呭垪琛� + } catch (e) { + updateAnnouncement('瑙f瀽鍝嶅簲鏁版嵁澶辫触'); + console.error('瑙f瀽鍝嶅簲澶辫触:', e); + } + } else { + updateAnnouncement('鏌ヨ鎴块棿澶辫触: ' + xhr.status); + console.error('鏌ヨ鎴块棿澶辫触:', xhr.status); + } } - }); + }; + xhr.send(); } - // 鑾峰彇鎴块棿淇℃伅 - // 鑾峰彇鎴块棿淇℃伅 - 浣跨敤鐪熷疄API - function getRoomByIp() { - var searchInput = $('#searchRoomInput').val().trim(); + function getRoomByIp(roomId) { + // 濡傛灉鏈紶閫抮oomId锛屽皾璇曚粠杈撳叆妗嗚幏鍙� + if (!roomId) { + roomId = document.getElementById('searchRoomInput').value.trim() || '1'; + } - $.ajax({ - url: appState.apiBaseUrl + '/ecg/screen/room-screen-data', - data: { roomId: searchInput }, - type: 'GET', - dataType: 'json', - success: function (response) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', appState.apiBaseUrl + '/ecg/screen/room-screen-data?roomId=' + encodeURIComponent(roomId), true); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + try { + var response = JSON.parse(xhr.responseText); appState.roomProfile = response.data || response; updateRoomInfo(); - // 妫�鏌ユ槸鍚︽湁闇�瑕佸彨鍙风殑鎮h�� + // 鏇存柊褰撳墠roomId鐘舵�� + appState.roomId = roomId; + + // 妫�鏌ユ槸鍚﹂渶瑕佸彨鍙� if (response.data && response.data.called === 0) { appState.curSpeakPat = response.data; speak('璇�' + response.data.patName + '鍒�' + appState.roomProfile.roomName + '瑁呮満'); } - }, - error: function (xhr, status, error) { - console.error('鑾峰彇鎴块棿淇℃伅澶辫触:', error); - // 浣跨敤妯℃嫙鏁版嵁浣滀负鍚庡 - appState.roomProfile = { - roomName: '蹇冪數鍥捐瘖瀹� ' + (appState.roomId + 1), - callingScreenType: [40, 10, 30][appState.roomId % 3] - }; - updateRoomInfo(); + } catch (e) { + console.error('瑙f瀽鍝嶅簲澶辫触:', e); + fallbackRoomData(roomId); } - }); + } else { + console.error('鑾峰彇鎴块棿淇℃伅澶辫触:', xhr.status); + fallbackRoomData(roomId); + } } + }; + xhr.send(); +} + +// 鍚庡鏁版嵁鍑芥暟 +function fallbackRoomData(roomId) { + appState.roomProfile = { + roomName: '蹇冪數鍥捐瘖瀹� ' + roomId, + callingScreenType: [40, 10, 30][roomId % 3] + }; + updateRoomInfo(); +} // 鏇存柊鎴块棿淇℃伅鏄剧ず function updateRoomInfo() { @@ -561,36 +592,30 @@ $('#screenType').text('妯″紡锛�' + screenTypeText); } + // 鑾峰彇鎮h�呭垪琛� function getList() { - var searchInput = $('#searchRoomInput').val().trim(); + var searchInput = document.getElementById('searchRoomInput').value.trim(); - $.ajax({ - url: appState.apiBaseUrl + '/ecg/screen/room-screen-data', - data: { roomId: searchInput }, - type: 'GET', - dataType: 'json', - success: function (response) { - // 鍋囪杩斿洖鏁版嵁缁撴瀯涓� { data: [妫�鏌ラ槦鍒楁暟鎹�, 瑁呮満闃熷垪鏁版嵁] } - if (response.data) { - console.log(response.data); - console.log(response.data[1]); - - appState.checkRelatedPatientList = response.data[1] || []; - console.log(); - + var xhr = new XMLHttpRequest(); + xhr.open('GET', appState.apiBaseUrl + '/ecg/screen/room-screen-data?roomId=' + encodeURIComponent(searchInput), true); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + try { + var response = JSON.parse(xhr.responseText); + if (response.data) { + appState.checkRelatedPatientList = response.data[1] || []; + } + updatePatientList(); + } catch (e) { + console.error('瑙f瀽鎮h�呭垪琛ㄥけ璐�:', e); + } } else { - // 妯℃嫙鏁版嵁浣滀负鍚庡 - // appState.checkRelatedPatientList = generateMockPatients(); + console.error('鑾峰彇鎮h�呭垪琛ㄥけ璐�:', xhr.status); } - updatePatientList(); - }, - error: function (xhr, status, error) { - console.error('鑾峰彇鎮h�呭垪琛ㄥけ璐�:', error); - // 浣跨敤妯℃嫙鏁版嵁浣滀负鍚庡 - // appState.checkRelatedPatientList = generateMockPatients(); - // updatePatientList(); } - }); + }; + xhr.send(); } // 寮�濮嬪畾鏃跺埛鏂� @@ -693,7 +718,6 @@ } // 鍙彿鍔熻兘 - // 鍙彿鍔熻兘锛堜娇鐢ㄧ湡瀹濧PI锛� function initiateSpeak() { // 鎵惧嚭绛夊緟涓殑鎮h�� var waitingPatients = []; @@ -702,31 +726,33 @@ waitingPatients.push(appState.checkRelatedPatientList[i]); } } - + if (waitingPatients.length === 0) { updateAnnouncement('褰撳墠娌℃湁绛夊緟瑁呮満鐨勬偅鑰�'); return; } var patient = waitingPatients[0]; - + // 璋冪敤API鏍囪涓哄凡鍙彿 - $.ajax({ - url: appState.apiBaseUrl + '/ecg/screen/mark-patient-called', - method: 'POST', - data: { patientId: patient.id }, - success: function() { - appState.curSpeakPat = { - patName: patient.patName, - roomName: appState.roomProfile.roomName - }; - speak('璇�' + patient.patName + '鍒�' + appState.roomProfile.roomName + '瑁呮満'); - }, - error: function(xhr, status, error) { - updateAnnouncement('鍙彿澶辫触: ' + (xhr.responseJSON?.message || error)); - console.error('鍙彿澶辫触:', error); + var xhr = new XMLHttpRequest(); + xhr.open('POST', appState.apiBaseUrl + '/ecg/screen/mark-patient-called', true); + xhr.setRequestHeader('Content-Type', 'application/json'); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + if (xhr.status === 200) { + appState.curSpeakPat = { + patName: patient.patName, + roomName: appState.roomProfile.roomName + }; + speak('璇�' + patient.patName + '鍒�' + appState.roomProfile.roomName + '瑁呮満'); + } else { + updateAnnouncement('鍙彿澶辫触: ' + xhr.status); + console.error('鍙彿澶辫触:', xhr.status); + } } - }); + }; + xhr.send(JSON.stringify({ patientId: patient.id })); } // 璇煶鎾姤 @@ -758,11 +784,17 @@ } // 鍒囨崲鎴块棿 - function changeRoom() { - appState.roomId = (appState.roomId + 1) % 3; - getRoomByIp(); - updateAnnouncement('姝e湪鍒囨崲璇婇棿...'); - } + function changeRoom() { + // 杞崲roomId锛堢ず渚嬶細1鈫�2鈫�3鈫�1锛� + const newRoomId = (parseInt(appState.roomId) % 3) + 1; + + // 鏇存柊URL浣嗕笉鍒锋柊椤甸潰 + window.history.pushState({}, '', `?roomId=${newRoomId}`); + + // 閲嶆柊鍔犺浇鏁版嵁 + getRoomByIp(newRoomId.toString()); + updateAnnouncement('姝e湪鍒囨崲鍒拌瘖闂� ' + newRoomId); +} </script> </body> -- Gitblit v1.9.3