feat(user-center): refine creator income details

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-08 12:54:59 +08:00
co-authored by Claude Fable 5
parent bb6085b630
commit 77331979a7
2 changed files with 45 additions and 8 deletions
+16 -5
View File
@@ -710,6 +710,7 @@
} }
/* ==================== 作者收益中心 ==================== */ /* ==================== 作者收益中心 ==================== */
.uc-content #panel-creator.dashboard-panel { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.creator-income { display: flex; flex-direction: column; gap: 16px; } .creator-income { display: flex; flex-direction: column; gap: 16px; }
.creator-income__cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .creator-income__cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.creator-income-card { padding: 18px; border: 1px solid var(--color-line); border-radius: var(--radius-lg); background: var(--surface-1); } .creator-income-card { padding: 18px; border: 1px solid var(--color-line); border-radius: var(--radius-lg); background: var(--surface-1); }
@@ -730,10 +731,14 @@
.creator-income__details { padding: 4px 0 0; } .creator-income__details { padding: 4px 0 0; }
.creator-income__toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 14px; } .creator-income__toolbar { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.creator-income__list { border-top: 1px solid var(--color-line); } .creator-income__list { border-top: 1px solid var(--color-line); }
.creator-income-row { display: grid; grid-template-columns: minmax(110px, .8fr) minmax(0, 1fr) auto; align-items: center; gap: 14px; min-width: 0; padding: 14px 0; border-bottom: 1px solid var(--color-line); } .creator-income-row { display: grid; grid-template-columns: minmax(120px, .8fr) minmax(86px, auto) minmax(0, 1fr) minmax(180px, auto); align-items: center; gap: 14px; min-width: 0; padding: 14px 0; border-bottom: 1px solid var(--color-line); }
.creator-income-row__currency { color: var(--color-ink-3); font-size: 13px; } .creator-income-row__order,
.creator-income-row__amount { min-width: 0; overflow: hidden; color: #16816c; font-size: 15px; font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; } .creator-income-row__source { min-width: 0; overflow: hidden; color: var(--color-ink-3); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.creator-income-row__status { justify-self: end; padding: 3px 8px; border-radius: var(--radius-pill); color: var(--color-ink-4); background: var(--surface-2); font-size: 11px; white-space: nowrap; } .creator-income-row__currency { color: var(--color-ink-3); font-size: 13px; white-space: nowrap; }
.creator-income-row__detail { display: flex; align-items: center; justify-content: flex-end; gap: 10px; min-width: 0; }
.creator-income-row__amount { flex-shrink: 0; color: #16816c; font-size: 15px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.creator-income-row__time { flex-shrink: 0; color: var(--color-ink-4); font-size: 12px; white-space: nowrap; }
.creator-income-row__status { flex-shrink: 0; padding: 3px 8px; border-radius: var(--radius-pill); color: var(--color-ink-4); background: var(--surface-2); font-size: 11px; white-space: nowrap; }
.creator-income-row__status--settled { color: #16816c; background: rgba(22, 129, 108, .1); } .creator-income-row__status--settled { color: #16816c; background: rgba(22, 129, 108, .1); }
.creator-income-row__status--pending { color: #a86d28; background: rgba(168, 109, 40, .12); } .creator-income-row__status--pending { color: #a86d28; background: rgba(168, 109, 40, .12); }
.creator-income__pagination { display: flex; justify-content: center; gap: 6px; padding-top: 16px; } .creator-income__pagination { display: flex; justify-content: center; gap: 6px; padding-top: 16px; }
@@ -745,11 +750,17 @@
@media (max-width: 767px) { @media (max-width: 767px) {
.creator-income__cards { grid-template-columns: 1fr; } .creator-income__cards { grid-template-columns: 1fr; }
.creator-income-card__metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } .creator-income-card__metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.creator-income-row { grid-template-columns: minmax(100px, .8fr) minmax(78px, auto) minmax(0, 1fr) auto; gap: 10px; }
.creator-income-row__detail { align-items: flex-end; flex-direction: column; gap: 4px; }
} }
@media (max-width: 480px) { @media (max-width: 480px) {
.creator-income-row { grid-template-columns: minmax(82px, .8fr) minmax(0, 1fr) auto; gap: 8px; } .creator-income__details { padding: 16px; }
.creator-income-row { grid-template-columns: minmax(82px, .8fr) minmax(72px, auto) minmax(0, 1fr) auto; gap: 8px; padding: 12px 0; }
.creator-income-row__order,
.creator-income-row__currency, .creator-income-row__currency,
.creator-income-row__source { font-size: 12px; }
.creator-income-row__amount { font-size: 13px; } .creator-income-row__amount { font-size: 13px; }
.creator-income-row__time { font-size: 11px; }
.creator-income-row__status { padding-inline: 6px; } .creator-income-row__status { padding-inline: 6px; }
} }
@@ -79,7 +79,7 @@ $currency_labels = [
<div><?php echo wp_kses_post($note); ?></div> <div><?php echo wp_kses_post($note); ?></div>
</section> </section>
<section class="creator-income__details"> <section class="creator-income__details widget-card">
<div class="creator-income__toolbar"> <div class="creator-income__toolbar">
<div> <div>
<h2><?php esc_html_e('收入明细', 'aksrt'); ?></h2> <h2><?php esc_html_e('收入明细', 'aksrt'); ?></h2>
@@ -97,11 +97,37 @@ $currency_labels = [
$unit = (string) ($item['currency'] ?? 'CNY') === 'points' ? 'points' : 'CNY'; $unit = (string) ($item['currency'] ?? 'CNY') === 'points' ? 'points' : 'CNY';
$status = (string) ($item['status'] ?? '') === 'pending' ? 'pending' : 'settled'; $status = (string) ($item['status'] ?? '') === 'pending' ? 'pending' : 'settled';
$amount = $format($item['amount'] ?? 0, $unit); $amount = $format($item['amount'] ?? 0, $unit);
$order_number = trim((string) ($item['order_number'] ?? ''));
$order_number = $order_number !== '' ? $order_number : __('订单编号未知', 'aksrt');
$post = get_post((int) ($item['post_id'] ?? 0));
$source = $post instanceof WP_Post && $post->post_type === 'post'
? get_the_title($post)
: __('内容已删除', 'aksrt');
$source = trim((string) $source) !== '' ? (string) $source : __('内容已删除', 'aksrt');
$created_at = trim((string) ($item['created_at'] ?? ''));
$time_label = '';
$time_datetime = '';
if ($created_at !== '') {
try {
$created = new DateTimeImmutable($created_at, wp_timezone());
$time_datetime = $created->format('c');
$time_label = wp_date(get_option('date_format') . ' ' . get_option('time_format'), $created->getTimestamp());
} catch (Exception $exception) {
$time_label = '';
}
}
?> ?>
<article class="creator-income-row" role="listitem"> <article class="creator-income-row" role="listitem">
<span class="creator-income-row__order" title="<?php echo esc_attr($order_number); ?>"><?php echo esc_html($order_number); ?></span>
<span class="creator-income-row__currency"><?php echo esc_html($currency_labels[$unit === 'points' ? 'points' : 'CNY']); ?></span> <span class="creator-income-row__currency"><?php echo esc_html($currency_labels[$unit === 'points' ? 'points' : 'CNY']); ?></span>
<span class="creator-income-row__source" title="<?php echo esc_attr($source); ?>"><?php echo esc_html($source); ?></span>
<span class="creator-income-row__detail">
<strong class="creator-income-row__amount">+<?php echo esc_html($amount . ($unit === 'points' ? __('积分', 'aksrt') : __('现金', 'aksrt'))); ?></strong> <strong class="creator-income-row__amount">+<?php echo esc_html($amount . ($unit === 'points' ? __('积分', 'aksrt') : __('现金', 'aksrt'))); ?></strong>
<?php if ($time_label !== '') : ?>
<time class="creator-income-row__time" datetime="<?php echo esc_attr($time_datetime); ?>"><?php echo esc_html($time_label); ?></time>
<?php endif; ?>
<span class="creator-income-row__status creator-income-row__status--<?php echo esc_attr($status); ?>"><?php echo esc_html($status_labels[$status]); ?></span> <span class="creator-income-row__status creator-income-row__status--<?php echo esc_attr($status); ?>"><?php echo esc_html($status_labels[$status]); ?></span>
</span>
</article> </article>
<?php endforeach; ?> <?php endforeach; ?>
</div> </div>