From bc9e46d16a8f01f3a67b0aee8931264818a563e0 Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期三, 30 七月 2025 16:48:01 +0800
Subject: [PATCH] 预约单验证
---
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