diff --git a/admin/src/views/tcm/diagnosis/index.vue b/admin/src/views/tcm/diagnosis/index.vue index cc910b32..c7aafb23 100644 --- a/admin/src/views/tcm/diagnosis/index.vue +++ b/admin/src/views/tcm/diagnosis/index.vue @@ -12,7 +12,8 @@ { active: formData.pending_assign !== '1' && - formData.pending_unscheduled !== '1' && + formData.pending_booking !== '1' && + formData.completed_appointment !== '1' && formData.appointment_date === tab.value } ]" @@ -22,11 +23,18 @@ {{ dateCounts[tab.value] }} 待预约 - {{ pendingUnscheduledCount }} + {{ pendingBookingCount }} + + + 已完成 + {{ completedVisitCount }} { formData.has_appointment = v as '' | '0' | '1' + formData.pending_booking = '' + formData.completed_appointment = '' pager.page = 1 getLists() fetchDateCounts() @@ -625,6 +639,8 @@ const setHasAppointment = (v: string) => { const setConfirmed = (v: string) => { formData.diagnosis_confirmed = v as '' | '0' | '1' + formData.pending_booking = '' + formData.completed_appointment = '' pager.page = 1 getLists() fetchDateCounts() @@ -645,31 +661,65 @@ const dateTabs = computed(() => [ ]) const dateCounts = ref>({}) +const pendingBookingCount = ref(undefined) +const completedVisitCount = ref(undefined) const pendingAssignCount = ref(undefined) const handleDateTabClick = async (value: string) => { formData.pending_assign = '' + formData.pending_booking = '' + formData.completed_appointment = '' + formData.has_appointment = '' formData.appointment_date = value pager.page = 1 await getLists() fetchDateCounts() } +/** 已创建诊单、尚未挂号的记录(与第二行「未挂号」同条件,便于从 Tab 一键进入) */ +const handlePendingBookingTabClick = async () => { + formData.pending_assign = '' + formData.pending_booking = '1' + formData.completed_appointment = '' + formData.appointment_date = '' + formData.has_appointment = '0' + pager.page = 1 + await getLists() + fetchDateCounts() +} + +/** 至少有一条挂号为「已完成」(后端 appointment.status=3) */ +const handleCompletedVisitTabClick = async () => { + formData.pending_assign = '' + formData.pending_booking = '' + formData.completed_appointment = '1' + formData.has_appointment = '' + formData.appointment_date = '' + pager.page = 1 + await getLists() + fetchDateCounts() +} + const handlePendingAssignTabClick = async () => { formData.pending_assign = '1' + formData.pending_booking = '' + formData.completed_appointment = '' + formData.has_appointment = '' formData.appointment_date = '' pager.page = 1 await getLists() fetchDateCounts() } -// 获取各日期挂号数量 + 待分配医助数量 +// 获取各日期挂号数量 + 待预约 + 已完成 + 待分配医助数量 const fetchDateCounts = async () => { try { - const [today, tomorrow, dayAfter, pending] = await Promise.all([ + const [today, tomorrow, dayAfter, noApt, doneVisit, pending] = await Promise.all([ tcmDiagnosisLists({ appointment_date: todayStr.value, page_no: 1, page_size: 1 }), tcmDiagnosisLists({ appointment_date: tomorrowStr.value, page_no: 1, page_size: 1 }), tcmDiagnosisLists({ appointment_date: dayAfterStr.value, page_no: 1, page_size: 1 }), + tcmDiagnosisLists({ has_appointment: 0, page_no: 1, page_size: 1 }), + tcmDiagnosisLists({ completed_appointment: 1, page_no: 1, page_size: 1 }), tcmDiagnosisLists({ pending_assign: 1, page_no: 1, page_size: 1 }) ]) dateCounts.value = { @@ -677,6 +727,8 @@ const fetchDateCounts = async () => { [tomorrowStr.value]: tomorrow?.count ?? 0, [dayAfterStr.value]: dayAfter?.count ?? 0 } + pendingBookingCount.value = noApt?.count ?? 0 + completedVisitCount.value = doneVisit?.count ?? 0 pendingAssignCount.value = pending?.count ?? 0 } catch (e) { console.error('获取日期数量失败', e) @@ -725,6 +777,8 @@ const handleTabChange = (tabName: string | number) => { formData.diagnosis_confirmed = '' formData.has_appointment = '' formData.appointment_date = '' + formData.pending_booking = '' + formData.completed_appointment = '' if (tabName === 'unconfirmed') { formData.diagnosis_confirmed = '0' } else if (tabName === 'confirmed') { @@ -805,6 +859,8 @@ const handleReset = () => { formData.appointment_date = '' formData.has_appointment = '' formData.pending_assign = '' + formData.pending_booking = '' + formData.completed_appointment = '' pager.page = 1 getLists() fetchDateCounts() @@ -1532,6 +1588,36 @@ onUnmounted(() => { } } + .chip-pending-booking { + margin-left: 8px; + color: var(--el-color-info); + background: var(--el-color-info-light-9); + + &:hover { + background: var(--el-color-info-light-8); + } + + &.active { + color: #fff; + background: var(--el-color-info); + } + } + + .chip-completed-visit { + margin-left: 8px; + color: var(--el-color-success); + background: var(--el-color-success-light-9); + + &:hover { + background: var(--el-color-success-light-8); + } + + &.active { + color: #fff; + background: var(--el-color-success); + } + } + .chip-pending { margin-left: 8px; color: var(--el-color-warning);