优化订单管理代管展示

This commit is contained in:
yml2213
2026-07-26 10:15:49 +08:00
parent 3107c54b65
commit 756fa342cb
5 changed files with 44 additions and 1 deletions
+1
View File
@@ -130,6 +130,7 @@ type AdminOrderQuery struct {
Keyword string
Status string
HandoffStatus string
HandoffMode string
SettlementStatus string
}
@@ -60,6 +60,7 @@ func parseAdminOrderQuery(c *gin.Context) AdminOrderQuery {
Keyword: strings.TrimSpace(c.Query("keyword")),
Status: strings.TrimSpace(c.Query("status")),
HandoffStatus: strings.TrimSpace(c.Query("handoff_status")),
HandoffMode: strings.TrimSpace(c.Query("handoff_mode")),
SettlementStatus: strings.TrimSpace(c.Query("settlement_status")),
}
}
@@ -84,6 +84,12 @@ func applyAdminOrderFilters(db *gorm.DB, query AdminOrderQuery) *gorm.DB {
if query.HandoffStatus != "" {
db = db.Where("o.handoff_status = ?", query.HandoffStatus)
}
switch query.HandoffMode {
case handoffModePlatform:
db = db.Where("(o.handoff_mode = ? OR o.settlement_mode = ?)", handoffModePlatform, settlementModePlatformManaged)
case handoffModeOwner, "normal":
db = db.Where("COALESCE(NULLIF(o.handoff_mode, ''), ?) <> ? AND COALESCE(NULLIF(o.settlement_mode, ''), ?) <> ?", handoffModeOwner, handoffModePlatform, settlementModeOwnerWallet, settlementModePlatformManaged)
}
if query.SettlementStatus != "" {
db = db.Where("o.settlement_status = ?", query.SettlementStatus)
}
@@ -18,6 +18,7 @@ const filters = reactive<AdminOrderQuery>({
keyword: '',
status: '',
handoff_status: '',
handoff_mode: '',
settlement_status: '',
})
const loading = ref(false)
@@ -54,6 +55,11 @@ const handoffStatusOptions = [
{ label: '客服标记异常', value: 'admin_abnormal' },
] as const
const handoffModeOptions = [
{ label: '正常订单', value: 'owner' },
{ label: '平台代管', value: 'platform' },
] as const
const settlementStatusOptions = [
{ label: '未结算', value: 'unsettled' },
{ label: '待结算', value: 'pending' },
@@ -75,6 +81,7 @@ async function loadOrders() {
keyword: filters.keyword?.trim(),
status: filters.status,
handoff_status: filters.handoff_status,
handoff_mode: filters.handoff_mode,
settlement_status: filters.settlement_status,
})
orders.value = result.items
@@ -97,6 +104,7 @@ function resetFilters() {
filters.keyword = ''
filters.status = ''
filters.handoff_status = ''
filters.handoff_mode = ''
filters.settlement_status = ''
void queryOrders()
}
@@ -113,6 +121,10 @@ function money(value: unknown) {
function userText(value: string | number | undefined) {
return value || '-'
}
function isPlatformManaged(row: Order) {
return row.handoff_mode === 'platform' || row.settlement_mode === 'platform_managed'
}
</script>
<template>
@@ -172,6 +184,22 @@ function userText(value: string | number | undefined) {
/>
</el-select>
</el-form-item>
<el-form-item label="订单类型">
<el-select
v-model="filters.handoff_mode"
clearable
placeholder="全部"
style="width: 130px"
@change="queryOrders"
>
<el-option
v-for="item in handoffModeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="结算状态">
<el-select
v-model="filters.settlement_status"
@@ -225,7 +253,8 @@ function userText(value: string | number | undefined) {
<template #default="{ row }">
<div class="stacked-cell compact">
<span>租客 {{ userText(row.renter_phone || row.renter_id) }}</span>
<span>号主 {{ userText(row.owner_phone || row.owner_id) }}</span>
<span v-if="isPlatformManaged(row)" class="platform-managed-owner">号主 平台代管</span>
<span v-else>号主 {{ userText(row.owner_phone || row.owner_id) }}</span>
</div>
</template>
</el-table-column>
@@ -349,6 +378,11 @@ function userText(value: string | number | undefined) {
gap: 2px;
}
.stacked-cell .platform-managed-owner {
color: #d97706;
font-weight: 700;
}
.money-cell {
align-items: flex-end;
}
@@ -172,6 +172,7 @@ export interface AdminOrderQuery {
keyword?: string
status?: string
handoff_status?: string
handoff_mode?: string
settlement_status?: string
}