562 [门诊医生工作站-待写病历]数据加载时间超过2秒一直加载
561 [门诊医生站-医嘱] 医嘱录入后,总量单位显示异常,显示为“null”而非诊疗目录配置值 544 【智能分诊】排队队列列表无法显示“完诊”状态患者且缺失历史队列查询功能 505 【业务逻辑缺陷】药品医嘱已由药房发药,护士仍能在“医嘱校对”模块执行“退回”操作
This commit is contained in:
@@ -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 = []
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
@@ -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"
|
||||
>
|
||||
<< 移出队列
|
||||
</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 {
|
||||
|
||||
Reference in New Issue
Block a user