Files
TakeoutSaaS.Prototypes/pages/mkt-calendar.html

285 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 营销日历页 -->
<style>
.page-mc { max-width:1100px; }
/* 顶部控制栏 */
.mc-header {
display:flex; align-items:center; justify-content:space-between; margin-bottom:16px;
background:#fff; border-radius:10px; padding:14px 20px; box-shadow:var(--g-shadow-sm);
}
.mc-month-nav { display:flex; align-items:center; gap:12px; }
.mc-month-nav button {
width:32px; height:32px; border:1px solid #e5e7eb; border-radius:8px; background:#fff;
cursor:pointer; display:flex; align-items:center; justify-content:center;
transition:all var(--g-transition); color:var(--g-text-secondary);
}
.mc-month-nav button:hover { border-color:var(--primary); color:var(--primary); }
.mc-month-title { font-size:18px; font-weight:700; color:var(--g-text); min-width:140px; text-align:center; }
.mc-legend { display:flex; gap:14px; font-size:12px; color:var(--g-text-secondary); }
.mc-legend-item { display:flex; align-items:center; gap:4px; }
.mc-legend-dot { width:10px; height:10px; border-radius:3px; }
/* 统计 */
.mc-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:16px; }
.mc-stat-card {
background:#fff; border-radius:10px; padding:14px 18px;
box-shadow:var(--g-shadow-sm); transition:all var(--g-transition);
}
.mc-stat-card:hover { box-shadow:var(--g-shadow-md); transform:translateY(-1px); }
.mc-stat-label { font-size:12px; color:var(--g-text-muted); margin-bottom:4px; }
.mc-stat-value { font-size:20px; font-weight:700; color:var(--g-text); }
.mc-stat-value.primary { color:var(--primary); }
.mc-stat-value.orange { color:var(--g-warning); }
.mc-stat-value.green { color:var(--g-success); }
/* 甘特图容器 */
.mc-gantt {
background:#fff; border-radius:10px; box-shadow:var(--g-shadow-sm); overflow:hidden;
}
/* 日期头 */
.mc-dates {
display:grid; grid-template-columns:180px repeat(28, 1fr);
border-bottom:1px solid #e5e7eb; background:#f8f9fb;
}
.mc-dates-label {
padding:10px 16px; font-size:12px; font-weight:600; color:var(--g-text-secondary);
border-right:1px solid #f0f0f0; display:flex; align-items:center;
}
.mc-date-cell {
padding:8px 0; font-size:11px; color:var(--g-text-muted); text-align:center;
border-right:1px solid #f5f5f5;
}
.mc-date-cell.today { background:color-mix(in srgb, var(--primary) 8%, #fff); color:var(--primary); font-weight:600; }
.mc-date-cell.weekend { color:#ccc; }
/* 活动行 */
.mc-row {
display:grid; grid-template-columns:180px 1fr;
border-bottom:1px solid #f5f5f5; min-height:44px; transition:background var(--g-transition);
}
.mc-row:hover { background:color-mix(in srgb, var(--primary) 2%, #fff); }
.mc-row:last-child { border-bottom:none; }
.mc-row-label {
padding:10px 16px; font-size:13px; color:var(--g-text); display:flex;
align-items:center; gap:8px; border-right:1px solid #f0f0f0;
}
.mc-row-label-name { font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mc-type-dot { width:8px; height:8px; border-radius:2px; flex-shrink:0; }
/* 条形区域 */
.mc-bar-area {
position:relative; display:grid; grid-template-columns:repeat(28, 1fr); align-items:center;
}
.mc-bar {
position:absolute; height:24px; border-radius:4px; top:50%; transform:translateY(-50%);
font-size:11px; color:#fff; font-weight:500; display:flex; align-items:center;
padding:0 8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
cursor:pointer; transition:filter var(--g-transition);
}
.mc-bar:hover { filter:brightness(1.1); }
/* 今日线 */
.mc-today-line {
position:absolute; top:0; bottom:0; width:2px; background:var(--g-danger);
z-index:2; opacity:.6;
}
.mc-today-line::before {
content:'今'; position:absolute; top:-18px; left:50%; transform:translateX(-50%);
font-size:10px; color:var(--g-danger); font-weight:600;
}
/* 冲突提示 */
.mc-conflict-banner {
display:flex; align-items:center; gap:8px; padding:10px 16px; margin-bottom:16px;
background:#fff7ed; border:1px solid #fed7aa; border-radius:8px; font-size:13px; color:#9a3412;
}
/* 空行提示 */
.mc-empty-row {
padding:40px; text-align:center; color:var(--g-text-muted); font-size:13px;
}
</style>
<div class="page-mc">
<!-- 冲突提示 -->
<div class="mc-conflict-banner">
<i data-lucide="alert-triangle" style="width:16px;height:16px;color:#f59e0b;flex-shrink:0;"></i>
<span>2月10日~2月28日 有 <b>4个活动</b> 同时进行,请注意优惠叠加可能影响利润</span>
</div>
<!-- 顶部控制栏 -->
<div class="mc-header">
<div class="mc-month-nav">
<button><i data-lucide="chevron-left" style="width:16px;height:16px;"></i></button>
<div class="mc-month-title">2026年 2月</div>
<button><i data-lucide="chevron-right" style="width:16px;height:16px;"></i></button>
</div>
<div class="mc-legend">
<span class="mc-legend-item"><span class="mc-legend-dot" style="background:#3b82f6;"></span>满减</span>
<span class="mc-legend-item"><span class="mc-legend-dot" style="background:#22c55e;"></span>满赠</span>
<span class="mc-legend-item"><span class="mc-legend-dot" style="background:#f59e0b;"></span>第二份半价</span>
<span class="mc-legend-item"><span class="mc-legend-dot" style="background:#8b5cf6;"></span>限时折扣</span>
<span class="mc-legend-item"><span class="mc-legend-dot" style="background:#ef4444;"></span>秒杀</span>
<span class="mc-legend-item"><span class="mc-legend-dot" style="background:#ec4899;"></span>优惠券</span>
<span class="mc-legend-item"><span class="mc-legend-dot" style="background:#06b6d4;"></span>次卡</span>
</div>
</div>
<!-- 统计 -->
<div class="mc-stats">
<div class="mc-stat-card">
<div class="mc-stat-label">本月活动</div>
<div class="mc-stat-value primary">8</div>
</div>
<div class="mc-stat-card">
<div class="mc-stat-label">进行中</div>
<div class="mc-stat-value green">6</div>
</div>
<div class="mc-stat-card">
<div class="mc-stat-label">最大并行数</div>
<div class="mc-stat-value orange">4</div>
</div>
<div class="mc-stat-card">
<div class="mc-stat-label">本月预计优惠</div>
<div class="mc-stat-value">¥6,200</div>
</div>
</div>
<!-- 甘特图 -->
<div class="mc-gantt">
<!-- 日期头 -->
<div class="mc-dates">
<div class="mc-dates-label">活动名称</div>
<div class="mc-date-cell">1</div>
<div class="mc-date-cell">2</div>
<div class="mc-date-cell">3</div>
<div class="mc-date-cell">4</div>
<div class="mc-date-cell">5</div>
<div class="mc-date-cell">6</div>
<div class="mc-date-cell weekend">7</div>
<div class="mc-date-cell weekend">8</div>
<div class="mc-date-cell">9</div>
<div class="mc-date-cell">10</div>
<div class="mc-date-cell">11</div>
<div class="mc-date-cell today">12</div>
<div class="mc-date-cell">13</div>
<div class="mc-date-cell weekend">14</div>
<div class="mc-date-cell weekend">15</div>
<div class="mc-date-cell">16</div>
<div class="mc-date-cell">17</div>
<div class="mc-date-cell">18</div>
<div class="mc-date-cell">19</div>
<div class="mc-date-cell">20</div>
<div class="mc-date-cell weekend">21</div>
<div class="mc-date-cell weekend">22</div>
<div class="mc-date-cell">23</div>
<div class="mc-date-cell">24</div>
<div class="mc-date-cell">25</div>
<div class="mc-date-cell">26</div>
<div class="mc-date-cell">27</div>
<div class="mc-date-cell weekend">28</div>
</div>
<!-- 活动行 -->
<!-- 1. 午市满减 1/1~3/31 全月覆盖 -->
<div class="mc-row">
<div class="mc-row-label">
<span class="mc-type-dot" style="background:#3b82f6;"></span>
<span class="mc-row-label-name">午市满减优惠</span>
</div>
<div class="mc-bar-area">
<div class="mc-bar" style="left:0;right:0;background:#3b82f6;">满30减5 / 满50减10 / 满80减20</div>
<div class="mc-today-line" style="left:calc((12 - 0.5) / 28 * 100%);"></div>
</div>
</div>
<!-- 2. 晚市大额满减 1/15~4/15 全月覆盖 -->
<div class="mc-row">
<div class="mc-row-label">
<span class="mc-type-dot" style="background:#3b82f6;"></span>
<span class="mc-row-label-name">晚市大额满减</span>
</div>
<div class="mc-bar-area">
<div class="mc-bar" style="left:0;right:0;background:#3b82f6;opacity:.75;">满50减8 / 满80减15 / 满120减30</div>
</div>
</div>
<!-- 3. 饮品买二赠一 2/1~3/31 全月覆盖 -->
<div class="mc-row">
<div class="mc-row-label">
<span class="mc-type-dot" style="background:#22c55e;"></span>
<span class="mc-row-label-name">饮品买二赠一</span>
</div>
<div class="mc-bar-area">
<div class="mc-bar" style="left:0;right:0;background:#22c55e;">买2杯赠1杯</div>
</div>
</div>
<!-- 4. 甜品第二份半价 2/10~2/28 -->
<div class="mc-row">
<div class="mc-row-label">
<span class="mc-type-dot" style="background:#f59e0b;"></span>
<span class="mc-row-label-name">甜品第二份半价</span>
</div>
<div class="mc-bar-area">
<div class="mc-bar" style="left:calc((10 - 1) / 28 * 100%);right:0;background:#f59e0b;">第2份5折</div>
</div>
</div>
<!-- 5. 疯狂星期四 限时折扣 每周四 -->
<div class="mc-row">
<div class="mc-row-label">
<span class="mc-type-dot" style="background:#8b5cf6;"></span>
<span class="mc-row-label-name">疯狂星期四</span>
</div>
<div class="mc-bar-area">
<!-- 2/5, 2/12, 2/19, 2/26 are Thursdays -->
<div class="mc-bar" style="left:calc((5 - 1) / 28 * 100%);width:calc(1 / 28 * 100%);background:#8b5cf6;border-radius:4px;font-size:0;"></div>
<div class="mc-bar" style="left:calc((12 - 1) / 28 * 100%);width:calc(1 / 28 * 100%);background:#8b5cf6;border-radius:4px;font-size:0;"></div>
<div class="mc-bar" style="left:calc((19 - 1) / 28 * 100%);width:calc(1 / 28 * 100%);background:#8b5cf6;border-radius:4px;font-size:0;"></div>
<div class="mc-bar" style="left:calc((26 - 1) / 28 * 100%);width:calc(1 / 28 * 100%);background:#8b5cf6;border-radius:4px;font-size:0;"></div>
</div>
</div>
<!-- 6. 情人节秒杀 2/13~2/14 -->
<div class="mc-row">
<div class="mc-row-label">
<span class="mc-type-dot" style="background:#ef4444;"></span>
<span class="mc-row-label-name">情人节秒杀</span>
</div>
<div class="mc-bar-area">
<div class="mc-bar" style="left:calc((13 - 1) / 28 * 100%);width:calc(2 / 28 * 100%);background:#ef4444;">¥9.9 双人套餐</div>
</div>
</div>
<!-- 7. 新用户满减券 长期 -->
<div class="mc-row">
<div class="mc-row-label">
<span class="mc-type-dot" style="background:#ec4899;"></span>
<span class="mc-row-label-name">新用户满减券</span>
</div>
<div class="mc-bar-area">
<div class="mc-bar" style="left:0;right:0;background:#ec4899;opacity:.65;">满50减15长期</div>
</div>
</div>
<!-- 8. 咖啡月卡 次卡 长期 -->
<div class="mc-row">
<div class="mc-row-label">
<span class="mc-type-dot" style="background:#06b6d4;"></span>
<span class="mc-row-label-name">咖啡月卡</span>
</div>
<div class="mc-bar-area">
<div class="mc-bar" style="left:0;right:0;background:#06b6d4;opacity:.65;">¥99 / 30次长期在售</div>
</div>
</div>
</div>
</div>
<script>
if (typeof lucide !== 'undefined') { lucide.createIcons(); }
</script>