-
-
- {{ formatHafCoinM(getCoinWan(listing)) }}
-
-
-
- {{ readAssetString(listing, 'season_insurance') || '--' }}
-
-
-
- {{ readAssetString(listing, 'stamina_level') }}/{{
- readAssetString(listing, 'load_level')
- }}
-
-
-
-
-
- {{ getResourceQuantity(listing, 'awmAmmo') }}发
+
+
基础资料
+
+
+
+ {{ stat.value }}
+
+ {{ stat.value }}...
-
-
-
- {{ getResourceQuantity(listing, 'helmet6') }}头 /
- {{ getResourceQuantity(listing, 'armor6') }}甲
-
-
-
-
- 巴雷特 {{ getResourceQuantity(listing, 'barrett') }} / 喷子
- {{ getResourceQuantity(listing, 'shotgun') }}
-
+
-
-
-
- {{ readAssetNumber(listing, 'secret_kd') || '--' }}
-
-
-
- {{ listing.rank_level || '未公开' }}
-
-
-
- {{ getServerRegion(listing) }}
-
-
-
-
-
-
- {{ getLoginMethod(listing) }}
-
-
-
- {{ getOnlineTimeText(listing) || '全天候' }}
-
-
-
-
- {{ getSkinNames(listing).slice(0, 2).join(', ') || '暂无皮肤' }}
- ...
-
-
+
+
额外物资
+
+
+ {{ resource.label }}
+ {{ formatResourceQuantity(resource) }}
+ 赠送
+
@@ -233,14 +230,16 @@ const coverURL = computed(() => props.listing.cover_url || props.listing.screens
.card-details {
display: flex;
flex-direction: column;
+ gap: 12px;
min-width: 0;
}
.card-title-row {
display: flex;
+ gap: 12px;
justify-content: space-between;
align-items: center;
- margin-bottom: 16px;
+ margin-bottom: 0;
}
.card-title-row h3 {
@@ -254,6 +253,7 @@ const coverURL = computed(() => props.listing.cover_url || props.listing.screens
}
.daily-loss {
+ flex: 0 0 auto;
padding: 4px 10px;
background: #f1f5f9;
border-radius: 6px;
@@ -262,46 +262,121 @@ const coverURL = computed(() => props.listing.cover_url || props.listing.screens
color: #64748b;
}
-.stats-grid {
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: 20px;
+.info-panel,
+.resource-panel {
+ border-radius: 14px;
+ background: #f8fafc;
}
-.stats-col {
+.info-panel {
+ padding: 10px 12px 12px;
+}
+
+.resource-panel {
display: flex;
- flex-direction: column;
gap: 12px;
+ align-items: flex-start;
+ padding: 10px 12px;
}
-.stat-row {
- display: flex;
- flex-direction: column;
- gap: 4px;
-}
-
-.stat-row label {
+.panel-title {
+ flex: 0 0 auto;
+ margin-bottom: 8px;
font-size: 11px;
color: #94a3b8;
- font-weight: 600;
+ font-weight: 800;
+ letter-spacing: 0.04em;
}
-.stat-row span,
-.stat-row strong {
+.resource-panel .panel-title {
+ margin: 4px 0 0;
+}
+
+.info-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
+ gap: 8px 10px;
+}
+
+.info-item {
+ min-width: 0;
+ padding: 8px 10px;
+ border: 1px solid #edf1f7;
+ border-radius: 10px;
+ background: #ffffff;
+}
+
+.info-item label {
+ display: block;
+ margin-bottom: 3px;
+ font-size: 11px;
+ color: #94a3b8;
+ font-weight: 700;
+}
+
+.info-item span,
+.info-item strong {
+ display: block;
+ overflow: hidden;
font-size: 13px;
color: #334155;
- font-weight: 600;
+ font-weight: 700;
+ line-height: 1.35;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
-.stat-row strong {
+.info-item strong {
color: #ff6a00;
}
-.stat-row .highlight {
+.info-item .highlight {
color: #10b981;
font-weight: 700;
}
+.resource-chips {
+ display: flex;
+ flex: 1;
+ flex-wrap: wrap;
+ gap: 8px;
+ min-width: 0;
+}
+
+.resource-chip {
+ display: inline-flex;
+ align-items: center;
+ gap: 5px;
+ max-width: 100%;
+ padding: 6px 10px;
+ border: 1px solid #fed7aa;
+ border-radius: 999px;
+ background: #fff7ed;
+ color: #9a3412;
+ font-size: 12px;
+ font-weight: 800;
+}
+
+.resource-chip em {
+ overflow: hidden;
+ font-style: normal;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.resource-chip strong {
+ color: #ea580c;
+}
+
+.resource-chip small {
+ padding: 1px 5px;
+ border-radius: 999px;
+ background: #dcfce7;
+ color: #15803d;
+ font-size: 10px;
+ font-weight: 800;
+}
+
.card-price {
display: flex;
flex-direction: column;
diff --git a/frontend/src/features/listings/views/MobileHomeView.css b/frontend/src/features/listings/views/MobileHomeView.css
index 324ecb3..b83642a 100644
--- a/frontend/src/features/listings/views/MobileHomeView.css
+++ b/frontend/src/features/listings/views/MobileHomeView.css
@@ -337,7 +337,6 @@
gap: 6px;
}
-.trust-badge,
.server-badge,
.card-chip-row span {
padding: 3px 7px;
@@ -347,11 +346,6 @@
font-size: 11px;
}
-.trust-badge {
- background: #ecfdf5;
- color: #047857;
-}
-
.card-footer {
margin-top: 10px;
}
diff --git a/frontend/src/features/listings/views/MobileHomeView.vue b/frontend/src/features/listings/views/MobileHomeView.vue
index 58103ce..bbf74f0 100644
--- a/frontend/src/features/listings/views/MobileHomeView.vue
+++ b/frontend/src/features/listings/views/MobileHomeView.vue
@@ -512,7 +512,6 @@ function uniqueOptions(values: string[]) {
{{ getListingSubtitle(item) }}
- 押金秒退
{{ getServerRegion(item) }}
{{ getLoginMethod(item) }}
diff --git a/frontend/src/features/seller/composables/usePublishForm.ts b/frontend/src/features/seller/composables/usePublishForm.ts
index a3cd613..a8fb76b 100644
--- a/frontend/src/features/seller/composables/usePublishForm.ts
+++ b/frontend/src/features/seller/composables/usePublishForm.ts
@@ -693,13 +693,17 @@ export function usePublishForm(options: UsePublishFormOptions) {
season_insurance: form.season_insurance,
stamina_level: form.stamina_level,
load_level: form.load_level,
- resources: pricing.quantityItems.value.map(item => ({
- key: item.key,
- label: item.label,
- price: item.price,
- quantity: pricing.isQuantityItemDisabled(item) ? 0 : Number(quantityValues[item.key] || 0),
- mode: pricing.isQuantityItemDisabled(item) ? '赠送' : quantityModes[item.key] || '收费',
- })),
+ resources: pricing.quantityItems.value
+ .map(item => ({
+ key: item.key,
+ label: item.label,
+ price: item.price,
+ quantity: pricing.isQuantityItemDisabled(item)
+ ? 0
+ : Number(quantityValues[item.key] || 0),
+ mode: pricing.isQuantityItemDisabled(item) ? '赠送' : quantityModes[item.key] || '收费',
+ }))
+ .filter(item => item.quantity > 0),
skin_groups: pricing.skinGroups.value.reduce>((groups, group) => {
groups[group.key] = group.options.filter(skin => selectedSkins.value.includes(skin))
return groups
diff --git a/frontend/src/shared/utils/listingDisplay.ts b/frontend/src/shared/utils/listingDisplay.ts
index e45a22d..0686d22 100644
--- a/frontend/src/shared/utils/listingDisplay.ts
+++ b/frontend/src/shared/utils/listingDisplay.ts
@@ -219,11 +219,7 @@ export function getDailyLoss(item: Listing) {
export function getDailyLossM(item: Listing) {
const configuredLoss = readAssetNumber(item, 'daily_loss_m')
if (configuredLoss > 0) return configuredLoss
-
- const coinWan = getCoinWan(item)
- if (coinWan >= 30000) return 30
- if (coinWan >= 10000) return 20
- return 10
+ return 0
}
export function getEstimatedRentalDays(item: Listing) {
diff --git a/frontend/src/utils/listingDisplay.ts b/frontend/src/utils/listingDisplay.ts
index a5a1f1a..56f4a34 100644
--- a/frontend/src/utils/listingDisplay.ts
+++ b/frontend/src/utils/listingDisplay.ts
@@ -219,11 +219,7 @@ export function getDailyLoss(item: Listing) {
export function getDailyLossM(item: Listing) {
const configuredLoss = readAssetNumber(item, 'daily_loss_m')
if (configuredLoss > 0) return configuredLoss
-
- const coinWan = getCoinWan(item)
- if (coinWan >= 30000) return 30
- if (coinWan >= 10000) return 20
- return 10
+ return 0
}
export function getEstimatedRentalDays(item: Listing) {