562 [门诊医生工作站-待写病历]数据加载时间超过2秒一直加载

561 [门诊医生站-医嘱] 医嘱录入后,总量单位显示异常,显示为“null”而非诊疗目录配置值
544 【智能分诊】排队队列列表无法显示“完诊”状态患者且缺失历史队列查询功能
505 【业务逻辑缺陷】药品医嘱已由药房发药,护士仍能在“医嘱校对”模块执行“退回”操作
This commit is contained in:
wangjian963
2026-05-20 18:12:58 +08:00
committed by zhaoyun
parent 3310a1de9e
commit ea04e44d19
12 changed files with 215 additions and 146 deletions

View File

@@ -89,8 +89,14 @@ const getList = async () => {
const response = await listPendingEmr(queryParams)
// 根据后端返回的数据结构调整
if (response.code === 200) {
emrList.value = response.data || []
total.value = Array.isArray(response.data) ? response.data.length : 0
const data = response.data
if (data && data.rows !== undefined) {
emrList.value = data.rows || []
total.value = data.total || 0
} else {
emrList.value = Array.isArray(data) ? data : []
total.value = emrList.value.length
}
} else {
ElMessage.error(response.msg || '获取待写病历列表失败')
emrList.value = []

View File

@@ -113,10 +113,17 @@ const getList = async () => {
loading.value = true
try {
const response = await listPendingEmr(queryParams)
// 根据后端返回的数据结构调整
if (response.code === 200) {
emrList.value = response.data || []
total.value = Array.isArray(response.data) ? response.data.length : 0
const data = response.data
if (data && data.rows !== undefined) {
// 新分页格式 {rows, total}
emrList.value = data.rows || []
total.value = data.total || 0
} else {
// 兼容旧格式(数组)
emrList.value = Array.isArray(data) ? data : []
total.value = emrList.value.length
}
} else {
ElMessage.error(response.msg || '获取待写病历列表失败')
emrList.value = []

View File

@@ -88,16 +88,16 @@
</el-table>
</div>
<div class="candidate-actions">
<el-button
type="primary"
:disabled="selectedCandidates.length === 0"
<el-button
type="primary"
:disabled="selectedCandidates.length === 0 || isQueryingHistory"
@click="handleAddToQueue"
>
加入队列 >>
</el-button>
<el-button
type="primary"
:disabled="filteredCandidatePoolList.length === 0"
<el-button
type="primary"
:disabled="filteredCandidatePoolList.length === 0 || isQueryingHistory"
@click="handleAddAllToQueue"
>
一键加入队列
@@ -109,6 +109,19 @@
<div class="right-panel">
<div class="panel-header">
<span class="panel-title"> 智能队列 (全科)</span>
<div class="history-query">
<el-date-picker
v-model="queryDate"
type="date"
placeholder="选择日期"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
size="small"
style="width: 150px"
/>
<el-button type="primary" size="small" @click="handleHistoryQuery">查询</el-button>
<el-button size="small" @click="handleTodayQuery">今天</el-button>
</div>
</div>
<div class="table-container">
<el-table
@@ -173,25 +186,25 @@
</div>
<div class="display-options">
<div class="queue-actions-left">
<el-button
type="danger"
:disabled="!selectedQueueRow"
<el-button
type="danger"
:disabled="!selectedQueueRow || isQueryingHistory"
size="small"
@click="handleRemoveFromQueue"
>
&lt;&lt; 移出队列
</el-button>
<el-button
type="info"
:disabled="!selectedQueueRow || !canMoveUp"
<el-button
type="info"
:disabled="!selectedQueueRow || !canMoveUp || isQueryingHistory"
size="small"
@click="handleMoveUp"
>
</el-button>
<el-button
type="info"
:disabled="!selectedQueueRow || !canMoveDown"
<el-button
type="info"
:disabled="!selectedQueueRow || !canMoveDown || isQueryingHistory"
size="small"
@click="handleMoveDown"
>
@@ -259,30 +272,35 @@
<div class="control-buttons">
<el-button
type="primary"
:disabled="isQueryingHistory"
@click="handleSelectCall"
>
选呼
</el-button>
<el-button
type="success"
:disabled="isQueryingHistory"
@click="handleNextPatient"
>
下一患者
</el-button>
<el-button
type="warning"
:disabled="isQueryingHistory"
@click="handleSkip"
>
跳过
</el-button>
<el-button
type="primary"
:disabled="isQueryingHistory"
@click="handleComplete"
>
完成
</el-button>
<el-button
type="info"
:disabled="isQueryingHistory"
@click="handleRequeue"
>
过号重排
@@ -682,6 +700,14 @@ const showOnlyWaiting = ref(false)
// Bug #411诊室过滤替代原来的科室下拉框selectedDept/departmentList 已移除)
const selectedRoom = ref('all')
// 历史队列查询日期 (默认当天)
const getTodayStr = () => {
const now = new Date()
return `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`
}
const queryDate = ref(getTodayStr())
const isQueryingHistory = computed(() => queryDate.value !== getTodayStr())
// 修复【#397】动态获取当前科室名称
const currentDeptName = computed(() => {
return userStore.deptName || userStore.orgName || '心内科'
@@ -901,14 +927,12 @@ const mapFrontendStatusToBackend = (status) => {
}
// 从数据库加载队列
const loadQueueFromDb = async () => {
const loadQueueFromDb = async (dateStr) => {
try {
// Bug #411不再按科室选筛加载后端默认按当前登录人科室查询
const organizationId = undefined
// 只查询今天的患者
const today = new Date()
const todayStr = `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`
const res = await getTriageQueueList({ organizationId, date: todayStr }).catch((err) => {
const queryDateStr = dateStr || queryDate.value
const res = await getTriageQueueList({ organizationId, date: queryDateStr }).catch((err) => {
console.error('【心内科】loadQueueFromDb 请求异常:', err)
return { code: 500, msg: err?.message || '请求失败', data: null }
})
@@ -931,10 +955,6 @@ const loadQueueFromDb = async () => {
originalQueueList.value = list
.map((it) => {
const frontendStatus = mapBackendStatusToFrontend(it.status)
// 调试日志:检查状态映射
if (list.length <= 5) {
console.log('【心内科】状态映射:后端状态=', it.status, '-> 前端状态=', frontendStatus, '患者=', it.patientName)
}
// 计算等待时间基于创建时间createTime
let waitingTime = '00:00'
if (it.createTime) {
@@ -972,15 +992,7 @@ const loadQueueFromDb = async () => {
organizationId: it.organizationId
}
})
.filter((item) => {
// 过滤掉"已完成"状态的患者,不显示在队列中
if (item.status === '已完成') {
console.log('【心内科】过滤掉已完成状态的患者:', item.patientName)
return false
}
return true
})
// 调试日志:检查查找结果
const callingCount = originalQueueList.value.filter(i => i.status === '叫号中').length
const waitingCount = originalQueueList.value.filter(i => i.status === '等待').length
@@ -1196,9 +1208,6 @@ const formatSecondsToMmSs = (totalSeconds) => {
const filteredQueueList = computed(() => {
let filtered = originalQueueList.value
// 先过滤掉"已完成"状态的患者(无论什么情况都不显示)
filtered = filtered.filter(item => item.status !== '已完成')
// 再按诊室过滤
if (selectedRoom.value !== 'all') {
filtered = filtered.filter(item => item.room === selectedRoom.value)
@@ -1627,6 +1636,26 @@ const handleRefresh = async () => {
ElMessage.success('已刷新(已从数据库恢复队列)')
}
// 历史队列查询
const handleHistoryQuery = async () => {
if (!queryDate.value) {
ElMessage.warning('请选择查询日期')
return
}
console.log('【心内科】历史队列查询:', queryDate.value)
await loadQueueFromDb(queryDate.value)
if (isQueryingHistory.value) {
ElMessage.success(`已加载 ${queryDate.value} 的队列数据`)
}
}
// 回到今天
const handleTodayQuery = async () => {
queryDate.value = getTodayStr()
await loadQueueFromDb(getTodayStr())
ElMessage.success('已切换到今天队列')
}
// 退出
const handleExit = () => {
ElMessage.info('退出功能待实现')
@@ -2165,12 +2194,21 @@ onUnmounted(() => {
padding: 15px 20px;
border-bottom: 2px solid #409eff;
background-color: #f8f9fa;
display: flex;
justify-content: space-between;
align-items: center;
.panel-title {
font-size: 16px;
font-weight: bold;
color: #333;
}
.history-query {
display: flex;
gap: 8px;
align-items: center;
}
}
.table-container {