fix: 更新财经商贸页面的产品宣传海报设计数量

详细说明:
- 将产品宣传海报设计数量从3套更新为2套,以反映最新的设计进度
- 更新相关文本内容以保持一致性
- 修改文件: web_frontend/exhibition-demo/src/data/terminalSimulations/finance.ts, web_frontend/web_result/order-classes/finance/index.html
This commit is contained in:
Yep_Q
2025-10-13 20:51:02 +08:00
parent 0a79023e31
commit c31956715a
11 changed files with 612 additions and 192 deletions

View File

@@ -17,14 +17,14 @@
--hover-bg: rgba(245, 158, 11, 0.15); /* 悬停背景 */
--active-bg: rgba(37, 99, 235, 0.2); /* 激活背景 */
/* 间距系统 - 针对大屏幕优化 */
--spacing-xs: 0.75rem; /* 12px */
--spacing-sm: 1.25rem; /* 20px */
--spacing-md: 2rem; /* 32px */
--spacing-lg: 3rem; /* 48px */
--spacing-xl: 4rem; /* 64px */
--spacing-2xl: 6rem; /* 96px */
--spacing-3xl: 8rem; /* 128px */
/* 间距系统 - 优化为紧凑布局 */
--spacing-xs: 0.5rem; /* 8px - 减小从12px */
--spacing-sm: 0.75rem; /* 12px - 减小从20px */
--spacing-md: 1.25rem; /* 20px - 减小从32px */
--spacing-lg: 2rem; /* 32px - 减小从48px */
--spacing-xl: 2.5rem; /* 40px - 减小从64px */
--spacing-2xl: 3rem; /* 48px - 减小从96px */
--spacing-3xl: 4rem; /* 64px - 减小从128px */
/* 字体系统 */
--font-primary: 'Inter', 'Noto Sans SC', -apple-system, BlinkMacSystemFont, sans-serif;
@@ -567,11 +567,11 @@ body.dark-theme tr:hover {
}
.grid-3 {
grid-template-columns: repeat(2, 1fr); /* 3列改为2列,图片更大 */
grid-template-columns: repeat(3, 1fr); /* 3列布局 */
}
.grid-4 {
grid-template-columns: repeat(3, 1fr); /* 4列改为3列,图片更大 */
grid-template-columns: repeat(4, 1fr); /* 4列布局 */
}
/* ========== 卡片 - 图片优先布局 ========== */
@@ -615,10 +615,10 @@ body.dark-theme tr:hover {
flex: 1;
}
/* ========== 图片容器 - 突出展示 - 超大气布局 ========== */
/* ========== 图片容器 - 紧凑布局 ========== */
.image-container {
width: 100%;
aspect-ratio: 3/2; /* 更的比例,3:2黄金比例 */
aspect-ratio: 16/9; /* 更紧凑的比例,16:9宽屏比例 */
overflow: hidden;
border-radius: 0; /* 在卡片内时不需要圆角 */
margin-bottom: 0; /* 移除底部边距 */
@@ -635,13 +635,11 @@ body.dark-theme tr:hover {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform var(--transition-slow);
filter: brightness(0.9);
}
.image-container:hover img {
transform: scale(1.1);
filter: brightness(1.1);
filter: brightness(1.0);
}
.image-caption {
@@ -786,6 +784,121 @@ body.dark-theme tr:hover {
color: var(--primary-blue);
}
/* ========== 圆形统计图表 ========== */
.circular-stats {
padding: var(--spacing-xl);
background: var(--bg-overlay);
backdrop-filter: blur(10px);
border-radius: var(--radius-xl);
border: 2px solid var(--border-light);
box-shadow: var(--shadow-lg);
}
.circular-stats h3 {
font-size: var(--text-2xl);
color: var(--primary-blue);
font-weight: var(--font-bold);
}
.circular-stats-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: var(--spacing-2xl);
align-items: center;
justify-items: center;
}
.circular-stat-item {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--spacing-lg);
width: 100%;
max-width: 300px;
}
.circular-chart {
position: relative;
width: 200px;
height: 200px;
}
.circular-progress-svg {
width: 100%;
height: 100%;
transform: rotate(-90deg);
}
.progress-circle {
transition: stroke-dashoffset 1.5s ease-out;
}
.roi-progress {
animation: drawCircle 1.5s ease-out forwards;
}
.ctr-progress {
animation: drawCircle 1.5s ease-out forwards;
}
@keyframes drawCircle {
from {
stroke-dashoffset: 502.65;
}
}
.circular-chart-content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
.circular-value {
font-size: var(--text-3xl);
font-weight: var(--font-bold);
color: var(--primary-blue);
line-height: 1.2;
margin-bottom: var(--spacing-xs);
}
.circular-label {
font-size: var(--text-sm);
color: var(--text-gray);
font-weight: var(--font-medium);
margin-bottom: var(--spacing-xs);
}
.circular-target {
font-size: var(--text-xs);
color: var(--text-gray);
opacity: 0.8;
}
.circular-stat-label {
font-size: var(--text-lg);
color: var(--text-light);
font-weight: var(--font-semibold);
text-align: center;
}
/* 深色主题下的圆形图表调整 */
body.dark-theme .circular-value {
color: var(--accent-gold-light);
}
body.dark-theme .circular-stat-label {
color: var(--text-light);
}
/* 响应式 - 移动端单列显示 */
@media (max-width: 768px) {
.circular-stats-grid {
grid-template-columns: 1fr;
}
}
/* ========== 表格 ========== */
.table-container {
overflow-x: auto;
@@ -857,13 +970,11 @@ tr:hover {
width: 100%;
aspect-ratio: 3/2; /* 更宽的比例,展示更多细节 */
object-fit: cover;
transition: transform var(--transition-slow);
filter: brightness(0.9);
order: 1; /* 图片放在最前面 */
}
.product-card:hover .product-image {
transform: scale(1.05);
filter: brightness(1.0);
}

View File

@@ -312,7 +312,7 @@
<div class="section-content">
<div class="expert-intro">
<h3><i data-lucide="image"></i> 视觉营销体系</h3>
<p>3套产品宣传海报(深层补水/科学配方/场景化主题)+ 4套小红书种草卡片设计建立50+张可复用素材库,确保全平台视觉一致性。</p>
<p>2套产品宣传海报(深层补水/科学配方/场景化主题)+ 4套小红书种草卡片设计建立50+张可复用素材库,确保全平台视觉一致性。</p>
</div>
<div class="grid grid-2">
@@ -496,24 +496,65 @@
</div>
</div>
<div class="stats-chart" style="margin-top: var(--spacing-xl);">
<h3>投放效果指标</h3>
<div class="stat-item-chart">
<div class="stat-header">
<span class="stat-label">广告ROI</span>
<span class="stat-value ad-roi">0%</span>
<div class="circular-stats" style="margin-top: var(--spacing-xl);">
<h3 style="margin-bottom: var(--spacing-xl); text-align: center;">投放效果指标</h3>
<div class="circular-stats-grid">
<!-- 广告ROI圆形图 -->
<div class="circular-stat-item">
<div class="circular-chart">
<svg viewBox="0 0 200 200" class="circular-progress-svg">
<!-- 背景圆环 -->
<circle cx="100" cy="100" r="80"
fill="none"
stroke="var(--border-light)"
stroke-width="16"/>
<!-- 进度圆环 (420% / 350% = 120%, 显示为满圆) -->
<circle cx="100" cy="100" r="80"
fill="none"
stroke="var(--primary-blue)"
stroke-width="16"
stroke-dasharray="502.65"
stroke-dashoffset="0"
stroke-linecap="round"
transform="rotate(-90 100 100)"
class="progress-circle roi-progress"/>
</svg>
<div class="circular-chart-content">
<div class="circular-value ad-roi">0%</div>
<div class="circular-label">实际ROI</div>
<div class="circular-target">目标: 350%</div>
</div>
</div>
<div class="circular-stat-label">广告投资回报率</div>
</div>
<div class="stat-bar">
<div class="stat-bar-fill" style="width: 95%"></div>
</div>
</div>
<div class="stat-item-chart">
<div class="stat-header">
<span class="stat-label">点击率CTR</span>
<span class="stat-value">3.2%</span>
</div>
<div class="stat-bar">
<div class="stat-bar-fill" style="width: 70%"></div>
<!-- CTR圆形图 -->
<div class="circular-stat-item">
<div class="circular-chart">
<svg viewBox="0 0 200 200" class="circular-progress-svg">
<!-- 背景圆环 -->
<circle cx="100" cy="100" r="80"
fill="none"
stroke="var(--border-light)"
stroke-width="16"/>
<!-- 进度圆环 (3.2% / 5% = 64%) -->
<circle cx="100" cy="100" r="80"
fill="none"
stroke="var(--accent-gold)"
stroke-width="16"
stroke-dasharray="502.65"
stroke-dashoffset="180.95"
stroke-linecap="round"
transform="rotate(-90 100 100)"
class="progress-circle ctr-progress"/>
</svg>
<div class="circular-chart-content">
<div class="circular-value ctr-value">3.2%</div>
<div class="circular-label">点击率</div>
<div class="circular-target">目标: 5%</div>
</div>
</div>
<div class="circular-stat-label">广告点击转化率</div>
</div>
</div>
</div>

View File

@@ -163,6 +163,9 @@ function updateStats() {
animateValue(element, 0, stat.value, 2000, stat.suffix);
}
});
// 圆形进度图表动画
animateCircularProgress();
}
// 数字动画函数
@@ -275,4 +278,27 @@ function initThemeToggle() {
}
});
}
}
// 圆形进度图表动画
function animateCircularProgress() {
// 计算圆的周长: 2 * π * r, r = 80
const circumference = 2 * Math.PI * 80; // 502.65
// ROI 圆环动画 (420% / 350% = 120%, 超过目标,显示满圆)
const roiElement = document.querySelector('.ad-roi');
const roiCircle = document.querySelector('.roi-progress');
if (roiCircle && roiElement) {
const roiPercent = 420 / 350; // 120%
const roiOffset = circumference * (1 - Math.min(roiPercent, 1)); // 满圆时offset为0
roiCircle.style.strokeDashoffset = roiOffset;
}
// CTR 圆环动画 (3.2% / 5% = 64%)
const ctrCircle = document.querySelector('.ctr-progress');
if (ctrCircle) {
const ctrPercent = 3.2 / 5; // 64%
const ctrOffset = circumference * (1 - ctrPercent); // 180.95
ctrCircle.style.strokeDashoffset = ctrOffset;
}
}