300,301,302预约挂号展示问题

This commit is contained in:
HuangXinQuan
2026-04-03 16:47:03 +08:00
parent 8a84b40ee5
commit 0c5353cf8b
6 changed files with 152 additions and 22 deletions

View File

@@ -106,7 +106,7 @@
<div class="ticket-grid" v-if="filteredTickets.length > 0">
<div v-for="(item, index) in filteredTickets" :key="item.slot_id" class="ticket-card" @dblclick="handleDoubleClick(item)" @contextmenu.prevent="handleRightClick($event, item)">
<!-- 序号放在最右侧 -->
<div class="ticket-index">{{ index + 1 }}</div>
<div class="ticket-index">{{ item.seqNo != null ? item.seqNo : index + 1 }}</div>
<!-- 1.时间 -->
<div class="ticket-id-time">{{ item.dateTime }}</div>
<!-- 2. 状态标签 -->
@@ -126,7 +126,7 @@
<div class="ticket-type">{{ item.ticketType === 'general' ? '普通' : '专家' }}</div>
<!-- 7. 已预约患者信息 -->
<div v-if="(item.status === '已预约' || item.status === '已取号') && item.patientName" class="ticket-patient">
{{ item.patientName }}({{ item.patientId }})
{{ item.patientName }}({{ item.patientId }},{{ getGenderText(item.gender || item.patientGender) }})
</div>
<div class="ticket-actions">
<button class="action-button book-button" @click="openPatientSelectModal(item.slot_id)" :disabled="item.status !== '未预约'" :class="{ 'disabled': item.status !== '未预约' }">
@@ -195,6 +195,7 @@
>
<td>{{ index + 1 }}</td>
<td>{{ patient.name }}</td>
<td>{{ patient.identifierNo || patient.medicalCard || patient.id }}</td>
<td>{{ patient.identifierNo }}</td>
<td>{{ getGenderText(patient.genderEnum_enumText || patient.genderEnum || patient.gender || patient.sex) }}</td>
<td>{{ patient.idCard }}</td>
@@ -366,14 +367,23 @@ export default {
this.searchPatients();
},
getPatientUniqueId(patient, index = null) {
return patient.idCard || patient.medicalCard || patient.id || (index !== null ? `temp_${index}` : null);
return patient.id || patient.patientId || patient.identifierNo || patient.medicalCard || patient.idCard ||
(index !== null ? `temp_${index}` : null);
},
matchPatientKeyword(patient, keyword) {
const normalizedKeyword = String(keyword || '').trim().toLowerCase();
if (!normalizedKeyword) {
return true;
}
const fields = [patient.name, patient.id, patient.medicalCard, patient.idCard, patient.phone];
const fields = [
patient.name,
patient.id,
patient.patientId,
patient.identifierNo,
patient.medicalCard,
patient.idCard,
patient.phone
];
return fields.some(field => String(field || '').toLowerCase().includes(normalizedKeyword));
},
searchPatients() {
@@ -396,6 +406,8 @@ export default {
const rowKey = this.getPatientUniqueId(patient, index);
return {
...patient,
// 统一口径:预约场景的就诊卡号使用患者标识表中的 identifierNo
medicalCard: patient.identifierNo || patient.medicalCard || '',
_rowKey: rowKey
};
});
@@ -496,6 +508,7 @@ export default {
this.tickets[ticketIndex].patientName = null;
this.tickets[ticketIndex].patientId = null;
this.tickets[ticketIndex].patientGender = null;
this.tickets[ticketIndex].gender = null;
this.tickets[ticketIndex].medicalCard = null;
this.tickets[ticketIndex].phone = null;
}
@@ -556,12 +569,22 @@ export default {
try {
const userStore = useUserStore();
const patientPrimaryId = this.selectedPatient.id || this.selectedPatient.patientId;
const medicalCard = this.selectedPatient.identifierNo || this.selectedPatient.medicalCard;
if (!patientPrimaryId) {
ElMessage.error('患者ID缺失无法预约请重新选择患者');
return;
}
if (!medicalCard) {
ElMessage.error('就诊卡号缺失,无法预约,请先维护患者就诊卡号');
return;
}
const appointmentData = {
ticketId: this.currentTicket.slot_id,
slotId: this.currentTicket.slot_id,
patientId: this.selectedPatient.id || this.selectedPatient.idCard || this.selectedPatient.medicalCard,
patientId: patientPrimaryId,
patientName: this.selectedPatient.name,
medicalCard: this.selectedPatient.medicalCard || this.selectedPatient.id,
medicalCard,
phone: this.selectedPatient.phone,
gender: this.getGenderValueForBackend(this.selectedPatient),
fee: Number(this.currentTicket.fee) || 0,
@@ -580,8 +603,9 @@ export default {
if (ticketIndex !== -1) {
this.tickets[ticketIndex].status = '已预约';
this.tickets[ticketIndex].patientName = this.selectedPatient.name;
this.tickets[ticketIndex].patientId = this.selectedPatient.medicalCard || this.selectedPatient.id;
this.tickets[ticketIndex].patientId = medicalCard;
this.tickets[ticketIndex].patientGender = this.selectedPatient.genderEnum_enumText || this.selectedPatient.genderEnum || this.selectedPatient.gender || this.selectedPatient.sex;
this.tickets[ticketIndex].gender = this.getGenderText(this.tickets[ticketIndex].patientGender);
}
this.closePatientSelectModal();
@@ -603,9 +627,9 @@ export default {
},
// 获取性别文本
getGenderText(genderValue) {
// 如果值为null或undefined返回'-'
// 如果值为null或undefined返回"未知"
if (genderValue === null || genderValue === undefined) {
return '-';
return '未知';
}
// 将值转换为字符串进行比较
@@ -625,8 +649,8 @@ export default {
return '女';
}
// 如果都不是,返回原值或'-'
return '-';
// 如果都不是,返回"未知"
return '未知';
},
// 获取用于后端的性别值
getGenderValueForBackend(patient) {