补齐人工复核转换和列表筛选

This commit is contained in:
andy
2026-07-09 18:38:29 +08:00
parent e12bfd77e1
commit 1282d4aede
12 changed files with 983 additions and 15 deletions

View File

@@ -34,14 +34,36 @@
<span>{{ t('workbench.orderStatus') }}</span>
<select
v-model="filters.order_status"
name="order_status"
@change="resetToFirstPage"
>
<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>
</label>
<label>
<span>{{ t('orderList.groupCode') }}</span>
<input
v-model="filters.group_code"
name="group_code"
type="search"
:placeholder="t('orderList.groupCodePlaceholder')"
@input="resetToFirstPage"
>
</label>
<label>
<span>{{ t('orderList.confirmationNumber') }}</span>
<input
v-model="filters.confirmation_number"
name="confirmation_number"
type="search"
:placeholder="t('orderList.confirmationNumberPlaceholder')"
@input="resetToFirstPage"
>
</label>
</div>
</section>
@@ -192,6 +214,8 @@ let orderListRequestSequence = 0
const filters = reactive<ReservationOrderListFilters>({
keyword: '',
order_status: '',
group_code: '',
confirmation_number: '',
page_num: 1,
page_size: 20,
})
@@ -232,6 +256,8 @@ async function loadOrders(): Promise<void> {
function resetFilters(): void {
filters.keyword = ''
filters.order_status = ''
filters.group_code = ''
filters.confirmation_number = ''
filters.page_num = 1
filters.page_size = 20
}
@@ -291,7 +317,7 @@ function formatOrderKey(order: ReservationOrderListItem): string {
.filter-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 14px;
padding: 18px 20px 0;
}

View File

@@ -35,6 +35,7 @@
<span>{{ t('taskList.taskType') }}</span>
<select
v-model="filters.task_type"
name="task_type"
@change="resetToFirstPage"
>
<option value="">{{ t('common.all') }}</option>
@@ -45,15 +46,38 @@
<option value="INFORMATIONAL_MESSAGE">{{ t('cardType.MESSAGE_NOTIFICATION') }}</option>
</select>
</label>
<label>
<span>{{ t('taskList.taskSubtype') }}</span>
<select
v-model="filters.task_subtype"
name="task_subtype"
@change="resetToFirstPage"
>
<option value="">{{ t('common.all') }}</option>
<option value="NEW_BOOKING">{{ t('taskSubtype.NEW_BOOKING') }}</option>
<option value="UPDATE_BOOKING">{{ t('taskSubtype.UPDATE_BOOKING') }}</option>
<option value="CANCEL_BOOKING">{{ t('taskSubtype.CANCEL_BOOKING') }}</option>
<option value="RATE_CHANGE">{{ t('taskSubtype.RATE_CHANGE') }}</option>
<option value="UPDATE_STAY_DATES">{{ t('taskSubtype.UPDATE_STAY_DATES') }}</option>
<option value="UPDATE_ROOM_TYPE">{{ t('taskSubtype.UPDATE_ROOM_TYPE') }}</option>
<option value="UPDATE_FIX_CHARGE">{{ t('taskSubtype.UPDATE_FIX_CHARGE') }}</option>
<option value="NEW_GROUP_BLOCK">{{ t('taskSubtype.NEW_GROUP_BLOCK') }}</option>
<option value="NEW_FIT_RESERVATION">{{ t('taskSubtype.NEW_FIT_RESERVATION') }}</option>
<option value="MANUAL_REVIEW">{{ t('taskSubtype.MANUAL_REVIEW') }}</option>
</select>
</label>
<label>
<span>{{ t('workbench.taskStatus') }}</span>
<select
v-model="filters.task_status"
name="task_status"
@change="resetToFirstPage"
>
<option value="">{{ t('common.all') }}</option>
<option value="PENDING_CONFIRM">{{ t('status.PENDING_CONFIRM') }}</option>
<option value="READY">{{ t('status.READY') }}</option>
<option value="EXECUTING">{{ t('status.EXECUTING') }}</option>
<option value="FAILED">{{ t('status.FAILED') }}</option>
<option value="BLOCKED">{{ t('status.BLOCKED') }}</option>
<option value="COMPLETED">{{ t('status.COMPLETED') }}</option>
</select>
@@ -62,6 +86,7 @@
<span>{{ t('workbench.orderStatus') }}</span>
<select
v-model="filters.order_status"
name="order_status"
@change="resetToFirstPage"
>
<option value="">{{ t('common.all') }}</option>
@@ -75,6 +100,7 @@
<span>{{ t('taskList.queueParticipation') }}</span>
<select
v-model="filters.queue_participation"
name="queue_participation"
@change="resetToFirstPage"
>
<option :value="undefined">{{ t('taskList.queueAll') }}</option>
@@ -251,6 +277,7 @@ let taskListRequestSequence = 0
const filters = reactive<ReservationTaskListFilters>({
keyword: '',
task_type: '',
task_subtype: '',
task_status: '',
order_status: '',
queue_participation: undefined,
@@ -294,6 +321,7 @@ async function loadTasks(): Promise<void> {
function resetFilters(): void {
filters.keyword = ''
filters.task_type = ''
filters.task_subtype = ''
filters.task_status = ''
filters.order_status = ''
filters.queue_participation = undefined
@@ -345,7 +373,7 @@ function createPage(pageNum: number, pageSize: number, total: number): Reservati
.filter-grid {
display: grid;
grid-template-columns: repeat(5, minmax(0, 1fr));
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
padding: 18px 20px 0;
}