feat(distribution): 支持分销上传来源追踪、主站审核展示与收售结算模式自动判定

This commit is contained in:
yml2213
2026-09-08 15:00:35 +08:00
parent a61828c6ca
commit 0fcb6a513f
14 changed files with 301 additions and 69 deletions
@@ -61,7 +61,7 @@ import {
} from '@/shared/utils/listingDisplay'
import { formatDateTime } from '@/shared/utils/time'
type RiskLevel = 'danger' | 'warning' | 'info'
type RiskLevel = 'danger' | 'warning' | 'info' | 'success'
interface RiskItem {
label: string
@@ -598,6 +598,10 @@ function sourceChannel(row: Listing) {
return isExternalUpload(row) ? '未填写' : '站内发布'
}
function isDistributionListing(row: Listing) {
return Boolean(row.distribution_site_id || sourceChannel(row).startsWith('分销站'))
}
function ownerOnlineText(row: Listing) {
const text = row.asset_summary?.online_time_text
if (typeof text === 'string' && text.trim()) return text
@@ -674,6 +678,8 @@ function riskItems(row: Listing): RiskItem[] {
level: 'info',
type: 'general',
})
} else if (isDistributionListing(row)) {
items.push({ label: `来源渠道:${sourceChannel(row)}`, level: 'success', type: 'general' })
} else {
items.push({ label: `来源渠道:${sourceChannel(row)}`, level: 'info', type: 'general' })
}
@@ -712,6 +718,7 @@ function riskItems(row: Listing): RiskItem[] {
function riskTagType(level: RiskLevel) {
if (level === 'danger') return 'danger'
if (level === 'warning') return 'warning'
if (level === 'success') return 'success'
return 'info'
}
@@ -1114,9 +1121,11 @@ async function handleScreenshotSaved(payload: { oldUrl: string; newUrl: string }
<span class="queue-deposit">押 ¥{{ formatCent(item.deposit_amount_cent) }}</span>
</div>
<div class="queue-tags">
<el-tag size="small" type="primary" effect="plain">{{
sourceChannel(item)
}}</el-tag>
<el-tag
size="small"
:type="isDistributionListing(item) ? 'success' : 'primary'"
effect="plain"
>{{ sourceChannel(item) }}</el-tag>
<el-tag v-if="isExternalUpload(item)" size="small" type="info">{{
uploaderName(item)
}}</el-tag>
@@ -30,6 +30,9 @@ export interface Listing {
review_status: ListingReviewStatus
review_reason: string
published_at?: string
distribution_site_id?: number
distribution_site_code?: string
distribution_site_name?: string
listing_group_conversation_id?: number
created_at: string
updated_at: string