11
WXL
2 天以前 920e530b68c0f4dba434281ce94c9814e9937db3
11
已修改5个文件
209 ■■■■■ 文件已修改
public/ConsultationRoom.html 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/ecg/appointment/index.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/appointment/alter.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/ecg/jobrecord/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
src/api/ecg/appointment/index.ts
@@ -31,8 +31,8 @@
// 预约 API
export const AppointmentApi = {
  // 查询预约分页
  getAppointmentPage: async (params: any) => {
    return await request.get({ url: `/ecg/appointment/page`, params })
  getAppointmentPage: async (data: any) => {
    return await request.post({ url: `/ecg/appointment/page`, data })
  },
  // 查询预约详情
src/views/ecg/appointment/alter.vue
@@ -80,12 +80,7 @@
        </el-select>
      </el-form-item>
      <el-form-item label-width="90" label="申请单状态" prop="bookCheckType">
        <el-select
          v-model="queryParams.status"
          placeholder="请选择"
          clearable
          class="!w-240px"
        >
        <el-select v-model="queryParams.status" placeholder="请选择" clearable class="!w-240px">
          <el-option label="申请单开立" disabled :value="'1'" />
          <el-option label="申请单撤销" disabled :value="'2'" />
          <el-option label="检查登记" :value="'3'" />
@@ -96,16 +91,27 @@
          <el-option label="报告生成" disabled :value="'8'" />
        </el-select>
      </el-form-item>
      <el-form-item label="登记时间" prop="bookCheckType">
        <el-select
          v-model="queryParams.registerTime"
          placeholder="请选择"
          clearable
          class="!w-240px"
        >
          <el-option label="上午" value="上午" />
          <el-option label="下午" value="下午" />
        </el-select>
      <el-form-item label="登记时间" prop="registerTime">
        <el-date-picker
          v-model="djTime"
          value-format="YYYY-MM-DD HH:mm:ss"
          type="daterange"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
          class="!w-220px"
        />
      </el-form-item>
      <el-form-item label="开单时间" prop="createTime">
        <el-date-picker
          v-model="kdTime"
          value-format="YYYY-MM-DD HH:mm:ss"
          type="daterange"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
          class="!w-220px"
        />
      </el-form-item>
      <!--
      <el-form-item label="预约来源" prop="bookSrc">
@@ -152,6 +158,23 @@
    >
      <el-table-column label="就诊流水号" align="center" prop="episodeId" min-width="110px" />
      <el-table-column label="申请号" align="center" prop="applyNo" min-width="110px" />
      <el-table-column label="姓名" align="center" min-width="160px">
        <template #default="scope">
          {{ scope.row.patName }}
          <dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.patGender" />
          <dict-tag :type="DICT_TYPE.ECG_PAT_SOURCE" :value="scope.row.patSrc" />
        </template>
      </el-table-column>
      <el-table-column
        label="生日"
        align="center"
        prop="patBirthday"
        :formatter="dateFormatter2"
        width="110px"
      />
      <el-table-column label="病区名称" align="center" prop="patWardDesc" />
      <el-table-column label="床号" align="center" prop="patBedNo" />
      <el-table-column label="编号" align="center" prop="patId" />
      <!--
      <el-table-column label="缴费" align="center" prop="paid">
@@ -160,13 +183,7 @@
        </template>
      </el-table-column>
-->
      <el-table-column label="姓名" align="center" min-width="160px">
        <template #default="scope">
          {{ scope.row.patName }}
          <dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.patGender" />
          <dict-tag :type="DICT_TYPE.ECG_PAT_SOURCE" :value="scope.row.patSrc" />
        </template>
      </el-table-column>
      <el-table-column
        label="预约日期"
        align="center"
@@ -184,13 +201,7 @@
          {{ getCheckTypeName(scope.row.bookCheckType) }}
        </template>
      </el-table-column>
      <el-table-column
        label="生日"
        align="center"
        prop="patBirthday"
        :formatter="dateFormatter2"
        width="110px"
      />
      <el-table-column
        label="开单时间"
        align="center"
@@ -198,16 +209,16 @@
        :formatter="dateFormatter2"
        width="110px"
      />
      <el-table-column label="开单医生" align="center" prop="doctor" width="110px" />
      <el-table-column label="手机" align="center" prop="patMobile" />
      <!--      <el-table-column label="电话" align="center" prop="patPhone" />-->
      <!--      <el-table-column label="身份证号" align="center" prop="patIdentityId" />-->
      <el-table-column label="地址" align="center" prop="patAddr" />
      <!-- <el-table-column label="科室代码" align="center" prop="patDeptCode" /> -->
      <el-table-column label="科室名称" align="center" prop="patDeptDesc" />
      <el-table-column label="科室名称" align="center" prop="patDeptDesc" />
      <el-table-column label="地址" align="center" prop="patAddr" />
      <!-- <el-table-column label="病区代码" align="center" prop="patWardCode" /> -->
      <el-table-column label="病区名称" align="center" prop="patWardDesc" />
      <el-table-column label="床号" align="center" prop="patBedNo" />
      <el-table-column label="操作" fixed="right" align="center" min-width="220px">
        <template #default="scope">
          <el-button
@@ -303,10 +314,17 @@
const form = ref({
  status: ''
}) // 修改状态数据
const djTime = ref('')
const kdTime = ref('')
const queryParams = reactive({
  pageNo: 1,
  status:undefined,
  registerTime:undefined,
  status: undefined,
  registerDateStart: '',
  registerDateEnd: '',
  createTimestart: '',
  createTimeEnd: '',
  pageSize: 10,
  applyNo: undefined,
  patId: undefined,
@@ -349,6 +367,10 @@
/** 搜索按钮操作 */
const handleQuery = () => {
  queryParams.pageNo = 1
  queryParams.registerDateStart = djTime.value[0]
  queryParams.registerDateEnd = djTime.value[1]
  queryParams.createTimestart = kdTime.value[0]
  queryParams.createTimeEnd = kdTime.value[1]
  getList()
}
src/views/ecg/jobrecord/index.vue
@@ -281,4 +281,4 @@
onMounted(() => {
  getList()
})
</script>
</script>
vite.config.ts
@@ -32,8 +32,8 @@
      proxy: {
        ['/admin-api']: {
          // target: 'http://192.168.100.120:48080',
          target: 'http://localhost:8095',
          // target: 'http://192.168.100.194:48080',
          // target: 'http://localhost:8095',
          target: 'http://192.168.100.194:48080',
          ws: false,
          changeOrigin: true,
          // rewrite: (path) => path.replace(new RegExp(`^/admin-api`), ''),