优化线下结算筛选
This commit is contained in:
@@ -127,6 +127,7 @@ export interface AdminPickupListQuery {
|
||||
status?: string
|
||||
shop_name?: string
|
||||
account_source?: PickupAccountSource | ''
|
||||
offline_settlement_status?: PickupOfflineSettlementStatus | ''
|
||||
}
|
||||
|
||||
function cleanParams(query: object) {
|
||||
|
||||
@@ -21,6 +21,7 @@ const filters = reactive<AdminOrderQuery>({
|
||||
handoff_status: '',
|
||||
handoff_mode: '',
|
||||
settlement_status: '',
|
||||
offline_settlement_status: '',
|
||||
})
|
||||
const loading = ref(false)
|
||||
const orders = ref<Order[]>([])
|
||||
@@ -92,6 +93,7 @@ async function loadOrders() {
|
||||
handoff_status: filters.handoff_status,
|
||||
handoff_mode: filters.handoff_mode,
|
||||
settlement_status: filters.settlement_status,
|
||||
offline_settlement_status: filters.offline_settlement_status,
|
||||
})
|
||||
orders.value = result.items
|
||||
total.value = result.total
|
||||
@@ -115,6 +117,7 @@ function resetFilters() {
|
||||
filters.handoff_status = ''
|
||||
filters.handoff_mode = ''
|
||||
filters.settlement_status = ''
|
||||
filters.offline_settlement_status = ''
|
||||
void queryOrders()
|
||||
}
|
||||
|
||||
@@ -225,6 +228,18 @@ function isPlatformManaged(row: Order) {
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="线下结算">
|
||||
<el-select
|
||||
v-model="filters.offline_settlement_status"
|
||||
clearable
|
||||
placeholder="全部"
|
||||
style="width: 150px"
|
||||
@change="queryOrders"
|
||||
>
|
||||
<el-option label="待确认线下结算" value="pending" />
|
||||
<el-option label="已确认线下结算" value="settled" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" :icon="Search" :loading="loading" @click="queryOrders"
|
||||
>查询</el-button
|
||||
|
||||
@@ -16,6 +16,7 @@ import {
|
||||
type AvailableListing,
|
||||
type AvailableListingSourceType,
|
||||
type PickupAccountSource,
|
||||
type PickupOfflineSettlementStatus,
|
||||
} from '@/features/admin/api/adminPickup'
|
||||
import { centToYuan, formatCentWithSymbol, yuanToCent } from '@/shared/utils/money'
|
||||
import { formatDateTime } from '@/shared/utils/time'
|
||||
@@ -32,6 +33,7 @@ const filters = reactive({
|
||||
status: '',
|
||||
shop_name: '',
|
||||
account_source: '' as PickupAccountSource | '',
|
||||
offline_settlement_status: '' as PickupOfflineSettlementStatus | '',
|
||||
})
|
||||
|
||||
const createDialogVisible = ref(false)
|
||||
@@ -100,6 +102,16 @@ function handleSearch() {
|
||||
filters.page = 1
|
||||
loadList()
|
||||
}
|
||||
|
||||
function resetFilters() {
|
||||
filters.keyword = ''
|
||||
filters.status = ''
|
||||
filters.shop_name = ''
|
||||
filters.account_source = ''
|
||||
filters.offline_settlement_status = ''
|
||||
filters.page = 1
|
||||
loadList()
|
||||
}
|
||||
function handlePageChange(p: number) {
|
||||
filters.page = p
|
||||
loadList()
|
||||
@@ -441,39 +453,63 @@ function listingOptionLabel(item: AvailableListing) {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="filter-bar">
|
||||
<el-input
|
||||
v-model="filters.keyword"
|
||||
placeholder="提号编号 / 上架编号 / 账号标题 / 手机号"
|
||||
clearable
|
||||
style="width: 300px"
|
||||
@keyup.enter="handleSearch"
|
||||
/>
|
||||
<el-select v-model="filters.status" placeholder="状态" clearable style="width: 130px">
|
||||
<el-option label="提号中" value="picking_up" />
|
||||
<el-option label="已完成" value="completed" />
|
||||
<el-option label="已取消" value="cancelled" />
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="filters.shop_name"
|
||||
placeholder="店铺名称"
|
||||
filterable
|
||||
clearable
|
||||
style="width: 160px"
|
||||
>
|
||||
<el-option v-for="name in shopOptions" :key="name" :label="name" :value="name" />
|
||||
</el-select>
|
||||
<el-select
|
||||
v-model="filters.account_source"
|
||||
placeholder="账号来源"
|
||||
clearable
|
||||
style="width: 190px"
|
||||
>
|
||||
<el-option label="外部上传 · 平台代管" value="external_platform_managed" />
|
||||
<el-option label="站内上传" value="internal" />
|
||||
</el-select>
|
||||
<el-button type="primary" :icon="Search" @click="handleSearch">查询</el-button>
|
||||
<el-button :icon="Refresh" @click="loadList">刷新</el-button>
|
||||
<div class="pickup-filter-bar">
|
||||
<el-form inline @submit.prevent>
|
||||
<el-form-item label="关键词" class="pickup-keyword-filter">
|
||||
<el-input
|
||||
v-model="filters.keyword"
|
||||
placeholder="提号编号 / 上架编号 / 账号标题 / 手机号"
|
||||
clearable
|
||||
@keyup.enter="handleSearch"
|
||||
@clear="handleSearch"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="提号状态">
|
||||
<el-select v-model="filters.status" clearable placeholder="全部" @change="handleSearch">
|
||||
<el-option label="提号中" value="picking_up" />
|
||||
<el-option label="已完成" value="completed" />
|
||||
<el-option label="已取消" value="cancelled" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="店铺">
|
||||
<el-select
|
||||
v-model="filters.shop_name"
|
||||
filterable
|
||||
clearable
|
||||
placeholder="全部"
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option v-for="name in shopOptions" :key="name" :label="name" :value="name" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="账号来源">
|
||||
<el-select
|
||||
v-model="filters.account_source"
|
||||
clearable
|
||||
placeholder="全部"
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="外部上传 · 平台代管" value="external_platform_managed" />
|
||||
<el-option label="站内上传" value="internal" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="线下结算">
|
||||
<el-select
|
||||
v-model="filters.offline_settlement_status"
|
||||
clearable
|
||||
placeholder="全部"
|
||||
@change="handleSearch"
|
||||
>
|
||||
<el-option label="待确认" value="pending" />
|
||||
<el-option label="已确认" value="settled" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item class="pickup-filter-actions">
|
||||
<el-button type="primary" :icon="Search" @click="handleSearch">查询</el-button>
|
||||
<el-button @click="resetFilters">重置</el-button>
|
||||
<el-button :icon="Refresh" @click="loadList">刷新</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-table v-loading="loading" :data="items" class="table-panel">
|
||||
@@ -872,6 +908,70 @@ function listingOptionLabel(item: AvailableListing) {
|
||||
font-size: 12px;
|
||||
color: #64748b;
|
||||
}
|
||||
.pickup-filter-bar {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.pickup-filter-bar :deep(.el-form) {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 10px 16px;
|
||||
}
|
||||
|
||||
.pickup-filter-bar :deep(.el-form-item) {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.pickup-filter-bar :deep(.el-form-item__label) {
|
||||
padding-right: 7px;
|
||||
color: #52616f;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.pickup-filter-bar :deep(.el-select) {
|
||||
width: 128px;
|
||||
}
|
||||
|
||||
.pickup-filter-bar :deep(.el-form-item:nth-child(3) .el-select) {
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
.pickup-filter-bar :deep(.el-form-item:nth-child(4) .el-select) {
|
||||
width: 175px;
|
||||
}
|
||||
|
||||
.pickup-keyword-filter :deep(.el-input) {
|
||||
width: 280px;
|
||||
}
|
||||
|
||||
.pickup-filter-actions :deep(.el-form-item__content) {
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.pickup-filter-bar :deep(.el-form) {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.pickup-filter-bar :deep(.el-form-item),
|
||||
.pickup-filter-bar :deep(.el-select),
|
||||
.pickup-keyword-filter :deep(.el-input) {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pickup-filter-bar :deep(.el-form-item__content) {
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
.pickup-filter-bar :deep(.el-form) {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
}
|
||||
}
|
||||
.text-muted {
|
||||
color: #94a3b8;
|
||||
}
|
||||
|
||||
@@ -196,6 +196,7 @@ export interface AdminOrderQuery {
|
||||
handoff_status?: string
|
||||
handoff_mode?: string
|
||||
settlement_status?: string
|
||||
offline_settlement_status?: 'pending' | 'settled' | ''
|
||||
}
|
||||
|
||||
interface SubmitCheckoutRequest {
|
||||
|
||||
Reference in New Issue
Block a user