优化商品管理筛选功能

This commit is contained in:
yml2213
2026-07-09 23:55:19 +08:00
parent 0a5448b3f5
commit ef67375132
9 changed files with 252 additions and 56 deletions
@@ -36,6 +36,10 @@ const filters = reactive<AdminListingQuery>({
load: '',
skin_group: '',
skin_name: '',
min_coin: undefined,
max_coin: undefined,
min_deposit: undefined,
max_deposit: undefined,
})
type FilterPopover = 'asset' | 'skin'
@@ -148,6 +152,10 @@ function resetFilters() {
filters.owner_id = ''
filters.status = ''
filters.review_status = ''
filters.min_coin = undefined
filters.max_coin = undefined
filters.min_deposit = undefined
filters.max_deposit = undefined
clearAssetFilters(false)
clearSkinFilters(false)
void queryListings()
@@ -551,32 +559,63 @@ function formatQuantity(value: number) {
<!-- 筛选和操作行 -->
<div class="listing-filter-row">
<el-form class="listing-filter-bar" inline>
<el-form-item label="编号">
<el-form class="listing-filter-bar" label-position="top">
<el-form-item class="filter-keyword" label="编号">
<el-input
v-model="filters.keyword"
clearable
placeholder="商品编号 / 订单编号"
style="width: 210px"
@keyup.enter="queryListings"
@clear="queryListings"
/>
</el-form-item>
<el-form-item label="号主 ID">
<el-input
v-model="filters.owner_id"
clearable
placeholder="筛选号主"
style="width: 160px"
/>
<el-form-item class="filter-owner" label="号主 ID">
<el-input v-model="filters.owner_id" clearable placeholder="筛选号主" />
</el-form-item>
<el-form-item label="商品状态">
<el-select
v-model="filters.status"
clearable
placeholder="全部状态"
style="width: 140px"
>
<el-form-item class="filter-range" label="纯币(M)">
<div class="admin-range-filter">
<el-input-number
v-model="filters.min_coin"
:min="0"
:precision="1"
:step="10"
:controls="false"
placeholder="最低"
/>
<span class="admin-range-separator">-</span>
<el-input-number
v-model="filters.max_coin"
:min="0"
:precision="1"
:step="10"
:controls="false"
placeholder="最高"
/>
</div>
</el-form-item>
<el-form-item class="filter-range" label="押金(元)">
<div class="admin-range-filter">
<el-input-number
v-model="filters.min_deposit"
:min="0"
:precision="1"
:step="100"
:controls="false"
placeholder="最低"
/>
<span class="admin-range-separator">-</span>
<el-input-number
v-model="filters.max_deposit"
:min="0"
:precision="1"
:step="100"
:controls="false"
placeholder="最高"
/>
</div>
</el-form-item>
<el-form-item class="filter-select" label="商品状态">
<el-select v-model="filters.status" clearable placeholder="全部状态">
<el-option label="草稿" value="draft" />
<el-option label="已上架" value="published" />
<el-option label="已锁定" value="rented" />
@@ -585,20 +624,15 @@ function formatQuantity(value: number) {
<el-option label="异常" value="abnormal" />
</el-select>
</el-form-item>
<el-form-item label="审核状态">
<el-select
v-model="filters.review_status"
clearable
placeholder="全部审核"
style="width: 140px"
>
<el-form-item class="filter-select" label="审核状态">
<el-select v-model="filters.review_status" clearable placeholder="全部审核">
<el-option label="未提交" value="none" />
<el-option label="待审核" value="pending" />
<el-option label="已通过" value="approved" />
<el-option label="已拒绝" value="rejected" />
</el-select>
</el-form-item>
<el-form-item label="资产">
<el-form-item class="filter-select" label="资产">
<el-popover
:visible="activeFilterPopover === 'asset'"
trigger="click"
@@ -692,7 +726,7 @@ function formatQuantity(value: number) {
</div>
</el-popover>
</el-form-item>
<el-form-item label="皮肤">
<el-form-item class="filter-skin" label="皮肤">
<el-popover
:visible="activeFilterPopover === 'skin'"
trigger="click"