crm/frontend/index.html

1188 lines
65 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.

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CRM客户管理系统</title>
<link rel="stylesheet" href="/static/css/style.css?v=1.2" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" />
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2"></script>
</head>
<body>
<div class="app-container">
<!-- Sidebar -->
<aside class="sidebar" id="sidebar">
<div class="sidebar-header">
<div class="logo">
<svg width="24" height="24" viewBox="0 0 50 43" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M30.8799 0.0634766C32.1561 0.191098 35.0914 0.25518 40.1953 3.12598C46.9838 7.51557 49.4463 14.7383 49.8291 17.8008C50.297 20.8846 50.084 28.5324 45.4902 34.4531C40.8966 40.3736 33.8362 42.194 30.8799 42.3643H9.95215V31.1357C4.45541 31.1354 0 26.6803 0 21.1836C2.62861e-05 15.6869 4.45542 11.2308 9.95215 11.2305V0H30.8799V0H30.8799V0.0634766ZM30.8799 11.3564C28.7219 11.1986 15.882 11.302 11.4531 11.3428C16.2383 12.0662 19.9062 16.1966 19.9062 21.1836C19.9062 26.1365 16.288 30.2432 11.5508 31.0078H30.8799C33.2407 30.4973 39.1744 27.7535 38.6641 20.2891C38.2557 14.3174 33.3045 11.8457 30.8799 11.3564Z"
fill="currentColor"></path>
</svg>
<span>CRM系统</span>
</div>
<button class="sidebar-toggle" id="sidebarToggle" title="收起侧边栏">
<i class="fas fa-chevron-left"></i>
</button>
</div>
<nav class="sidebar-nav">
<!-- 数据概览分组 -->
<div class="nav-group">
<div class="nav-group-title">
<i class="fas fa-chart-bar"></i>
<span>数据概览</span>
</div>
<a href="#" class="nav-item active" data-section="dashboard">
<i class="fas fa-chart-line"></i>
<span>数据仪表板</span>
</a>
</div>
<!-- 客户管理分组 -->
<div class="nav-group">
<div class="nav-group-title">
<i class="fas fa-users"></i>
<span>客户管理</span>
</div>
<a href="#" class="nav-item" data-section="trialPeriods">
<i class="fas fa-clock"></i>
<span>客户信息</span>
</a>
<a href="#" class="nav-item" data-section="customer">
<i class="fas fa-user-plus"></i>
<span>每周进度</span>
</a>
<a href="#" class="nav-item" data-section="followup">
<i class="fas fa-tasks"></i>
<span>客户跟进</span>
</a>
</div>
</nav>
<div class="sidebar-footer">
<div class="user-info">
<i class="fas fa-user-circle"></i>
<span>管理员</span>
</div>
</div>
</aside>
<!-- Main Content -->
<div class="main-content">
<!-- Top Header -->
<header class="top-header">
<div class="header-left">
<button class="menu-toggle" id="menuToggle">
<i class="fas fa-bars"></i>
</button>
<h1 id="pageTitle">数据仪表板</h1>
</div>
<div class="header-right">
<!-- Global Search Box -->
<div class="global-search-container">
<div class="search-box">
<i class="fas fa-search"></i>
<input type="text" id="globalSearchInput" placeholder="搜索客户、进度、跟进..." autocomplete="off" />
<kbd class="search-shortcut">⌘K</kbd>
</div>
<!-- Search Results Dropdown -->
<div class="search-results-dropdown" id="searchResultsDropdown" style="display: none">
<div class="search-history" id="searchHistory">
<div class="search-section-title">
<i class="fas fa-history"></i> 搜索历史
</div>
<div class="search-history-items" id="searchHistoryItems"></div>
</div>
<div class="search-results" id="searchResults">
<div class="search-section-title">
<i class="fas fa-search"></i> 搜索结果
</div>
<div class="search-results-items" id="searchResultsItems">
<div class="search-empty">输入关键词开始搜索...</div>
</div>
</div>
</div>
</div>
<!-- Quick Add Button -->
<div class="quick-add-dropdown-container">
<button class="btn-primary quick-add-btn" id="headerQuickAddBtn">
<i class="fas fa-plus"></i>
<span>快速添加</span>
<i class="fas fa-caret-down"></i>
</button>
<div class="quick-add-dropdown" id="headerQuickAddDropdown" style="display: none">
<div class="quick-add-menu-item" data-action="trial">
<i class="fas fa-clock"></i>
<span>添加试用客户</span>
</div>
<div class="quick-add-menu-item" data-action="customer">
<i class="fas fa-user-plus"></i>
<span>添加客户进度</span>
</div>
<div class="quick-add-menu-item" data-action="followup">
<i class="fas fa-tasks"></i>
<span>添加跟进记录</span>
</div>
</div>
</div>
<button class="icon-btn" id="logoutBtn" title="退出登录">
<i class="fas fa-sign-out-alt"></i>
</button>
</div>
</header>
<!-- Content Area -->
<main class="content-area">
<!-- Customer Management Section -->
<section id="customerSection" class="content-section">
<div class="action-bar">
<button id="addCustomerBtn" class="btn-primary">
<i class="fas fa-plus"></i>
添加客户进度
</button>
<button id="importBtn" class="btn-secondary">
<i class="fas fa-file-import"></i>
导入CSV
</button>
</div>
<div class="filter-bar">
<div class="filter-group">
<label for="customerFilter">筛选客户:</label>
<select id="customerFilter" class="filter-select">
<option value="">全部客户</option>
</select>
</div>
<div class="filter-group">
<label for="typeFilter">筛选类型:</label>
<select id="typeFilter" class="filter-select">
<option value="">全部类型</option>
</select>
</div>
<div class="filter-group">
<label for="statusProgressFilter">状态与进度:</label>
<select id="statusProgressFilter" class="filter-select">
<option value="">全部状态</option>
<option value="已完成">已完成</option>
<option value="进行中">进行中</option>
<option value="待排期">待排期</option>
<option value="已驳回">已驳回</option>
<option value="已上线">已上线</option>
</select>
</div>
<div class="filter-group">
<label for="customerStartDate">开始日期:</label>
<input type="date" id="customerStartDate" class="filter-input" />
</div>
<div class="filter-group">
<label for="customerEndDate">结束日期:</label>
<input type="date" id="customerEndDate" class="filter-input" />
</div>
</div>
<!-- Customer List -->
<div class="card table-card">
<div class="card-header">
<!-- Tab Navigation (Left Aligned) -->
<div class="customer-tabs">
<button class="customer-tab active" data-tab="progress-list" id="progressListTab">
<i class="fas fa-table"></i> 客户进度
</button>
<button class="customer-tab" data-tab="weekly-summary" id="weeklySummaryTab">
<i class="fas fa-file-alt"></i> 周报汇总
</button>
</div>
<div class="table-actions">
<button id="refreshCustomersBtn" class="icon-btn" title="刷新">
<i class="fas fa-sync-alt"></i>
</button>
<button id="exportCustomersBtn" class="icon-btn" title="导出">
<i class="fas fa-download"></i>
</button>
</div>
</div>
<div class="card-body">
<!-- Progress List View (Default) -->
<div id="progressListView" class="tab-content active">
<div class="table-responsive">
<table id="customerTable">
<thead>
<tr>
<th>客户</th>
<th>咨询时间</th>
<th>版本</th>
<th>描述</th>
<th>解决方案</th>
<th>类型</th>
<th>模块</th>
<th>状态与进度</th>
<th>截图</th>
<th>操作</th>
</tr>
</thead>
<tbody id="customerTableBody"></tbody>
</table>
</div>
<!-- Pagination -->
<div class="pagination">
<div class="pagination-info">
<span id="paginationInfo">显示 0-0 共 0 条</span>
</div>
<div class="pagination-controls">
<button id="firstPage" class="pagination-btn" disabled>
<i class="fas fa-angle-double-left"></i>
</button>
<button id="prevPage" class="pagination-btn" disabled>
<i class="fas fa-angle-left"></i>
</button>
<div id="pageNumbers" class="page-numbers"></div>
<button id="nextPage" class="pagination-btn" disabled>
<i class="fas fa-angle-right"></i>
</button>
<button id="lastPage" class="pagination-btn" disabled>
<i class="fas fa-angle-double-right"></i>
</button>
</div>
<div class="pagination-size">
<select id="pageSizeSelect">
<option value="10">10条/页</option>
<option value="20">20条/页</option>
<option value="50">50条/页</option>
<option value="100">100条/页</option>
</select>
</div>
</div>
</div>
<!-- Weekly Summary View -->
<div id="weeklySummaryView" class="tab-content">
<div class="weekly-summary-header">
<div class="week-info">
<i class="fas fa-calendar-week"></i>
<span id="currentWeekRange">本周</span>
</div>
<div class="week-navigation">
<button id="prevWeekBtn" class="week-nav-btn" title="上一周">
<i class="fas fa-chevron-left"></i>
</button>
<button id="currentWeekBtn" class="week-nav-btn" title="回到本周">
<i class="fas fa-home"></i> 本周
</button>
<button id="nextWeekBtn" class="week-nav-btn" title="下一周">
<i class="fas fa-chevron-right"></i>
</button>
</div>
<button id="exportWeeklySummaryBtn" class="btn-secondary" title="导出周报">
<i class="fas fa-file-export"></i> 导出周报
</button>
</div>
<div id="weeklySummaryContainer" class="weekly-summary-container">
<!-- Weekly summary cards will be rendered here -->
<div class="weekly-summary-empty">
<i class="fas fa-inbox"></i>
<p>本周暂无客户进度数据</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Trial Periods Section -->
<section id="trialPeriodsSection" class="content-section">
<div class="section-title" style="justify-content: flex-end">
<button id="addTrialBtn" class="btn-primary">
<i class="fas fa-plus"></i>
添加客户
</button>
</div>
<!-- Filter Bar for Trial Periods -->
<div class="filter-bar">
<div class="filter-group">
<label for="trialStartDateFilter">开始日期:</label>
<input type="date" id="trialStartDateFilter" class="filter-input" />
</div>
<div class="filter-group">
<label for="trialEndDateFilter">结束日期:</label>
<input type="date" id="trialEndDateFilter" class="filter-input" />
</div>
<div class="filter-group">
<label for="trialSortOrder">排序:</label>
<select id="trialSortOrder" class="filter-select">
<option value="desc">结束时间倒序</option>
<option value="asc">结束时间顺序</option>
</select>
</div>
</div>
<div class="card trial-periods-container animate-up">
<!-- 客户列表标头 -->
<div class="card-header">
<h3 class="card-title">
<i class="fas fa-users"></i>
客户列表
</h3>
<button id="refreshTrialPeriodsBtn" class="icon-btn" title="刷新列表">
<i class="fas fa-sync-alt"></i>
</button>
</div>
<div class="card-body table-container">
<table>
<thead>
<tr>
<th>客户名称</th>
<th>来源</th>
<th>意向产品</th>
<th>状态</th>
<th>开始时间</th>
<th>结束时间</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="trialPeriodsBody">
<!-- Trial periods will be loaded here -->
</tbody>
</table>
</div>
<!-- Pagination for trial periods -->
<div class="pagination">
<div class="pagination-info">
<span id="trialPaginationInfo">显示 0-0 共 0 条</span>
</div>
<div class="pagination-controls">
<button id="trialFirstPage" class="pagination-btn" disabled>
<i class="fas fa-angle-double-left"></i>
</button>
<button id="trialPrevPage" class="pagination-btn" disabled>
<i class="fas fa-angle-left"></i>
</button>
<div id="trialPageNumbers" class="page-numbers"></div>
<button id="trialNextPage" class="pagination-btn" disabled>
<i class="fas fa-angle-right"></i>
</button>
<button id="trialLastPage" class="pagination-btn" disabled>
<i class="fas fa-angle-double-right"></i>
</button>
</div>
<div class="pagination-size">
<select id="trialPageSizeSelect">
<option value="10">10条/页</option>
<option value="20">20条/页</option>
<option value="50">50条/页</option>
<option value="100">100条/页</option>
</select>
</div>
</div>
</div>
</section>
<!-- Dashboard Section -->
<section id="dashboardSection" class="content-section active">
<div class="dashboard-stats">
<div class="stat-card">
<div class="stat-icon">
<i class="fas fa-users"></i>
</div>
<div class="stat-info">
<h3 id="totalCustomers">0</h3>
<p>总客户数</p>
</div>
</div>
<div class="stat-card">
<div class="stat-icon">
<i class="fas fa-user-plus"></i>
</div>
<div class="stat-info">
<h3 id="newCustomers">0</h3>
<p>本月新增</p>
</div>
</div>
<div class="stat-card">
<div class="stat-icon">
<i class="fas fa-check-circle"></i>
</div>
<div class="stat-info">
<h3 id="completedTasks">0</h3>
<p>已成交</p>
</div>
</div>
<div class="stat-card stat-card-highlight">
<div class="stat-icon">
<i class="fas fa-user-check"></i>
</div>
<div class="stat-info">
<h3 id="followUpCount">0</h3>
<p>跟进客户次数</p>
</div>
</div>
</div>
<div class="dashboard-filters">
<div class="filter-group">
<label>日期范围:</label>
<input type="date" id="startDate" />
<span></span>
<input type="date" id="endDate" />
<button id="applyFilters" class="btn-primary">
<i class="fas fa-filter"></i>
应用筛选
</button>
</div>
</div>
<div class="dashboard-grid">
<div class="card chart-card">
<div class="card-header">
<h3><i class="fas fa-chart-pie"></i> 模块分布</h3>
<div class="chart-controls">
<select id="chartFieldSelect" class="chart-field-select">
<option value="customerName">客户</option>
<option value="type">类型</option>
<option value="module" selected>模块</option>
</select>
</div>
</div>
<div class="card-body">
<canvas id="statusChart"></canvas>
</div>
</div>
<div class="card chart-card">
<div class="card-header">
<h3><i class="fas fa-chart-doughnut"></i> 类型分布</h3>
<div class="chart-controls">
<select id="typeChartFieldSelect" class="chart-field-select">
<option value="customerName">客户</option>
<option value="type" selected>类型</option>
<option value="module">模块</option>
</select>
</div>
</div>
<div class="card-body">
<canvas id="typeChart"></canvas>
</div>
</div>
</div>
<!-- Trend Line Chart -->
<div class="dashboard-grid" style="margin-top: 20px">
<div class="card chart-card" style="grid-column: 1 / -1">
<div class="card-header">
<h3><i class="fas fa-chart-line"></i> 时间趋势分析</h3>
<div class="chart-controls">
<select id="trendTypeSelect" class="chart-field-select">
<option value="all" selected>全部指标</option>
<option value="customer">客户数</option>
<option value="demand">需求数</option>
<option value="issue">反馈数</option>
</select>
<select id="trendChartFieldSelect" class="chart-field-select">
<option value="day" selected>按天统计</option>
<option value="week">按周统计</option>
<option value="month">按月统计</option>
</select>
</div>
</div>
<div class="card-body">
<canvas id="trendChart"></canvas>
</div>
</div>
</div>
</section>
<!-- Follow-up Section -->
<section id="followupSection" class="content-section">
<div class="reminder-banner" id="followUpReminder" style="display: none">
<div class="reminder-icon">
<i class="fas fa-bell"></i>
</div>
<div class="reminder-content">
<h4>待跟进提醒</h4>
<p id="followUpReminderText"></p>
</div>
<button class="reminder-close" id="closeReminderBtn">
<i class="fas fa-times"></i>
</button>
</div>
<div class="action-bar">
<button id="addFollowUpBtn" class="btn-primary">
<i class="fas fa-plus"></i>
添加跟进
</button>
<button id="refreshFollowupsBtn" class="btn-secondary">
<i class="fas fa-sync-alt"></i>
刷新
</button>
</div>
<!-- Follow-up Form -->
<div class="card" id="followupFormCard" style="display: none; margin-bottom: 20px">
<div class="card-header">
<h3><i class="fas fa-plus-circle"></i> 新增客户跟进</h3>
</div>
<div class="card-body">
<form id="followupForm">
<div class="form-row">
<div class="form-group">
<label for="followupCustomerName">客户名称 <span style="color: red">*</span></label>
<select id="followupCustomerName" name="customerName" required>
<option value="" disabled selected hidden>请选择客户</option>
</select>
</div>
<div class="form-group">
<label for="followupDealStatus">成交状态 <span style="color: red">*</span></label>
<select id="followupDealStatus" name="dealStatus" required>
<option value="" disabled selected hidden>请选择</option>
<option value="未成交">未成交</option>
<option value="已成交">已成交</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="followupCustomerLevel">客户级别 <span
style="color: red">*</span></label>
<select id="followupCustomerLevel" name="customerLevel" required>
<option value="" disabled selected hidden>请选择</option>
<option value="A (重点关注)">A (重点关注)</option>
<option value="B (很有希望)">B (很有希望)</option>
<option value="C (常规意向)">C (常规意向)</option>
<option value="D (暂时不试用)">D (暂时不试用)</option>
<option value="E (明确拒绝)">E (明确拒绝)</option>
</select>
</div>
<div class="form-group">
<label for="nextFollowUpDate">下次跟进日期</label>
<input type="date" id="nextFollowUpDate" name="nextFollowUpDate" />
</div>
</div>
<div class="form-group">
<label for="followupContent">跟进内容 <span style="color: red">*</span></label>
<textarea id="followupContent" name="content" rows="4" placeholder="请输入本次跟进的详细情况..."
required></textarea>
</div>
<div class="form-actions">
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i> 保存跟进记录
</button>
<button type="button" id="cancelFollowupBtn" class="btn-secondary">
取消
</button>
</div>
</form>
</div>
</div>
<div class="card table-card animate-up">
<div class="card-header">
<h3><i class="fas fa-history"></i> 跟进记录</h3>
</div>
<div class="card-body">
<div class="table-responsive">
<table id="followupTable">
<thead>
<tr>
<th>客户名称</th>
<th>成交状态</th>
<th>客户级别</th>
<th>行业</th>
<th>跟进时间</th>
<th>通知状态</th>
<th>操作</th>
</tr>
</thead>
<tbody id="followupTableBody"></tbody>
</table>
</div>
<!-- Pagination for follow-ups -->
<div class="pagination">
<div class="pagination-info">
<span id="followupPaginationInfo">显示 0-0 共 0 条</span>
</div>
<div class="pagination-controls">
<button id="followupFirstPage" class="pagination-btn" disabled>
<i class="fas fa-angle-double-left"></i>
</button>
<button id="followupPrevPage" class="pagination-btn" disabled>
<i class="fas fa-angle-left"></i>
</button>
<div id="followupPageNumbers" class="page-numbers"></div>
<button id="followupNextPage" class="pagination-btn" disabled>
<i class="fas fa-angle-right"></i>
</button>
<button id="followupLastPage" class="pagination-btn" disabled>
<i class="fas fa-angle-double-right"></i>
</button>
</div>
</div>
</div>
</div>
</section>
</main>
</div>
</div>
<!-- Modal for adding customer progress -->
<div id="createModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-user-plus"></i> 添加客户进度</h3>
<span class="close">&times;</span>
</div>
<div class="modal-body">
<form id="createCustomerForm">
<input type="hidden" id="createCustomerId" />
<div class="form-row">
<div class="form-group">
<label for="createCustomerName">客户名称 <span style="color: red">*</span></label>
<select id="createCustomerName" name="customerName" required>
<option value="" disabled selected hidden>请选择客户</option>
</select>
</div>
<div class="form-group">
<label for="createIntendedProduct">咨询时间 <span style="color: red">*</span></label>
<input type="date" id="createIntendedProduct" name="intendedProduct" required />
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="createVersion">版本</label>
<input type="text" id="createVersion" name="version" placeholder="如v1.0" />
</div>
<div class="form-group">
<label for="createType">类型 <span style="color: red">*</span></label>
<select id="createType" name="type" required>
<option value="" disabled selected hidden>请选择类型</option>
<option value="反馈">反馈</option>
<option value="需求">需求</option>
<option value="咨询">咨询</option>
<option value="功能问题">功能问题</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="createModule">模块</label>
<select id="createModule" name="module">
<option value="" disabled selected hidden>请选择模块</option>
<option value="数据生成">数据生成</option>
<option value="数据集">数据集</option>
<option value="数据空间">数据空间</option>
<option value="模型工坊">模型工坊</option>
<option value="模型广场">模型广场</option>
<option value="镜像管理">镜像管理</option>
<option value="其他">其他</option>
</select>
<input type="text" id="createModuleOther" name="moduleOther" placeholder="请填写模块名称"
style="display: none; margin-top: 8px" />
</div>
<div class="form-group">
<label for="createStatusProgress">状态与进度 <span style="color: red">*</span></label>
<select id="createStatusProgress" name="statusProgress" required>
<option value="" disabled selected hidden>请选择状态</option>
<option value="已完成">已完成</option>
<option value="进行中">进行中</option>
<option value="待排期">待排期</option>
<option value="已驳回">已驳回</option>
<option value="已上线">已上线</option>
</select>
</div>
</div>
<div class="form-group">
<label for="createDescription">描述</label>
<textarea id="createDescription" name="description" rows="3"
placeholder="请输入问题描述..."></textarea>
</div>
<div class="form-group">
<label for="createSolution">解决方案</label>
<textarea id="createSolution" name="solution" rows="3" placeholder="请输入拟采取的解决方案..."></textarea>
</div>
<div class="form-group">
<label>截图 (支持多张)</label>
<div class="screenshot-upload-container">
<div id="createScreenshotPreview" class="screenshot-preview-list"></div>
<label class="screenshot-upload-btn">
<i class="fas fa-camera"></i>
<span>上传截图</span>
<input type="file" id="createScreenshots" accept="image/*" multiple hidden />
</label>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i>
保存
</button>
<button type="button" class="btn-secondary cancel-create">
<i class="fas fa-times"></i>
取消
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal for editing customer progress -->
<div id="editModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-edit"></i> 编辑客户进度</h3>
<span class="close">&times;</span>
</div>
<div class="modal-body">
<form id="editCustomerForm">
<input type="hidden" id="editCustomerId" />
<div class="form-row">
<div class="form-group">
<label for="editCustomerName">客户名称 <span style="color: red">*</span></label>
<input type="text" id="editCustomerName" name="customerName" readonly />
</div>
<div class="form-group">
<label for="editIntendedProduct">咨询时间 <span style="color: red">*</span></label>
<input type="date" id="editIntendedProduct" name="intendedProduct" required />
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="editVersion">版本</label>
<input type="text" id="editVersion" name="version" />
</div>
<div class="form-group">
<label for="editType">类型 <span style="color: red">*</span></label>
<select id="editType" name="type" required>
<option value="" disabled selected hidden>请选择类型</option>
<option value="反馈">反馈</option>
<option value="需求">需求</option>
<option value="咨询">咨询</option>
<option value="功能问题">功能问题</option>
<option value="其他">其他</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="editModule">模块</label>
<select id="editModule" name="module">
<option value="" disabled selected hidden>请选择模块</option>
<option value="数据生成">数据生成</option>
<option value="数据集">数据集</option>
<option value="数据空间">数据空间</option>
<option value="模型工坊">模型工坊</option>
<option value="模型广场">模型广场</option>
<option value="镜像管理">镜像管理</option>
<option value="其他">其他</option>
</select>
<input type="text" id="editModuleOther" name="moduleOther" placeholder="请填写模块名称"
style="display: none; margin-top: 8px" />
</div>
<div class="form-group">
<label for="editStatusProgress">状态与进度 <span style="color: red">*</span></label>
<select id="editStatusProgress" name="statusProgress" required>
<option value="" disabled selected hidden>请选择状态</option>
<option value="已完成">已完成</option>
<option value="进行中">进行中</option>
<option value="待排期">待排期</option>
<option value="已驳回">已驳回</option>
<option value="已上线">已上线</option>
</select>
</div>
</div>
<div class="form-group">
<label for="editDescription">描述</label>
<textarea id="editDescription" name="description" rows="3"></textarea>
</div>
<div class="form-group">
<label for="editSolution">解决方案</label>
<textarea id="editSolution" name="solution" rows="3"></textarea>
</div>
<div class="form-group">
<label>截图 (支持多张)</label>
<div class="screenshot-upload-container">
<div id="editScreenshotPreview" class="screenshot-preview-list"></div>
<label class="screenshot-upload-btn">
<i class="fas fa-camera"></i>
<span>上传截图</span>
<input type="file" id="editScreenshots" accept="image/*" multiple hidden />
</label>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i>
更新
</button>
<button type="button" class="btn-secondary cancel-edit">
<i class="fas fa-times"></i>
取消
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal for adding follow-up -->
<div id="addFollowupModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-plus-circle"></i> 新增跟进记录</h3>
<span class="close">&times;</span>
</div>
<div class="modal-body">
<form id="addFollowupModalForm">
<div class="form-row">
<div class="form-group">
<label for="addFollowupCustomerName">客户名称 <span style="color: red">*</span></label>
<select id="addFollowupCustomerName" name="customerName" required>
<option value="" disabled selected hidden>请选择客户</option>
</select>
</div>
<div class="form-group">
<label for="addFollowupDealStatus">成交状态 <span style="color: red">*</span></label>
<select id="addFollowupDealStatus" name="dealStatus" required>
<option value="" disabled selected hidden>请选择</option>
<option value="已成交">已成交</option>
<option value="未成交">未成交</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="addFollowupCustomerLevel">客户级别 <span style="color: red">*</span></label>
<select id="addFollowupCustomerLevel" name="customerLevel" required>
<option value="" disabled selected hidden>请选择</option>
<option value="A">A级 (重点客户)</option>
<option value="B">B级 (潜在客户)</option>
<option value="C">C级 (一般客户)</option>
</select>
</div>
<div class="form-group">
<label for="addFollowupIndustry">行业</label>
<input type="text" id="addFollowupIndustry" name="industry" placeholder="请输入行业" />
</div>
</div>
<div class="form-group">
<label for="addFollowupTime">跟进时间 <span style="color: red">*</span></label>
<input type="datetime-local" id="addFollowupTime" name="followUpTime" required />
</div>
<div class="form-actions">
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i>
保存
</button>
<button type="button" class="btn-secondary cancel-add-followup">
取消
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal for editing follow-up -->
<div id="editFollowupModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-edit"></i> 编辑跟进记录</h3>
<span class="close">&times;</span>
</div>
<div class="modal-body">
<form id="editFollowupForm">
<input type="hidden" id="editFollowupId" />
<div class="form-row">
<div class="form-group">
<label for="editFollowupCustomerName">客户名称 <span style="color: red">*</span></label>
<select id="editFollowupCustomerName" name="customerName" required>
<option value="" disabled selected hidden>请选择客户</option>
</select>
</div>
<div class="form-group">
<label for="editFollowupDealStatus">成交状态 <span style="color: red">*</span></label>
<select id="editFollowupDealStatus" name="dealStatus" required>
<option value="" disabled selected hidden>请选择</option>
<option value="已成交">已成交</option>
<option value="未成交">未成交</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="editFollowupCustomerLevel">客户级别 <span style="color: red">*</span></label>
<select id="editFollowupCustomerLevel" name="customerLevel" required>
<option value="" disabled selected hidden>请选择</option>
<option value="A">A级 (重点客户)</option>
<option value="B">B级 (潜在客户)</option>
<option value="C">C级 (一般客户)</option>
</select>
</div>
<div class="form-group">
<label for="editFollowupIndustry">行业</label>
<input type="text" id="editFollowupIndustry" name="industry" />
</div>
</div>
<div class="form-group">
<label for="editFollowupTime">跟进时间 <span style="color: red">*</span></label>
<input type="datetime-local" id="editFollowupTime" name="followUpTime" required />
</div>
<div class="form-actions">
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i>
更新
</button>
<button type="button" class="btn-secondary cancel-edit-followup">
取消
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal for CSV Import -->
<div id="importModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-file-import"></i> 导入CSV数据</h3>
<span class="close">&times;</span>
</div>
<div class="modal-body">
<form id="importFileForm">
<div class="import-instructions">
<p>请选择包含以下列的CSV文件</p>
<ul>
<li>客户, 咨询时间, 版本, 描述, 解决方案, 类型, 模块, 状态与进度</li>
</ul>
<p><small>* 第一行为表头,数据将从第二行开始导入。</small></p>
</div>
<div class="file-upload">
<i class="fas fa-cloud-upload-alt"></i>
<p id="fileName">选择文件...</p>
<input type="file" id="importFile" accept=".csv" />
</div>
<div id="importStatus" style="margin-top: 15px"></div>
<div class="form-actions">
<button type="submit" id="confirmImportBtn" class="btn-primary">
<i class="fas fa-check"></i>
开始导入
</button>
<button type="button" class="btn-secondary cancel-import">
取消
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal for adding trial period -->
<div id="addTrialPeriodModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-user-plus"></i> 添加客户</h3>
<span class="close">&times;</span>
</div>
<div class="modal-body">
<form id="addTrialPeriodForm">
<div class="form-group">
<label for="trialCustomerInput">客户名称</label>
<input type="text" id="trialCustomerInput" name="customerName" placeholder="请输入客户名称" required />
</div>
<div class="form-group">
<label for="trialCustomerSource">客户来源</label>
<input type="text" id="trialCustomerSource" name="source" placeholder="请输入客户来源(如:官网、展会、推荐等)" />
</div>
<div class="form-group">
<label>意向产品(可多选)</label>
<div class="checkbox-group" id="trialIntendedProductGroup">
<label class="checkbox-label">
<input type="checkbox" name="intendedProduct" value="数据闭环" />
<span>数据闭环</span>
</label>
<label class="checkbox-label">
<input type="checkbox" name="intendedProduct" value="robogo" />
<span>robogo</span>
</label>
<label class="checkbox-label">
<input type="checkbox" name="intendedProduct" value="其他"
id="trialIntendedProductOtherCheckbox" />
<span>其他</span>
</label>
</div>
<input type="text" id="trialIntendedProductOther" name="intendedProductOther"
placeholder="请输入其他意向产品" style="display: none; margin-top: 8px" />
</div>
<div class="form-group" id="trialIsTrialGroup">
<label>是否试用</label>
<div style="display: flex; gap: 20px; align-items: center">
<label style="
display: flex;
align-items: center;
gap: 5px;
cursor: pointer;
">
<input type="radio" name="isTrial" value="true" checked />
<span></span>
</label>
<label style="
display: flex;
align-items: center;
gap: 5px;
cursor: pointer;
">
<input type="radio" name="isTrial" value="false" />
<span></span>
</label>
</div>
</div>
<div class="form-group" id="trialStartTimeGroup">
<label for="trialStartTime">开始时间</label>
<input type="datetime-local" id="trialStartTime" name="startTime" />
</div>
<div class="form-group" id="trialEndTimeGroup">
<label for="trialEndTime">结束时间</label>
<input type="datetime-local" id="trialEndTime" name="endTime" />
</div>
<div class="form-actions">
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i>
保存
</button>
<button type="button" class="btn-secondary cancel-trial">
<i class="fas fa-times"></i>
取消
</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal for editing trial period -->
<div id="editTrialPeriodModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-user-edit"></i> 编辑客户信息</h3>
<span class="close">&times;</span>
</div>
<div class="modal-body">
<form id="editTrialPeriodForm">
<input type="hidden" id="editTrialPeriodId" />
<div class="form-group">
<label for="editTrialCustomerSource">客户来源</label>
<input type="text" id="editTrialCustomerSource" name="source"
placeholder="请输入客户来源(如:官网、展会、推荐等)" />
</div>
<div class="form-group">
<label>意向产品(可多选)</label>
<div class="checkbox-group" id="editTrialIntendedProductGroup">
<label class="checkbox-label">
<input type="checkbox" name="editIntendedProduct" value="数据闭环" />
<span>数据闭环</span>
</label>
<label class="checkbox-label">
<input type="checkbox" name="editIntendedProduct" value="robogo" />
<span>robogo</span>
</label>
<label class="checkbox-label">
<input type="checkbox" name="editIntendedProduct" value="其他"
id="editTrialIntendedProductOtherCheckbox" />
<span>其他</span>
</label>
</div>
<input type="text" id="editTrialIntendedProductOther" name="editIntendedProductOther"
placeholder="请输入其他意向产品" style="display: none; margin-top: 8px" />
</div>
<div class="form-group" id="editTrialStartTimeGroup">
<label for="editTrialStartTime">开始时间</label>
<input type="datetime-local" id="editTrialStartTime" name="startTime" />
</div>
<div class="form-group" id="editTrialEndTimeGroup">
<label for="editTrialEndTime">结束时间</label>
<input type="datetime-local" id="editTrialEndTime" name="endTime" />
</div>
<div class="form-group" id="editTrialIsTrialGroup">
<label>是否试用</label>
<div style="display: flex; gap: 20px; align-items: center">
<label style="
display: flex;
align-items: center;
gap: 5px;
cursor: pointer;
">
<input type="radio" name="editIsTrial" value="true" />
<span></span>
</label>
<label style="
display: flex;
align-items: center;
gap: 5px;
cursor: pointer;
">
<input type="radio" name="editIsTrial" value="false" />
<span></span>
</label>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn-primary">
<i class="fas fa-save"></i>
保存
</button>
<button type="button" class="btn-secondary cancel-edit-trial">
<i class="fas fa-times"></i>
取消
</button>
</div>
</form>
</div>
</div>
</div>
<!-- 登录页面模态框 (如果未登录显示) -->
<div id="loginOverlay" class="login-overlay" style="display: none">
<div class="login-card">
<div class="login-header">
<i class="fas fa-lock"></i>
<h2>CRM 系统登录</h2>
</div>
<form id="loginForm">
<div class="form-group">
<label for="loginUsername">用户名</label>
<input type="text" id="loginUsername" placeholder="请输入用户名" required />
</div>
<div class="form-group">
<label for="loginPassword">密码</label>
<input type="password" id="loginPassword" placeholder="请输入密码" required />
</div>
<button type="submit" class="btn-primary btn-block">登录</button>
<div id="loginStatus" class="login-status"></div>
</form>
</div>
</div>
<!-- Image Viewer Modal (Lightbox) -->
<div id="imageViewerModal" class="image-viewer-modal" style="display: none">
<span class="image-viewer-close">&times;</span>
<img class="image-viewer-content" id="fullImage" />
<div id="imageViewerCaption"></div>
</div>
<!-- Scripts -->
<script src="/static/js/main.js?v=4.0"></script>
<script src="/static/js/trial-periods.js?v=1.3"></script>
<script src="/static/js/trial-periods-page.js?v=1.6"></script>
</body>
</html>