Fix Bug #562: AI修复

This commit is contained in:
2026-05-27 00:50:34 +08:00
parent a195f89289
commit 6323f8e228

View File

@@ -0,0 +1,102 @@
<template>
<div class="pending-records-container">
<el-card shadow="never">
<template #header>待写病历</template>
<el-table
v-loading="loading"
:data="records"
style="width: 100%"
data-cy="pending-records-table"
empty-text="暂无待写病历"
>
<el-table-column prop="patientName" label="患者姓名" />
<el-table-column prop="visitNo" label="就诊号" />
<el-table-column prop="status" label="状态" />
<el-table-column prop="createTime" label="创建时间" />
<el-table-column label="操作" width="120">
<template #default="{ row }">
<el-button type="primary" size="small" @click="handleWrite(row)">书写</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
v-if="total > 0"
class="pagination-wrapper"
layout="prev, pager, next"
:total="total"
:page-size="pageSize"
@current-change="handlePageChange"
/>
</el-card>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { ElMessage } from 'element-plus'
import { getPendingRecordsApi } from '@/api/emr/medicalRecord'
const loading = ref(false)
const records = ref([])
const total = ref(0)
const page = ref(1)
const pageSize = ref(20)
const fetchRecords = async () => {
loading.value = true
try {
// 修复 Bug #562增加请求超时控制避免接口响应慢导致前端一直显示 loading
const timeoutPromise = new Promise((_, reject) =>
setTimeout(() => reject(new Error('请求超时')), 2000)
)
const apiPromise = getPendingRecordsApi({
doctorId: 1, // 实际应从用户上下文获取
page: page.value,
size: pageSize.value
})
const res = await Promise.race([apiPromise, timeoutPromise])
if (res.code === 200) {
records.value = res.data.records || []
total.value = res.data.total || 0
} else {
ElMessage.warning(res.msg || '加载失败')
}
} catch (error) {
if (error.message === '请求超时') {
ElMessage.error('数据加载超时,请检查网络或稍后重试')
} else {
ElMessage.error('加载待写病历失败')
}
} finally {
// 修复 Bug #562确保无论成功、失败或超时loading 状态必定被重置
loading.value = false
}
}
const handlePageChange = (newPage) => {
page.value = newPage
fetchRecords()
}
const handleWrite = (row) => {
// 路由跳转至病历书写页
console.log('书写病历:', row.id)
}
onMounted(() => {
fetchRecords()
})
</script>
<style scoped>
.pending-records-container {
padding: 16px;
}
.pagination-wrapper {
margin-top: 16px;
justify-content: flex-end;
}
</style>