提交一次全量代码

This commit is contained in:
andy
2026-07-09 11:59:34 +08:00
parent 855396e553
commit 9fa608f602
58 changed files with 8439 additions and 116 deletions

View File

@@ -27,7 +27,7 @@
<input
v-model="filters.keyword"
type="search"
placeholder="GRP-001 / Booking"
:placeholder="t('taskList.keywordPlaceholder')"
@input="resetToFirstPage"
>
</label>
@@ -37,7 +37,7 @@
v-model="filters.task_type"
@change="resetToFirstPage"
>
<option value="">All</option>
<option value="">{{ t('common.all') }}</option>
<option value="NEW_BOOKING">{{ t('cardType.NEW_BOOKING') }}</option>
<option value="UPDATE_BOOKING">{{ t('cardType.UPDATE_BOOKING') }}</option>
<option value="CANCEL_BOOKING">{{ t('cardType.CANCEL_BOOKING') }}</option>
@@ -51,7 +51,7 @@
v-model="filters.task_status"
@change="resetToFirstPage"
>
<option value="">All</option>
<option value="">{{ t('common.all') }}</option>
<option value="PENDING_CONFIRM">{{ t('status.PENDING_CONFIRM') }}</option>
<option value="READY">{{ t('status.READY') }}</option>
<option value="BLOCKED">{{ t('status.BLOCKED') }}</option>
@@ -61,15 +61,15 @@
<label>
<span>{{ t('workbench.orderStatus') }}</span>
<select
value=""
disabled
v-model="filters.order_status"
@change="resetToFirstPage"
>
<option value="">All</option>
<option value="">{{ t('common.all') }}</option>
<option value="TEMPORARY">{{ t('status.TEMPORARY') }}</option>
<option value="ACTIVE">{{ t('status.ACTIVE') }}</option>
<option value="ENDED">{{ t('status.ENDED') }}</option>
<option value="LOGIC_DELETED">{{ t('status.LOGIC_DELETED') }}</option>
</select>
<small class="filter-hint">{{ t('taskList.orderStatusFilterPending') }}</small>
</label>
<label>
<span>{{ t('taskList.queueParticipation') }}</span>
@@ -139,13 +139,13 @@
>
<td>
<strong class="th-code">#{{ task.task_id }}</strong>
<small>{{ task.task_type }} / {{ task.task_subtype ?? '-' }}</small>
<small>{{ formatReservationTaskTypeSummary(t, task.task_type, task.task_subtype) }}</small>
</td>
<td>
<strong>{{ task.display_order_key ?? task.temporary_order_no ?? task.order_id }}</strong>
<small class="th-code">{{ task.order_id }}</small>
</td>
<td>{{ task.card_name ?? task.task_type }}</td>
<td>{{ formatReservationTaskCard(t, task.task_type, task.card_name) }}</td>
<td><ReservationStatusBadge :status="task.task_status" /></td>
<td>
<span>{{ task.source_subject ?? t('taskList.noSourceSubject') }}</span>
@@ -153,7 +153,7 @@
</td>
<td>
<span>{{ task.queue_sequence ?? '-' }}</span>
<small>{{ task.can_process ? t('taskList.canProcess') : task.readonly_reason_code ?? '-' }}</small>
<small>{{ task.can_process ? t('taskList.canProcess') : formatReservationReadonlyReason(t, task.readonly_reason_code) }}</small>
</td>
<td>
<div class="row-actions">
@@ -233,6 +233,11 @@ import { useI18n } from 'vue-i18n'
import ReservationStatusBadge from '@/components/reservation/ReservationStatusBadge.vue'
import { fetchReservationTaskList } from '@/services/reservationService'
import type { ReservationPageResult, ReservationTaskListFilters, ReservationTaskListItem } from '@/types/reservation'
import {
formatReservationReadonlyReason,
formatReservationTaskCard,
formatReservationTaskTypeSummary,
} from '@/utils/reservationDisplay'
const { t } = useI18n()
const loading = ref(false)
@@ -247,6 +252,7 @@ const filters = reactive<ReservationTaskListFilters>({
keyword: '',
task_type: '',
task_status: '',
order_status: '',
queue_participation: undefined,
page_num: 1,
page_size: 20,
@@ -289,6 +295,7 @@ function resetFilters(): void {
filters.keyword = ''
filters.task_type = ''
filters.task_status = ''
filters.order_status = ''
filters.queue_participation = undefined
filters.page_num = 1
filters.page_size = 20