优化订单管理代管展示

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 Keyword string
Status string Status string
HandoffStatus string HandoffStatus string
HandoffMode string
SettlementStatus string SettlementStatus string
} }
@@ -60,6 +60,7 @@ func parseAdminOrderQuery(c *gin.Context) AdminOrderQuery {
Keyword: strings.TrimSpace(c.Query("keyword")), Keyword: strings.TrimSpace(c.Query("keyword")),
Status: strings.TrimSpace(c.Query("status")), Status: strings.TrimSpace(c.Query("status")),
HandoffStatus: strings.TrimSpace(c.Query("handoff_status")), HandoffStatus: strings.TrimSpace(c.Query("handoff_status")),
HandoffMode: strings.TrimSpace(c.Query("handoff_mode")),
SettlementStatus: strings.TrimSpace(c.Query("settlement_status")), SettlementStatus: strings.TrimSpace(c.Query("settlement_status")),
} }
} }
@@ -84,6 +84,12 @@ func applyAdminOrderFilters(db *gorm.DB, query AdminOrderQuery) *gorm.DB {
if query.HandoffStatus != "" { if query.HandoffStatus != "" {
db = db.Where("o.handoff_status = ?", 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 != "" { if query.SettlementStatus != "" {
db = db.Where("o.settlement_status = ?", query.SettlementStatus) db = db.Where("o.settlement_status = ?", query.SettlementStatus)
} }
@@ -18,6 +18,7 @@ const filters = reactive<AdminOrderQuery>({
keyword: '', keyword: '',
status: '', status: '',
handoff_status: '', handoff_status: '',
handoff_mode: '',
settlement_status: '', settlement_status: '',
}) })
const loading = ref(false) const loading = ref(false)
@@ -54,6 +55,11 @@ const handoffStatusOptions = [
{ label: '客服标记异常', value: 'admin_abnormal' }, { label: '客服标记异常', value: 'admin_abnormal' },
] as const ] as const
const handoffModeOptions = [
{ label: '正常订单', value: 'owner' },
{ label: '平台代管', value: 'platform' },
] as const
const settlementStatusOptions = [ const settlementStatusOptions = [
{ label: '未结算', value: 'unsettled' }, { label: '未结算', value: 'unsettled' },
{ label: '待结算', value: 'pending' }, { label: '待结算', value: 'pending' },
@@ -75,6 +81,7 @@ async function loadOrders() {
keyword: filters.keyword?.trim(), keyword: filters.keyword?.trim(),
status: filters.status, status: filters.status,
handoff_status: filters.handoff_status, handoff_status: filters.handoff_status,
handoff_mode: filters.handoff_mode,
settlement_status: filters.settlement_status, settlement_status: filters.settlement_status,
}) })
orders.value = result.items orders.value = result.items
@@ -97,6 +104,7 @@ function resetFilters() {
filters.keyword = '' filters.keyword = ''
filters.status = '' filters.status = ''
filters.handoff_status = '' filters.handoff_status = ''
filters.handoff_mode = ''
filters.settlement_status = '' filters.settlement_status = ''
void queryOrders() void queryOrders()
} }
@@ -113,6 +121,10 @@ function money(value: unknown) {
function userText(value: string | number | undefined) { function userText(value: string | number | undefined) {
return value || '-' return value || '-'
} }
function isPlatformManaged(row: Order) {
return row.handoff_mode === 'platform' || row.settlement_mode === 'platform_managed'
}
</script> </script>
<template> <template>
@@ -172,6 +184,22 @@ function userText(value: string | number | undefined) {
/> />
</el-select> </el-select>
</el-form-item> </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-form-item label="结算状态">
<el-select <el-select
v-model="filters.settlement_status" v-model="filters.settlement_status"
@@ -225,7 +253,8 @@ function userText(value: string | number | undefined) {
<template #default="{ row }"> <template #default="{ row }">
<div class="stacked-cell compact"> <div class="stacked-cell compact">
<span>租客 {{ userText(row.renter_phone || row.renter_id) }}</span> <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> </div>
</template> </template>
</el-table-column> </el-table-column>
@@ -349,6 +378,11 @@ function userText(value: string | number | undefined) {
gap: 2px; gap: 2px;
} }
.stacked-cell .platform-managed-owner {
color: #d97706;
font-weight: 700;
}
.money-cell { .money-cell {
align-items: flex-end; align-items: flex-end;
} }
@@ -172,6 +172,7 @@ export interface AdminOrderQuery {
keyword?: string keyword?: string
status?: string status?: string
handoff_status?: string handoff_status?: string
handoff_mode?: string
settlement_status?: string settlement_status?: string
} }