This commit is contained in:
Your Name
2026-05-06 11:17:31 +08:00
parent 71180d4fd8
commit dddc4d202a
3 changed files with 170 additions and 7 deletions
+62 -7
View File
@@ -37,12 +37,26 @@
<em v-if="completedVisitCount !== undefined">{{ completedVisitCount }}</em>
</span>
<span
:class="['chip', 'chip-pending', { active: formData.pending_assign === '1' }]"
@click="handlePendingAssignTabClick"
v-perms="['tcm.diagnosis/assign']"
class="pending-assign-wrap"
v-perms="['tcm.diagnosis/assign']"
>
待分配医助
<em v-if="pendingAssignCount !== undefined">{{ pendingAssignCount }}</em>
<span
:class="['chip', 'chip-pending', { active: formData.pending_assign === '1' }]"
@click="handlePendingAssignTabClick"
>
待分配医助
<em v-if="pendingAssignCount !== undefined">{{ pendingAssignCount }}</em>
</span>
<el-date-picker
v-if="formData.pending_assign === '1'"
v-model="formData.pending_assign_order_month"
type="month"
placeholder="订单月份"
value-format="YYYY-MM"
clearable
class="pending-assign-month"
@change="onPendingAssignOrderMonthChange"
/>
</span>
</div>
<div class="search-row">
@@ -705,7 +719,9 @@ const formData = reactive({
/** 顶部「待预约」Tab:仅展示已建诊单且尚未挂号(无有效预约) */
pending_booking: '' as '' | '1',
/** 顶部「已完成」Tab:至少有一条挂号记录为已完成 status=3 */
completed_appointment: '' as '' | '1'
completed_appointment: '' as '' | '1',
/** 待分配医助:按业务订单创建月份筛选 YYYY-MM,空表示不限月份 */
pending_assign_order_month: '' as string
})
const activeTab = ref('all')
@@ -763,6 +779,7 @@ const pendingAssignCount = ref<number | undefined>(undefined)
const handleDateTabClick = async (value: string) => {
formData.pending_assign = ''
formData.pending_assign_order_month = ''
formData.pending_booking = ''
formData.completed_appointment = ''
formData.has_appointment = ''
@@ -775,6 +792,7 @@ const handleDateTabClick = async (value: string) => {
/** 已创建诊单、尚未挂号的记录(与第二行「未挂号」同条件,便于从 Tab 一键进入) */
const handlePendingBookingTabClick = async () => {
formData.pending_assign = ''
formData.pending_assign_order_month = ''
formData.pending_booking = '1'
formData.completed_appointment = ''
formData.appointment_date = ''
@@ -787,6 +805,7 @@ const handlePendingBookingTabClick = async () => {
/** 至少有一条挂号为「已完成」(后端 appointment.status=3) */
const handleCompletedVisitTabClick = async () => {
formData.pending_assign = ''
formData.pending_assign_order_month = ''
formData.pending_booking = ''
formData.completed_appointment = '1'
formData.has_appointment = ''
@@ -802,6 +821,18 @@ const handlePendingAssignTabClick = async () => {
formData.completed_appointment = ''
formData.has_appointment = ''
formData.appointment_date = ''
if (!formData.pending_assign_order_month) {
formData.pending_assign_order_month = dayjs().format('YYYY-MM')
}
pager.page = 1
await getLists()
fetchDateCounts()
}
/** 待分配:切换订单月份后刷新列表与角标 */
const onPendingAssignOrderMonthChange = async (val: string | null) => {
formData.pending_assign_order_month = val || ''
if (formData.pending_assign !== '1') return
pager.page = 1
await getLists()
fetchDateCounts()
@@ -819,7 +850,14 @@ const fetchDateCounts = async () => {
tcmDiagnosisLists({ 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 })
tcmDiagnosisLists({
pending_assign: 1,
page_no: 1,
page_size: 1,
...(formData.pending_assign === '1' && formData.pending_assign_order_month
? { pending_assign_order_month: formData.pending_assign_order_month }
: {})
})
])
dateCounts.value = {
[yesterdayStr.value]: yesterday?.count ?? 0,
@@ -971,6 +1009,7 @@ const handleReset = () => {
formData.appointment_date = ''
formData.has_appointment = ''
formData.pending_assign = ''
formData.pending_assign_order_month = ''
formData.pending_booking = ''
formData.completed_appointment = ''
pager.page = 1
@@ -1939,6 +1978,22 @@ onUnmounted(() => {
background: var(--el-color-warning);
}
}
.pending-assign-wrap {
display: inline-flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
margin-left: 8px;
.chip-pending {
margin-left: 0;
}
}
.pending-assign-month {
width: 128px;
}
}
.search-row {