门诊换卡优化

This commit is contained in:
2025-11-24 09:22:11 +08:00
parent 60593233bc
commit c561586cfa
3 changed files with 26 additions and 25 deletions

View File

@@ -252,12 +252,10 @@ public class GenController extends BaseController {
InputStream is = file.getInputStream(); InputStream is = file.getInputStream();
Workbook wb = WorkbookFactory.create(is); Workbook wb = WorkbookFactory.create(is);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
// 遍历每个sheet页每个表 // 遍历每个sheet页每个表
for (int i = 0; i < wb.getNumberOfSheets(); i++) { for (int i = 0; i < wb.getNumberOfSheets(); i++) {
sb.append("-- ----------------------------------------------------------------------------------\n"); sb.append("-- ----------------------------------------------------------------------------------\n");
Sheet st = wb.getSheetAt(i); Sheet st = wb.getSheetAt(i);
// 从第一行读取表名表注释 // 从第一行读取表名表注释
Row row0 = st.getRow(0);// 表名 Row row0 = st.getRow(0);// 表名
String tableName = row0.getCell(4).toString();// 表名 String tableName = row0.getCell(4).toString();// 表名

View File

@@ -310,7 +310,7 @@ const handleCurrentChange = (newPage) => {
} }
// 查询患者信息 // 查询患者信息
const handlePatientSearch = async () => { const handlePatientSearch = async () => {
// 检查是否至少填写了一个查询条件 // 检查是否至少填写了一个查询条件
if (!searchForm.patientName && !searchForm.idCard && !searchForm.phoneNumber) { if (!searchForm.patientName && !searchForm.idCard && !searchForm.phoneNumber) {
ElMessage.warning('请至少输入一个查询条件') ElMessage.warning('请至少输入一个查询条件')
@@ -338,7 +338,7 @@ const handleCurrentChange = (newPage) => {
total.value = response.data.total || 0 total.value = response.data.total || 0
selectedPatient.value = null // 查询时重置选中状态 selectedPatient.value = null // 查询时重置选中状态
// 如果只有一条记录且是第一页,自动选中 // 如果只有一条记录且是第一页,自动显示患者信息
if (response.data.records.length === 1 && currentPage.value === 1) { if (response.data.records.length === 1 && currentPage.value === 1) {
const patient = response.data.records[0] const patient = response.data.records[0]
// 确保patient对象中同时包含id和patientId字段 // 确保patient对象中同时包含id和patientId字段
@@ -346,9 +346,21 @@ const handleCurrentChange = (newPage) => {
patient.patientId = patient.id; patient.patientId = patient.id;
} }
// 设置为选中状态,但不自动确认 // 直接构建并设置患者信息,无需用户手动确认
selectedPatient.value = patient const outpatientNo = patient.identifierNo || patient.cardNo || patient.card_number || patient.就诊卡号 || patient.outpatientNumber || patient.outpatientNo || patient.门诊号码 || patient.卡号 || patient.card || patient.patientNo || patient.patient_id;
ElMessage.warning('已自动选中唯一患者,请点击确定') const gender = patient.genderEnum_enumText || patient.gender || patient.sex || patient.性别 || patient.xb || patient.sexCode || patient.GENDER || patient.SEX;
patientInfo.value = {
outpatientNo: outpatientNo,
patientName: patient.patientName || patient.name,
idCard: patient.idCard || patient.id_card || patient.idNo,
phoneNumber: patient.phoneNumber || patient.phone || patient.mobile || patient.mobilePhone,
gender: gender,
age: patient.age,
patientId: patient.patientId || patient.id || outpatientNo
}
ElMessage.success('已自动选中唯一患者')
} else { } else {
// 如果有多条记录或不是第一页,显示患者列表供选择 // 如果有多条记录或不是第一页,显示患者列表供选择
// 确保每条患者记录都包含patientId字段优先使用id字段 // 确保每条患者记录都包含patientId字段优先使用id字段
@@ -359,7 +371,7 @@ const handleCurrentChange = (newPage) => {
showPatientList.value = true showPatientList.value = true
} }
} else { } else {
// 无数据时重置总条数 // 无数据时重置总条数
total.value = 0 total.value = 0
ElMessage.warning('未查询到患者信息') ElMessage.warning('未查询到患者信息')
} }
@@ -368,9 +380,8 @@ const handleCurrentChange = (newPage) => {
} }
} catch (error) { } catch (error) {
// 使用公共错误处理函数处理错误信息 // 错误处理
const errorMessage = processErrorMessage(error, '查询失败,请稍后重试'); ElMessage.error('查询失败,请稍后重试');
ElMessage.error(errorMessage);
// 可以在这里添加错误监控或日志记录 // 可以在这里添加错误监控或日志记录
console.error('患者查询错误:', error); console.error('患者查询错误:', error);
} finally { } finally {
@@ -493,15 +504,7 @@ onMounted(() => {
document.addEventListener('keydown', handleKeydown) document.addEventListener('keydown', handleKeydown)
// 设置默认患者数据,方便用户直接进行换卡操作 // 设置默认患者数据,方便用户直接进行换卡操作
patientInfo.value = {
outpatientNo: '20231001001',
patientName: '张三',
idCard: '110101199001011234',
phoneNumber: '13800138000',
gender: '男',
age: '33岁',
patientId: '1001'
}
}) })
// 组件卸载时移除键盘事件监听 // 组件卸载时移除键盘事件监听
@@ -511,7 +514,7 @@ onUnmounted(() => {
// 移除了调试功能 // 移除了调试功能
// 选择患者(仅设置选中状态) // 选择患者(仅设置选中状态)
const selectPatient = (row) => { const selectPatient = (row) => {
selectedPatient.value = row selectedPatient.value = row
ElMessage.warning('已选择患者,请点击确定') ElMessage.warning('已选择患者,请点击确定')
@@ -547,7 +550,7 @@ const confirmSelectPatient = () => {
} }
// 重置表单 // 重置表单
const resetForm = () => { const resetForm = () => {
searchForm.patientName = '' searchForm.patientName = ''
searchForm.idCard = '' searchForm.idCard = ''
searchForm.phoneNumber = '' searchForm.phoneNumber = ''
@@ -562,8 +565,8 @@ const confirmSelectPatient = () => {
total.value = 0 total.value = 0
} }
// 格式化日期为YYYY-MM-DD格式 // 格式化日期为YYYY-MM-DD格式
const formatDate = (date) => { const formatDate = (date) => {
if (!date) return '' if (!date) return ''
// 如果已经是YYYY-MM-DD格式直接返回 // 如果已经是YYYY-MM-DD格式直接返回
if (typeof date === 'string' && /^\d{4}-\d{2}-\d{2}$/.test(date)) { if (typeof date === 'string' && /^\d{4}-\d{2}-\d{2}$/.test(date)) {

View File

@@ -1207,7 +1207,7 @@ function getListInfo(addNewRow) {
: 0); : 0);
// 从后端获取数据时将后端的耗材类型2转换为前端显示的耗材类型4 // 从后端获取数据时将后端的耗材类型2转换为前端显示的耗材类型4
// 后端接口中1=药品, 2=耗材, 3=诊疗 // 后端接口中1=药品, 2=耗材, 3=诊疗
// 前端显示中1=西药, 2=中成药, 3=诊疗, 4=耗材 // 前端显示中1=西药, 2=中成药, 3=诊疗, 4=耗材
let displayAdviceType = parsedContent.adviceType !== undefined ? Number(parsedContent.adviceType) : (item.adviceType !== undefined ? Number(item.adviceType) : undefined); let displayAdviceType = parsedContent.adviceType !== undefined ? Number(parsedContent.adviceType) : (item.adviceType !== undefined ? Number(item.adviceType) : undefined);
if (displayAdviceType === 2 && (parsedContent.deviceId || parsedContent.deviceName || item.deviceId || item.deviceName)) { if (displayAdviceType === 2 && (parsedContent.deviceId || parsedContent.deviceName || item.deviceId || item.deviceName)) {
// 如果是耗材adviceType=2 且有deviceId或deviceName转换为前端显示的4 // 如果是耗材adviceType=2 且有deviceId或deviceName转换为前端显示的4