public/ConsultationRoom.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/ecg/appointment/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/appointment/alter.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/jobrecord/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
vite.config.ts | ●●●●● 补丁 | 查看 | 原始文档 | 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`), ''),