| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- <!DOCTYPE html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>天河基地 · 活动 & 会场</title>
- <style>
- * { box-sizing: border-box; margin: 0; padding: 0; }
- body { font-family: -apple-system, 'PingFang SC', 'Helvetica Neue', sans-serif; background: #e8edf5; color: #0f172a; padding: 32px 24px; }
- h1 { font-size: 22px; font-weight: 700; margin-bottom: 4px; }
- .page-sub { font-size: 13px; color: #64748b; margin-bottom: 28px; }
- .screens-row { display: flex; gap: 24px; flex-wrap: wrap; align-items: flex-start; }
- .screen-col { display: flex; flex-direction: column; gap: 10px; align-items: center; }
- .screen-label { font-size: 12px; font-weight: 600; color: #64748b; background: white; padding: 4px 12px; border-radius: 20px; }
- .phone { width: 320px; background: #f8fafc; border-radius: 30px; overflow: hidden; box-shadow: 0 18px 50px rgba(0,0,0,0.15), 0 0 0 7px #1e293b; flex-shrink: 0; }
- .status { background: white; padding: 10px 16px 4px; display: flex; justify-content: space-between; font-size: 13px; font-weight: 600; }
- .nav-bar { background: white; padding: 6px 14px 8px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid #f1f5f9; }
- .back { width: 28px; height: 28px; border-radius: 50%; background: #f1f5f9; display: flex; align-items: center; justify-content: center; font-size: 13px; }
- .nav-t { font-size: 16px; font-weight: 600; flex: 1; text-align: center; }
- .body { max-height: 560px; overflow-y: auto; background: #f8fafc; }
- .body::-webkit-scrollbar { display: none; }
- .tag { display: inline-flex; border-radius: 5px; padding: 3px 8px; font-size: 11px; font-weight: 500; }
- .t-green { background:#f0fdf4; color:#16a34a; }
- .t-orange { background:#fff7ed; color:#ea580c; }
- .t-gray { background:#f1f5f9; color:#64748b; }
- .t-blue { background:#eff6ff; color:#3b82f6; }
- .t-red { background:#fef2f2; color:#ef4444; }
- /* Activity list */
- .seg { display: flex; gap: 0; background: white; padding: 8px 12px; margin-bottom: 1px; }
- .seg-btn { flex: 1; text-align: center; padding: 7px 0; font-size: 13px; font-weight: 500; color: #94a3b8; border-radius: 8px; }
- .seg-btn.active { background: linear-gradient(135deg,#3b82f6,#6366f1); color: white; font-weight: 600; }
- .act-card { background: white; margin: 0 12px 10px; border-radius: 14px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
- .act-img { height: 100px; position: relative; display: flex; align-items: flex-end; padding: 10px; }
- .act-img-tag { position: absolute; top: 10px; right: 10px; background: rgba(255,255,255,0.92); border-radius: 5px; padding: 3px 8px; font-size: 11px; font-weight: 600; }
- .act-info { padding: 12px; }
- .act-name { font-size: 14px; font-weight: 600; color: #0f172a; margin-bottom: 6px; line-height: 1.4; }
- .act-meta-row { display: flex; gap: 12px; flex-wrap: wrap; }
- .act-meta { font-size: 12px; color: #64748b; }
- .act-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; }
- .act-count { font-size: 12px; color: #94a3b8; }
- .btn-reg { background: linear-gradient(135deg,#3b82f6,#6366f1); color: white; font-size: 12px; font-weight: 600; padding: 7px 14px; border-radius: 8px; border: none; }
- .btn-reg-ghost { background: #f1f5f9; color: #64748b; font-size: 12px; font-weight: 600; padding: 7px 14px; border-radius: 8px; border: none; }
- /* Activity detail */
- .act-detail-hero { height: 160px; position: relative; display: flex; flex-direction: column; justify-content: flex-end; padding: 16px; }
- .act-detail-title { font-size: 18px; font-weight: 700; color: white; line-height: 1.3; }
- .act-detail-body { padding: 0 12px 12px; }
- .info-card { background: white; border-radius: 14px; padding: 14px; margin-top: 10px; box-shadow: 0 1px 6px rgba(0,0,0,0.06); }
- .info-row { display: flex; gap: 10px; align-items: flex-start; padding: 8px 0; border-bottom: 1px solid #f8fafc; }
- .info-row:last-child { border-bottom: none; }
- .info-icon { font-size: 16px; flex-shrink: 0; width: 20px; }
- .info-text { font-size: 13px; color: #374151; line-height: 1.5; }
- .info-label { font-size: 11px; color: #94a3b8; margin-bottom: 1px; }
- .map-placeholder { height: 80px; background: linear-gradient(135deg,#e0f2fe,#dbeafe); border-radius: 12px; display: flex; align-items: center; justify-content: center; margin-top: 10px; font-size: 13px; color: #3b82f6; font-weight: 600; }
- .register-bar { background: white; border-top: 1px solid #f1f5f9; padding: 10px 12px 22px; display: flex; gap: 10px; }
- .count-chip { background: #f8fafc; border-radius: 10px; padding: 8px 12px; font-size: 12px; color: #64748b; display: flex; flex-direction: column; align-items: center; }
- .count-num { font-size: 16px; font-weight: 700; color: #0f172a; }
- .reg-btn-full { flex: 1; background: linear-gradient(135deg,#3b82f6,#6366f1); color: white; font-size: 15px; font-weight: 700; border-radius: 12px; border: none; box-shadow: 0 4px 12px rgba(99,102,241,0.3); }
- /* Venue list */
- .venue-filter { display: flex; gap: 8px; padding: 8px 12px; overflow-x: auto; }
- .venue-filter::-webkit-scrollbar { display: none; }
- .f-btn { flex-shrink: 0; padding: 5px 12px; border-radius: 20px; font-size: 12px; font-weight: 500; border: 1.5px solid #e2e8f0; color: #64748b; background: white; }
- .f-btn.active { background: #3b82f6; color: white; border-color: #3b82f6; }
- .venue-card { background: white; margin: 0 12px 10px; border-radius: 14px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.06); display: flex; }
- .venue-img { width: 90px; flex-shrink: 0; }
- .venue-info { padding: 12px; flex: 1; }
- .venue-name { font-size: 13px; font-weight: 600; color: #0f172a; margin-bottom: 4px; }
- .venue-meta { font-size: 11px; color: #64748b; line-height: 1.6; }
- .venue-price { font-size: 13px; font-weight: 700; color: #3b82f6; margin-top: 4px; }
- .venue-footer { display: flex; justify-content: space-between; align-items: center; margin-top: 6px; }
- .btn-book { background: #eff6ff; color: #3b82f6; font-size: 11px; font-weight: 600; padding: 5px 10px; border-radius: 7px; border: none; }
- /* Venue booking */
- .time-slots { display: grid; grid-template-columns: repeat(3,1fr); gap: 6px; padding: 12px; }
- .slot { background: white; border: 1.5px solid #e2e8f0; border-radius: 8px; padding: 8px 4px; text-align: center; font-size: 12px; color: #374151; }
- .slot.booked { background: #f1f5f9; color: #94a3b8; border-color: #f1f5f9; text-decoration: line-through; }
- .slot.selected { background: #eff6ff; border-color: #3b82f6; color: #3b82f6; font-weight: 600; }
- .slot-time { font-size: 11px; margin-top: 3px; color: #94a3b8; }
- .slot.selected .slot-time { color: #93c5fd; }
- /* Bottom nav */
- .bot-nav { background: white; border-top: 1px solid #f1f5f9; display: flex; padding: 7px 0 18px; }
- .n-item { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 2px; }
- .n-lbl { font-size: 10px; color: #94a3b8; }
- .n-lbl.active { color: #3b82f6; font-weight: 600; }
- /* Annos */
- .annos { margin-top: 28px; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px,1fr)); gap: 12px; }
- .anno { background: white; border-radius: 14px; padding: 14px 16px; box-shadow: 0 1px 4px rgba(0,0,0,0.06); }
- .anno-t { font-size: 13px; font-weight: 700; color: #3b82f6; margin-bottom: 6px; display: flex; align-items: center; gap: 6px; }
- .anno-num { width: 20px; height: 20px; background: #3b82f6; color: white; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; }
- .anno-p { font-size: 13px; color: #374151; line-height: 1.6; }
- .p-tag { display: inline-block; font-size: 11px; padding: 2px 7px; border-radius: 4px; margin-top: 5px; }
- .p0 { background:#fef2f2; color:#dc2626; }
- .p1 { background:#fff7ed; color:#ea580c; }
- .p2 { background:#f0fdf4; color:#16a34a; }
- .submit-bar { background: white; padding: 10px 12px 22px; border-top: 1px solid #f1f5f9; }
- .submit-btn { width: 100%; background: linear-gradient(135deg,#3b82f6,#6366f1); color: white; font-size: 15px; font-weight: 700; padding: 13px; border-radius: 12px; border: none; box-shadow: 0 4px 12px rgba(99,102,241,0.3); }
- </style>
- </head>
- <body>
- <h1>活动列表 · 活动详情 · 会场列表 · 会场预约</h1>
- <p class="page-sub">Page 5–8 · 活动 Tab & 会场 Tab</p>
- <div class="screens-row">
- <!-- Screen 1: Activity List -->
- <div class="screen-col">
- <span class="screen-label">活动列表(Tab 3)</span>
- <div class="phone">
- <div class="status"><span>9:41</span><span>●●● 🔋</span></div>
- <div class="nav-bar"><div style="width:28px;"></div><span class="nav-t">活动</span><div style="font-size:18px; color:#3b82f6;">⊞</div></div>
- <div class="body">
- <div class="seg">
- <div class="seg-btn active">进行中</div>
- <div class="seg-btn">即将开始</div>
- <div class="seg-btn">已结束</div>
- </div>
- <div style="height:8px;"></div>
- <div class="act-card">
- <div class="act-img" style="background:linear-gradient(135deg,#3b82f6,#6366f1);">
- <span class="act-img-tag t-green">报名中</span>
- </div>
- <div class="act-info">
- <div class="act-name">第三届科技创新创业大赛</div>
- <div class="act-meta-row">
- <div class="act-meta">📅 4月15日 14:00</div>
- <div class="act-meta">📍 A座报告厅</div>
- </div>
- <div class="act-footer">
- <span class="act-count">已报名 128 / 200 人</span>
- <button class="btn-reg">立即报名</button>
- </div>
- </div>
- </div>
- <div class="act-card">
- <div class="act-img" style="background:linear-gradient(135deg,#0ea5e9,#3b82f6);">
- <span class="act-img-tag t-orange">即将开始</span>
- </div>
- <div class="act-info">
- <div class="act-name">AI 赋能企业运营专题讲座</div>
- <div class="act-meta-row">
- <div class="act-meta">📅 4月18日 10:00</div>
- <div class="act-meta">📍 B座多功能厅</div>
- </div>
- <div class="act-footer">
- <span class="act-count">已报名 56 / 100 人</span>
- <button class="btn-reg">立即报名</button>
- </div>
- </div>
- </div>
- <div class="act-card">
- <div class="act-img" style="background:linear-gradient(135deg,#8b5cf6,#6366f1);">
- <span class="act-img-tag t-gray">已结束</span>
- </div>
- <div class="act-info">
- <div class="act-name">政策解读沙龙·高新技术认定</div>
- <div class="act-meta-row">
- <div class="act-meta">📅 3月28日 15:00</div>
- <div class="act-meta">📍 C座会议室</div>
- </div>
- <div class="act-footer">
- <span class="act-count">已报名 89 / 不限</span>
- <button class="btn-reg-ghost">已结束</button>
- </div>
- </div>
- </div>
- </div>
- <div class="bot-nav">
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg><span class="n-lbl">首页</span></div>
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><rect x="2" y="7" width="20" height="14" rx="2"/></svg><span class="n-lbl">企业服务</span></div>
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg><span class="n-lbl active">活动</span></div>
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg><span class="n-lbl">会场</span></div>
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><circle cx="12" cy="7" r="4"/><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/></svg><span class="n-lbl">我的</span></div>
- </div>
- </div>
- </div>
- <!-- Screen 2: Activity Detail -->
- <div class="screen-col">
- <span class="screen-label">活动详情 + 报名</span>
- <div class="phone">
- <div class="status"><span>9:41</span><span>●●● 🔋</span></div>
- <div class="nav-bar"><div class="back">‹</div><span class="nav-t">活动详情</span><div style="font-size:18px; color:#94a3b8;">⋯</div></div>
- <div class="body" style="max-height:510px;">
- <div class="act-detail-hero" style="background:linear-gradient(135deg,#3b82f6,#6366f1);">
- <span class="tag t-green" style="background:rgba(255,255,255,0.9); margin-bottom:8px; width:fit-content;">报名中</span>
- <div class="act-detail-title">第三届科技创新<br>创业大赛</div>
- </div>
- <div class="act-detail-body">
- <div class="info-card">
- <div class="info-row">
- <div class="info-icon">📅</div>
- <div><div class="info-label">活动时间</div><div class="info-text">2026年4月15日 14:00 – 18:00</div></div>
- </div>
- <div class="info-row">
- <div class="info-icon">📍</div>
- <div><div class="info-label">活动地点</div><div class="info-text">天河基地A座报告厅(广州市天河区)</div></div>
- </div>
- <div class="info-row">
- <div class="info-icon">👥</div>
- <div><div class="info-label">报名情况</div><div class="info-text">已报名 128 人 / 限额 200 人</div></div>
- </div>
- </div>
- <div class="map-placeholder">🗺 点击查看地图导航</div>
- <div class="info-card" style="margin-top:10px;">
- <div style="font-size:13px; color:#374151; line-height:1.7;">本次大赛面向全国在校大学生及应届毕业生,聚焦人工智能、新能源、生物医药三大赛道。设一等奖3名、二等奖6名,奖金总计50万元。<br><br>参赛队伍须提交商业计划书,现场路演评审...</div>
- </div>
- </div>
- </div>
- <div class="register-bar">
- <div class="count-chip"><span class="count-num">128</span><span style="font-size:10px; color:#94a3b8;">已报名</span></div>
- <button class="reg-btn-full">立即报名</button>
- </div>
- </div>
- </div>
- <!-- Screen 3: Venue List -->
- <div class="screen-col">
- <span class="screen-label">会场列表(Tab 4)</span>
- <div class="phone">
- <div class="status"><span>9:41</span><span>●●● 🔋</span></div>
- <div class="nav-bar"><div style="width:28px;"></div><span class="nav-t">会场预约</span><div style="width:28px;"></div></div>
- <div class="body">
- <div class="venue-filter">
- <div class="f-btn active">全部</div>
- <div class="f-btn">会议室</div>
- <div class="f-btn">报告厅</div>
- <div class="f-btn">大型会场</div>
- </div>
- <div style="height:6px;"></div>
- <div class="venue-card">
- <div class="venue-img" style="background:linear-gradient(135deg,#3b82f6,#6366f1);"></div>
- <div class="venue-info">
- <div class="venue-name">A-301 多功能会议室</div>
- <div class="venue-meta">👥 20人 · 60㎡ · 3楼<br>📺 投影 白板 空调</div>
- <div style="display:flex; justify-content:space-between; align-items:center; margin-top:6px;">
- <div class="venue-price">¥200 / 时</div>
- <div style="display:flex; gap:6px; align-items:center;">
- <span class="tag t-green" style="font-size:10px;">可预约</span>
- <button class="btn-book">预约</button>
- </div>
- </div>
- </div>
- </div>
- <div class="venue-card">
- <div class="venue-img" style="background:linear-gradient(135deg,#0ea5e9,#3b82f6);"></div>
- <div class="venue-info">
- <div class="venue-name">B座报告厅</div>
- <div class="venue-meta">👥 200人 · 400㎡ · 1楼<br>🎤 音响 大屏 舞台</div>
- <div style="display:flex; justify-content:space-between; align-items:center; margin-top:6px;">
- <div class="venue-price">¥2,000 / 时</div>
- <div style="display:flex; gap:6px; align-items:center;">
- <span class="tag t-blue" style="font-size:10px;">需审批</span>
- <button class="btn-book">申请</button>
- </div>
- </div>
- </div>
- </div>
- <div class="venue-card">
- <div class="venue-img" style="background:linear-gradient(135deg,#8b5cf6,#6366f1);"></div>
- <div class="venue-info">
- <div class="venue-name">C-102 小型会议室</div>
- <div class="venue-meta">👥 8人 · 30㎡ · 1楼<br>💻 电视 白板</div>
- <div style="display:flex; justify-content:space-between; align-items:center; margin-top:6px;">
- <div class="venue-price">¥100 / 时</div>
- <div style="display:flex; gap:6px; align-items:center;">
- <span class="tag t-green" style="font-size:10px;">可预约</span>
- <button class="btn-book">预约</button>
- </div>
- </div>
- </div>
- </div>
- <div style="height:8px;"></div>
- </div>
- <div class="bot-nav">
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg><span class="n-lbl">首页</span></div>
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><rect x="2" y="7" width="20" height="14" rx="2"/></svg><span class="n-lbl">企业服务</span></div>
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/></svg><span class="n-lbl">活动</span></div>
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg><span class="n-lbl active">会场</span></div>
- <div class="n-item"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#94a3b8" stroke-width="2"><circle cx="12" cy="7" r="4"/><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/></svg><span class="n-lbl">我的</span></div>
- </div>
- </div>
- </div>
- <!-- Screen 4: Venue Booking -->
- <div class="screen-col">
- <span class="screen-label">会场预约(共享会议室)</span>
- <div class="phone">
- <div class="status"><span>9:41</span><span>●●● 🔋</span></div>
- <div class="nav-bar"><div class="back">‹</div><span class="nav-t">选择时间段</span><div style="width:28px;"></div></div>
- <div class="body" style="max-height:510px;">
- <!-- Venue header -->
- <div style="background:white; padding:14px 14px 10px; margin-bottom:8px; display:flex; gap:12px; align-items:center;">
- <div style="width:60px; height:60px; border-radius:12px; background:linear-gradient(135deg,#3b82f6,#6366f1); flex-shrink:0;"></div>
- <div>
- <div style="font-size:15px; font-weight:700; color:#0f172a;">A-301 多功能会议室</div>
- <div style="font-size:12px; color:#64748b; margin-top:3px;">20人 · 60㎡ · 投影 白板 空调</div>
- <div style="font-size:14px; font-weight:700; color:#3b82f6; margin-top:4px;">¥200 / 小时</div>
- </div>
- </div>
- <!-- Date selector -->
- <div style="background:white; padding:10px 14px; margin-bottom:8px;">
- <div style="font-size:13px; font-weight:600; color:#374151; margin-bottom:8px;">选择日期</div>
- <div style="display:flex; gap:8px; overflow-x:auto;">
- <div style="flex-shrink:0; display:flex;flex-direction:column;align-items:center; width:44px; background:#f8fafc; border-radius:10px; padding:8px 0; font-size:11px; color:#94a3b8;"><span>周一</span><span style="font-size:15px; font-weight:600; color:#374151; margin-top:2px;">14</span></div>
- <div style="flex-shrink:0; display:flex;flex-direction:column;align-items:center; width:44px; background:linear-gradient(135deg,#3b82f6,#6366f1); border-radius:10px; padding:8px 0; font-size:11px; color:rgba(255,255,255,0.8);"><span>周二</span><span style="font-size:15px; font-weight:700; color:white; margin-top:2px;">15</span></div>
- <div style="flex-shrink:0; display:flex;flex-direction:column;align-items:center; width:44px; background:#f8fafc; border-radius:10px; padding:8px 0; font-size:11px; color:#94a3b8;"><span>周三</span><span style="font-size:15px; font-weight:600; color:#374151; margin-top:2px;">16</span></div>
- <div style="flex-shrink:0; display:flex;flex-direction:column;align-items:center; width:44px; background:#f8fafc; border-radius:10px; padding:8px 0; font-size:11px; color:#94a3b8;"><span>周四</span><span style="font-size:15px; font-weight:600; color:#374151; margin-top:2px;">17</span></div>
- <div style="flex-shrink:0; display:flex;flex-direction:column;align-items:center; width:44px; background:#f8fafc; border-radius:10px; padding:8px 0; font-size:11px; color:#94a3b8;"><span>周五</span><span style="font-size:15px; font-weight:600; color:#374151; margin-top:2px;">18</span></div>
- </div>
- </div>
- <!-- Time slots -->
- <div style="background:white; padding:10px 14px;">
- <div style="font-size:13px; font-weight:600; color:#374151; margin-bottom:8px;">选择时间段 <span style="font-size:11px; color:#94a3b8; font-weight:400;">(可选多个连续时段)</span></div>
- <div style="display:flex; gap:8px; margin-bottom:8px; font-size:11px; color:#94a3b8;">
- <span style="display:flex; align-items:center; gap:3px;"><span style="width:10px;height:10px;border-radius:3px;background:#f1f5f9;display:inline-block;"></span>已被预约</span>
- <span style="display:flex; align-items:center; gap:3px;"><span style="width:10px;height:10px;border-radius:3px;background:#eff6ff;border:1.5px solid #3b82f6;display:inline-block;"></span>已选中</span>
- <span style="display:flex; align-items:center; gap:3px;"><span style="width:10px;height:10px;border-radius:3px;background:white;border:1.5px solid #e2e8f0;display:inline-block;"></span>可预约</span>
- </div>
- <div class="time-slots">
- <div class="slot booked">08:00<div class="slot-time">已预约</div></div>
- <div class="slot booked">09:00<div class="slot-time">已预约</div></div>
- <div class="slot">10:00<div class="slot-time">可预约</div></div>
- <div class="slot selected">11:00<div class="slot-time">已选 ✓</div></div>
- <div class="slot selected">12:00<div class="slot-time">已选 ✓</div></div>
- <div class="slot">13:00<div class="slot-time">可预约</div></div>
- <div class="slot">14:00<div class="slot-time">可预约</div></div>
- <div class="slot booked">15:00<div class="slot-time">已预约</div></div>
- <div class="slot">16:00<div class="slot-time">可预约</div></div>
- </div>
- <div style="background:#eff6ff; border-radius:10px; padding:10px 12px; margin-top:10px; display:flex; justify-content:space-between; align-items:center;">
- <div style="font-size:13px; color:#374151;">已选 11:00 – 13:00(2小时)</div>
- <div style="font-size:15px; font-weight:700; color:#3b82f6;">¥400</div>
- </div>
- </div>
- </div>
- <div class="submit-bar">
- <button class="submit-btn">确认预约</button>
- </div>
- </div>
- </div>
- </div>
- <!-- ANNOTATIONS -->
- <div class="annos">
- <div class="anno">
- <div class="anno-t"><span class="anno-num">A</span> 活动列表</div>
- <div class="anno-p">顶部三段式切换(进行中/即将开始/已结束),报名截止时间到自动切换状态。封面图未上传时用渐变色占位。已登录用户报名时弹出信息确认表单(姓名/手机/单位),无需重复登录。</div>
- <span class="p-tag p0">P0</span>
- </div>
- <div class="anno">
- <div class="anno-t"><span class="anno-num">B</span> 活动详情</div>
- <div class="anno-p">地图区域调用微信内置地图 API,点击可直接导航。底部固定注册栏,报名人数满员时按钮置灰并显示「已满员」。已报名用户显示「取消报名」。报名成功后触发微信订阅消息通知。</div>
- <span class="p-tag p0">P0</span>
- </div>
- <div class="anno">
- <div class="anno-t"><span class="anno-num">C</span> 会场列表</div>
- <div class="anno-p">共享会议室(is_shared=true)直接进入时间选择;大型会场(is_shared=false)进入申请表单,需上传活动方案附件,审批后管理员发送门禁密码。可按类型和容量筛选。</div>
- <span class="p-tag p0">P0</span>
- </div>
- <div class="anno">
- <div class="anno-t"><span class="anno-num">D</span> 时间段预约</div>
- <div class="anno-p">日期选择横滑,仅展示未来14天。时间格显示实时可用状态,已被预约的格子置灰。可选多个连续时段,底部汇总显示总时长和费用。确认后触发微信订阅消息推送确认通知。</div>
- <span class="p-tag p0">P0</span>
- </div>
- </div>
- </body>
- </html>
|