11
WXL
2 天以前 920e530b68c0f4dba434281ce94c9814e9937db3
public/ConsultationRoom.html
@@ -400,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>
@@ -415,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">
            暂无等待检查的患者
@@ -424,7 +424,7 @@
      </div>
    </div>
    <div class="footer">
    <div class="footer" style="display: none;">
      <div class="announcement" id="announcementText">
        系统运行中...
      </div>
@@ -466,6 +466,12 @@
    // 页面加载完成后初始化
    // 页面加载完成后初始化
    document.addEventListener('DOMContentLoaded', function () {
       // 从URL获取roomId参数
  const urlParams = new URLSearchParams(window.location.search);
  const roomId = urlParams.get('roomId') || '1'; // 默认值1
  // 设置到搜索框(可选)
  document.getElementById('searchRoomInput').value = roomId;
      // 初始化事件监听
      document.getElementById('searchRoomBtn').addEventListener('click', searchRoom);
      document.getElementById('callBtn').addEventListener('click', initiateSpeak);
@@ -475,7 +481,7 @@
      document.getElementById('changeRoomBtn').addEventListener('click', changeRoom);
      // 初始化数据
      getRoomByIp();
      getRoomByIp(roomId);
      startScrolling();
      // 初始化语音合成
@@ -518,46 +524,51 @@
      xhr.send();
    }
    function getRoomByIp() {
      var searchInput = document.getElementById('searchRoomInput').value.trim();
    function getRoomByIp(roomId) {
  // 如果未传递roomId,尝试从输入框获取
  if (!roomId) {
    roomId = document.getElementById('searchRoomInput').value.trim() || '1';
  }
      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);
              appState.roomProfile = response.data || response;
              updateRoomInfo();
  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();
              // 检查是否有需要叫号的患者
              if (response.data && response.data.called === 0) {
                appState.curSpeakPat = response.data;
                speak('请' + response.data.patName + '到' + appState.roomProfile.roomName + '装机');
              }
            } catch (e) {
              console.error('解析响应失败:', e);
              // 使用模拟数据作为后备
              appState.roomProfile = {
                roomName: '心电图诊室 ' + (appState.roomId + 1),
                callingScreenType: [40, 10, 30][appState.roomId % 3]
              };
              updateRoomInfo();
            }
          } else {
            console.error('获取房间信息失败:', xhr.status);
            // 使用模拟数据作为后备
            appState.roomProfile = {
              roomName: '心电图诊室 ' + (appState.roomId + 1),
              callingScreenType: [40, 10, 30][appState.roomId % 3]
            };
            updateRoomInfo();
          // 更新当前roomId状态
          appState.roomId = roomId;
          // 检查是否需要叫号
          if (response.data && response.data.called === 0) {
            appState.curSpeakPat = response.data;
            speak('请' + response.data.patName + '到' + appState.roomProfile.roomName + '装机');
          }
        } catch (e) {
          console.error('解析响应失败:', e);
          fallbackRoomData(roomId);
        }
      };
      xhr.send();
      } 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() {
@@ -773,11 +784,17 @@
    }
    // 切换房间
    function changeRoom() {
      appState.roomId = (appState.roomId + 1) % 3;
      getRoomByIp();
      updateAnnouncement('正在切换诊间...');
    }
  function changeRoom() {
  // 轮换roomId(示例:1→2→3→1)
  const newRoomId = (parseInt(appState.roomId) % 3) + 1;
  // 更新URL但不刷新页面
  window.history.pushState({}, '', `?roomId=${newRoomId}`);
  // 重新加载数据
  getRoomByIp(newRoomId.toString());
  updateAnnouncement('正在切换到诊间 ' + newRoomId);
}
  </script>
</body>