Browse Source

feat:demo2

0235889 2 days ago
parent
commit
2f8f0719e3
1 changed files with 789 additions and 0 deletions
  1. 789 0
      demo/date.html

+ 789 - 0
demo/date.html

@@ -0,0 +1,789 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>婚庆行业客户全生命周期AI管理系统 - 日历</title>
+    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
+    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
+    <style>
+        * {
+            margin: 0;
+            padding: 0;
+            box-sizing: border-box;
+            font-family: 'Noto Sans SC', sans-serif;
+        }
+        
+        body {
+            background: linear-gradient(135deg, #fdf2f8 0%, #f0f9ff 100%);
+            color: #333;
+            min-height: 100vh;
+            padding: 20px;
+        }
+        
+        .container {
+            max-width: 1600px;
+            margin: 0 auto;
+            display: flex;
+            flex-direction: column;
+            gap: 25px;
+        }
+        
+        header {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            padding: 15px 25px;
+            background: rgba(255, 255, 255, 0.95);
+            border-radius: 16px;
+            box-shadow: 0 8px 20px rgba(186, 47, 142, 0.1);
+        }
+        
+        .logo {
+            display: flex;
+            align-items: center;
+            gap: 15px;
+        }
+        
+        .logo h1 {
+            font-size: 26px;
+            font-weight: 700;
+            background: linear-gradient(135deg, #d6336c, #a61e4d);
+            -webkit-background-clip: text;
+            background-clip: text;
+            color: transparent;
+        }
+        
+        .logo i {
+            font-size: 28px;
+            color: #d6336c;
+        }
+        
+        .nav-links {
+            display: flex;
+            gap: 25px;
+        }
+        
+        .nav-links a {
+            text-decoration: none;
+            font-weight: 500;
+            color: #555;
+            padding: 10px 15px;
+            border-radius: 12px;
+            transition: all 0.3s ease;
+            position: relative;
+        }
+        
+        .nav-links a:hover, .nav-links a.active {
+            color: #d6336c;
+            background: rgba(214, 51, 108, 0.08);
+        }
+        
+        .nav-links a.active:after {
+            content: "";
+            position: absolute;
+            bottom: 0;
+            left: 15px;
+            right: 15px;
+            height: 3px;
+            background: #d6336c;
+            border-radius: 3px;
+        }
+        
+        .main-content {
+            display: flex;
+            gap: 25px;
+        }
+        
+        .calendar-section {
+            flex: 1;
+            background: rgba(255, 255, 255, 0.95);
+            border-radius: 16px;
+            padding: 25px;
+            box-shadow: 0 8px 20px rgba(186, 47, 142, 0.08);
+        }
+        
+        .section-header {
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            margin-bottom: 25px;
+        }
+        
+        .section-header h2 {
+            font-size: 22px;
+            font-weight: 600;
+            color: #d6336c;
+        }
+        
+        .controls {
+            display: flex;
+            gap: 15px;
+            align-items: center;
+        }
+        
+        .date-controls {
+            display: flex;
+            align-items: center;
+            gap: 10px;
+        }
+        
+        .date-display {
+            font-size: 18px;
+            font-weight: 500;
+            color: #555;
+            min-width: 220px;
+        }
+        
+        .btn {
+            padding: 8px 18px;
+            border-radius: 12px;
+            border: none;
+            font-weight: 500;
+            cursor: pointer;
+            transition: all 0.3s ease;
+            display: flex;
+            align-items: center;
+            gap: 8px;
+        }
+        
+        .btn-primary {
+            background: linear-gradient(135deg, #d6336c, #a61e4d);
+            color: white;
+        }
+        
+        .btn-outline {
+            background: transparent;
+            border: 1px solid #d6336c;
+            color: #d6336c;
+        }
+        
+        .btn:hover {
+            transform: translateY(-2px);
+            box-shadow: 0 4px 10px rgba(214, 51, 108, 0.2);
+        }
+        
+        .calendar {
+            display: grid;
+            grid-template-columns: repeat(7, 1fr);
+            gap: 12px;
+            margin-bottom: 25px;
+        }
+        
+        .weekdays {
+            display: grid;
+            grid-template-columns: repeat(7, 1fr);
+            text-align: center;
+            margin-bottom: 15px;
+            font-weight: 500;
+            color: #777;
+        }
+        
+        .calendar-day {
+            height: 110px;
+            background: #fff;
+            border-radius: 12px;
+            padding: 12px;
+            position: relative;
+            box-shadow: 0 3px 10px rgba(0, 0, 0, 0.05);
+            transition: all 0.3s ease;
+            border: 1px solid #eee;
+            overflow: hidden;
+        }
+        
+        .calendar-day:hover {
+            transform: translateY(-3px);
+            box-shadow: 0 5px 15px rgba(214, 51, 108, 0.15);
+        }
+        
+        .day-header {
+            display: flex;
+            justify-content: space-between;
+            font-size: 14px;
+            margin-bottom: 8px;
+        }
+        
+        .day-num {
+            font-weight: 700;
+            font-size: 18px;
+        }
+        
+        .lunar-date {
+            color: #999;
+            font-size: 12px;
+        }
+        
+        .day-events {
+            font-size: 12px;
+        }
+        
+        .event-tag {
+            display: inline-block;
+            padding: 3px 8px;
+            border-radius: 20px;
+            font-size: 11px;
+            margin-top: 5px;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            max-width: 100%;
+        }
+        
+        .event-booked {
+            background: rgba(214, 51, 108, 0.1);
+            color: #d6336c;
+            border-left: 3px solid #d6336c;
+        }
+        
+        .event-available {
+            background: rgba(40, 167, 69, 0.1);
+            color: #28a745;
+            border-left: 3px solid #28a745;
+        }
+        
+        .event-consult {
+            background: rgba(23, 162, 184, 0.1);
+            color: #17a2b8;
+            border-left: 3px solid #17a2b8;
+        }
+        
+        .today {
+            background: rgba(255, 228, 230, 0.5);
+            border: 2px solid #d6336c;
+        }
+        
+        .day-header .today-label {
+            background: #d6336c;
+            color: white;
+            padding: 2px 6px;
+            border-radius: 4px;
+            font-size: 11px;
+            margin-left: 5px;
+        }
+        
+        .venue-section {
+            width: 400px;
+            background: rgba(255, 255, 255, 0.95);
+            border-radius: 16px;
+            padding: 25px;
+            box-shadow: 0 8px 20px rgba(186, 47, 142, 0.08);
+        }
+        
+        .venue-list {
+            margin-top: 20px;
+            max-height: 600px;
+            overflow-y: auto;
+            padding-right: 10px;
+        }
+        
+        .venue-list::-webkit-scrollbar {
+            width: 6px;
+        }
+        
+        .venue-list::-webkit-scrollbar-thumb {
+            background: rgba(214, 51, 108, 0.3);
+            border-radius: 4px;
+        }
+        
+        .venue-item {
+            padding: 15px;
+            margin-bottom: 12px;
+            border-radius: 12px;
+            background: #fff;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            box-shadow: 0 3px 8px rgba(0, 0, 0, 0.05);
+            transition: all 0.3s ease;
+            border-left: 4px solid #d6336c;
+        }
+        
+        .venue-item:hover {
+            transform: translateX(5px);
+            box-shadow: 0 5px 15px rgba(214, 51, 108, 0.15);
+        }
+        
+        .venue-info {
+            flex: 1;
+        }
+        
+        .venue-name {
+            font-weight: 600;
+            margin-bottom: 5px;
+            color: #333;
+        }
+        
+        .venue-status {
+            font-size: 13px;
+            padding: 3px 10px;
+            border-radius: 20px;
+            display: inline-block;
+        }
+        
+        .status-available {
+            background: rgba(40, 167, 69, 0.15);
+            color: #28a745;
+        }
+        
+        .status-booked {
+            background: rgba(214, 51, 108, 0.15);
+            color: #d6336c;
+        }
+        
+        .status-hold {
+            background: rgba(255, 193, 7, 0.15);
+            color: #fd7e14;
+        }
+        
+        .venue-actions {
+            display: flex;
+            gap: 10px;
+        }
+        
+        .action-btn {
+            width: 30px;
+            height: 30px;
+            border-radius: 50%;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            background: #f8f9fa;
+            color: #777;
+            cursor: pointer;
+            transition: all 0.3s ease;
+        }
+        
+        .action-btn:hover {
+            background: #d6336c;
+            color: white;
+        }
+        
+        .ai-section {
+            background: rgba(255, 255, 255, 0.95);
+            border-radius: 16px;
+            padding: 25px;
+            margin-top: 10px;
+            box-shadow: 0 8px 20px rgba(186, 47, 142, 0.08);
+        }
+        
+        .ai-header {
+            display: flex;
+            align-items: center;
+            gap: 10px;
+            margin-bottom: 20px;
+        }
+        
+        .ai-header h3 {
+            font-size: 20px;
+            color: #d6336c;
+        }
+        
+        .ai-header i {
+            font-size: 24px;
+            color: #d6336c;
+        }
+        
+        .ai-recommendation {
+            background: linear-gradient(135deg, #fdf2f8, #f0f9ff);
+            border-radius: 12px;
+            padding: 20px;
+            margin-bottom: 20px;
+        }
+        
+        .ai-title {
+            font-weight: 600;
+            margin-bottom: 10px;
+            color: #d6336c;
+            display: flex;
+            align-items: center;
+            gap: 8px;
+        }
+        
+        .ai-content {
+            font-size: 14px;
+            line-height: 1.6;
+            color: #555;
+        }
+        
+        .ai-content ul {
+            padding-left: 20px;
+            margin: 10px 0;
+        }
+        
+        .ai-content li {
+            margin-bottom: 8px;
+        }
+        
+        .stats-grid {
+            display: grid;
+            grid-template-columns: repeat(3, 1fr);
+            gap: 15px;
+            margin-top: 25px;
+        }
+        
+        .stat-card {
+            background: #fff;
+            border-radius: 12px;
+            padding: 18px;
+            text-align: center;
+            box-shadow: 0 3px 10px rgba(0, 0, 0, 0.05);
+        }
+        
+        .stat-value {
+            font-size: 28px;
+            font-weight: 700;
+            color: #d6336c;
+            margin: 10px 0;
+        }
+        
+        .stat-label {
+            font-size: 14px;
+            color: #777;
+        }
+        
+        .view-more {
+            display: block;
+            text-align: center;
+            margin-top: 25px;
+            padding: 12px;
+            background: rgba(214, 51, 108, 0.08);
+            color: #d6336c;
+            border-radius: 12px;
+            text-decoration: none;
+            font-weight: 500;
+            transition: all 0.3s ease;
+        }
+        
+        .view-more:hover {
+            background: rgba(214, 51, 108, 0.15);
+        }
+        
+        @media (max-width: 1200px) {
+            .main-content {
+                flex-direction: column;
+            }
+            
+            .venue-section {
+                width: 100%;
+            }
+        }
+    </style>
+</head>
+<body>
+    <div class="container">
+        <header>
+            <div class="logo">
+                <i class="fas fa-heart"></i>
+                <h1>婚庆行业客户全生命周期AI管理系统</h1>
+            </div>
+            <div class="nav-links">
+                <a href="#" class="active">日历</a>
+                <a href="#">每日工作</a>
+                <a href="#">订单总览</a>
+                <a href="#">访客视图</a>
+                <a href="#">房间安排</a>
+            </div>
+        </header>
+        
+        <div class="main-content">
+            <div class="calendar-section">
+                <div class="section-header">
+                    <h2>场地档期日历</h2>
+                    <div class="controls">
+                        <div class="date-controls">
+                            <button class="btn btn-outline"><i class="fas fa-chevron-left"></i></button>
+                            <div class="date-display">2025年6月</div>
+                            <button class="btn btn-outline"><i class="fas fa-chevron-right"></i></button>
+                        </div>
+                        <button class="btn btn-primary"><i class="fas fa-search"></i> 查询日期</button>
+                    </div>
+                </div>
+                
+                <div class="weekdays">
+                    <div>周日</div>
+                    <div>周一</div>
+                    <div>周二</div>
+                    <div>周三</div>
+                    <div>周四</div>
+                    <div>周五</div>
+                    <div>周六</div>
+                </div>
+                
+                <div class="calendar">
+                    <!-- 日历日期将通过JavaScript动态生成 -->
+                    <!-- 这里仅展示静态示例 -->
+                    <div class="calendar-day">
+                        <div class="day-header">
+                            <div class="day-num">28</div>
+                            <div class="lunar-date">六月初四 周六</div>
+                        </div>
+                        <div class="day-events">
+                            <div class="event-tag event-booked">九州厅: 张先生婚礼</div>
+                            <div class="event-tag event-consult">海洋之心: 咨询</div>
+                        </div>
+                    </div>
+                    
+                    <div class="calendar-day">
+                        <div class="day-header">
+                            <div class="day-num">29</div>
+                            <div class="lunar-date">六月初五 周日</div>
+                        </div>
+                        <div class="day-events">
+                            <div class="event-tag event-booked">月光礼堂: 李小姐婚礼</div>
+                            <div class="event-tag event-booked">冰雪奇缘: 王先生婚礼</div>
+                        </div>
+                    </div>
+                    
+                    <div class="calendar-day today">
+                        <div class="day-header">
+                            <div class="day-num">30 <span class="today-label">今日</span></div>
+                            <div class="lunar-date">六月初六 周一</div>
+                        </div>
+                        <div class="day-events">
+                            <div class="event-tag event-consult">九州厅: 咨询</div>
+                            <div class="event-tag event-available">星空之镜: 空闲</div>
+                            <div class="event-tag event-available">塞纳花园: 空闲</div>
+                        </div>
+                    </div>
+                    
+                    <!-- 更多日期省略 -->
+                </div>
+                
+                <div class="ai-section">
+                    <div class="ai-header">
+                        <i class="fas fa-robot"></i>
+                        <h3>AI智能档期助手</h3>
+                    </div>
+                    
+                    <div class="ai-recommendation">
+                        <div class="ai-title">
+                            <i class="fas fa-lightbulb"></i>
+                            <span>今日智能建议</span>
+                        </div>
+                        <div class="ai-content">
+                            <p>根据历史数据分析,本周末(7月5日-6日)为婚礼高峰期,建议:</p>
+                            <ul>
+                                <li>优先安排资深策划师处理九州厅、月光礼堂的咨询客户</li>
+                                <li>星空之镜、海洋之心场地有较高意向客户,可主动跟进</li>
+                                <li>塞纳花园连续3个周末空闲,建议推出限时优惠活动</li>
+                            </ul>
+                            <p><strong>预测:</strong>7月婚礼预订量预计增长25%,建议增加临时服务人员</p>
+                        </div>
+                    </div>
+                    
+                    <div class="stats-grid">
+                        <div class="stat-card">
+                            <div class="stat-value">78%</div>
+                            <div class="stat-label">本月场地利用率</div>
+                        </div>
+                        <div class="stat-card">
+                            <div class="stat-value">42</div>
+                            <div class="stat-label">待处理咨询</div>
+                        </div>
+                        <div class="stat-card">
+                            <div class="stat-value">15</div>
+                            <div class="stat-label">本周婚礼活动</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            
+            <div class="venue-section">
+                <div class="section-header">
+                    <h2>场地状态</h2>
+                    <button class="btn btn-outline"><i class="fas fa-filter"></i> 筛选</button>
+                </div>
+                
+                <div class="venue-list">
+                    <div class="venue-item">
+                        <div class="venue-info">
+                            <div class="venue-name">九州厅</div>
+                            <div class="venue-status status-booked">已预订 (7月5日)</div>
+                        </div>
+                        <div class="venue-actions">
+                            <div class="action-btn"><i class="fas fa-eye"></i></div>
+                            <div class="action-btn"><i class="fas fa-edit"></i></div>
+                        </div>
+                    </div>
+                    
+                    <div class="venue-item">
+                        <div class="venue-info">
+                            <div class="venue-name">奥斯卡厅</div>
+                            <div class="venue-status status-available">空闲</div>
+                        </div>
+                        <div class="venue-actions">
+                            <div class="action-btn"><i class="fas fa-eye"></i></div>
+                            <div class="action-btn"><i class="fas fa-edit"></i></div>
+                        </div>
+                    </div>
+                    
+                    <div class="venue-item">
+                        <div class="venue-info">
+                            <div class="venue-name">星空之镜</div>
+                            <div class="venue-status status-available">空闲</div>
+                        </div>
+                        <div class="venue-actions">
+                            <div class="action-btn"><i class="fas fa-eye"></i></div>
+                            <div class="action-btn"><i class="fas fa-edit"></i></div>
+                        </div>
+                    </div>
+                    
+                    <div class="venue-item">
+                        <div class="venue-info">
+                            <div class="venue-name">塞纳花园</div>
+                            <div class="venue-status status-available">空闲</div>
+                        </div>
+                        <div class="venue-actions">
+                            <div class="action-btn"><i class="fas fa-eye"></i></div>
+                            <div class="action-btn"><i class="fas fa-edit"></i></div>
+                        </div>
+                    </div>
+                    
+                    <div class="venue-item">
+                        <div class="venue-info">
+                            <div class="venue-name">海洋之心</div>
+                            <div class="venue-status status-hold">意向沟通中</div>
+                        </div>
+                        <div class="venue-actions">
+                            <div class="action-btn"><i class="fas fa-eye"></i></div>
+                            <div class="action-btn"><i class="fas fa-edit"></i></div>
+                        </div>
+                    </div>
+                    
+                    <div class="venue-item">
+                        <div class="venue-info">
+                            <div class="venue-name">冰雪奇缘</div>
+                            <div class="venue-status status-booked">已预订 (7月12日)</div>
+                        </div>
+                        <div class="venue-actions">
+                            <div class="action-btn"><i class="fas fa-eye"></i></div>
+                            <div class="action-btn"><i class="fas fa-edit"></i></div>
+                        </div>
+                    </div>
+                    
+                    <div class="venue-item">
+                        <div class="venue-info">
+                            <div class="venue-name">暮光之城</div>
+                            <div class="venue-status status-booked">已预订 (7月19日)</div>
+                        </div>
+                        <div class="venue-actions">
+                            <div class="action-btn"><i class="fas fa-eye"></i></div>
+                            <div class="action-btn"><i class="fas fa-edit"></i></div>
+                        </div>
+                    </div>
+                    
+                    <div class="venue-item">
+                        <div class="venue-info">
+                            <div class="venue-name">月光礼堂</div>
+                            <div class="venue-status status-booked">已预订 (7月26日)</div>
+                        </div>
+                        <div class="venue-actions">
+                            <div class="action-btn"><i class="fas fa-eye"></i></div>
+                            <div class="action-btn"><i class="fas fa-edit"></i></div>
+                        </div>
+                    </div>
+                    
+                    <a href="#" class="view-more">
+                        <i class="fas fa-chevron-down"></i> 查看42个场地/日期未定的客户
+                    </a>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <script>
+        // 简单的日历生成逻辑(简化版)
+        document.addEventListener('DOMContentLoaded', function() {
+            const calendar = document.querySelector('.calendar');
+            const daysInMonth = 30; // 假设6月有30天
+            const firstDay = 6; // 2025年6月1日是星期日(0=周日,1=周一...)
+            
+            // 生成空白日期
+            for (let i = 0; i < firstDay; i++) {
+                const emptyDay = document.createElement('div');
+                emptyDay.classList.add('calendar-day', 'empty');
+                calendar.appendChild(emptyDay);
+            }
+            
+            // 生成日期
+            for (let day = 1; day <= daysInMonth; day++) {
+                const dayElement = document.createElement('div');
+                dayElement.classList.add('calendar-day');
+                
+                // 日期头
+                const dayHeader = document.createElement('div');
+                dayHeader.classList.add('day-header');
+                
+                const dayNum = document.createElement('div');
+                dayNum.classList.add('day-num');
+                dayNum.textContent = day;
+                
+                const lunarDate = document.createElement('div');
+                lunarDate.classList.add('lunar-date');
+                lunarDate.textContent = getLunarDate(day);
+                
+                dayHeader.appendChild(dayNum);
+                dayHeader.appendChild(lunarDate);
+                
+                // 事件区域
+                const dayEvents = document.createElement('div');
+                dayEvents.classList.add('day-events');
+                
+                // 随机生成事件
+                if (Math.random() > 0.3) {
+                    const eventCount = Math.floor(Math.random() * 2) + 1;
+                    for (let i = 0; i < eventCount; i++) {
+                        const event = document.createElement('div');
+                        event.classList.add('event-tag');
+                        
+                        const venues = ['九州厅', '奥斯卡', '星空之镜', '塞纳花园', '海洋之心', '冰雪奇缘', '暮光之城', '月光礼堂'];
+                        const venue = venues[Math.floor(Math.random() * venues.length)];
+                        
+                        const status = Math.random() > 0.5 ? 'event-booked' : 
+                                      Math.random() > 0.5 ? 'event-consult' : 'event-available';
+                        
+                        event.classList.add(status);
+                        
+                        if (status === 'event-booked') {
+                            const names = ['张', '王', '李', '赵', '陈', '刘'];
+                            event.textContent = `${venue}: ${names[Math.floor(Math.random() * names.length)]}${Math.random() > 0.5 ? '先生' : '小姐'}婚礼`;
+                        } else if (status === 'event-consult') {
+                            event.textContent = `${venue}: 咨询`;
+                        } else {
+                            event.textContent = `${venue}: 空闲`;
+                        }
+                        
+                        dayEvents.appendChild(event);
+                    }
+                }
+                
+                dayElement.appendChild(dayHeader);
+                dayElement.appendChild(dayEvents);
+                
+                // 标记今天
+                if (day === 30) {
+                    dayElement.classList.add('today');
+                    const todayLabel = document.createElement('span');
+                    todayLabel.classList.add('today-label');
+                    todayLabel.textContent = '今日';
+                    dayNum.appendChild(todayLabel);
+                }
+                
+                calendar.appendChild(dayElement);
+            }
+            
+            function getLunarDate(day) {
+                // 简化版的农历日期生成
+                const weekdays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
+                const weekday = (firstDay + day - 1) % 7;
+                
+                if (day === 28) return '六月初四 周六';
+                if (day === 29) return '六月初五 周日';
+                if (day === 30) return '六月初六 周一';
+                
+                return `六月初${day} ${weekdays[weekday]}`;
+            }
+        });
+    </script>
+</body>
+</html>