优化订单管理代管展示
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user