feat(vip): 添加VIP客户管理功能

- 创建vip_customers表存储VIP客户信息
- 实现VIP客户添加、查看和删除功能
- 在预约页面增加VIP客户选择功能
- 添加VIP管理页面和API接口
This commit is contained in:
2025-11-19 01:51:04 +08:00
parent 00fc854a64
commit f605aa1c98
5 changed files with 489 additions and 8 deletions
+260
View File
@@ -0,0 +1,260 @@
<?php
session_start();
require_once 'db_connect.php';
$message = '';
$success_message = '';
// 处理表单提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
try {
if (isset($_POST['action'])) {
$action = $_POST['action'];
if ($action === 'add_vip') {
$customer_name = trim($_POST['customer_name']);
$phone = trim($_POST['phone']);
$car_model = trim($_POST['car_model']);
$car_number = trim($_POST['car_number']);
$email = trim($_POST['email'] ?? '');
$birthday = $_POST['birthday'] ?? '';
$notes = trim($_POST['notes'] ?? '');
if (empty($customer_name) || empty($phone)) {
throw new Exception('请填写客户姓名和联系电话');
}
// 检查VIP客户是否已存在
$stmt = $pdo->prepare("SELECT id FROM vip_customers WHERE phone = ?");
$stmt->execute([$phone]);
if ($stmt->fetch()) {
throw new Exception('该手机号码已经是VIP客户');
}
// 插入VIP客户
$stmt = $pdo->prepare("INSERT INTO vip_customers
(customer_name, phone, car_model, car_number, email, birthday, notes)
VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->execute([$customer_name, $phone, $car_model, $car_number, $email, $birthday, $notes]);
$success_message = "VIP客户录入成功!";
} elseif ($action === 'delete_vip') {
$id = (int)$_POST['vip_id'];
$stmt = $pdo->prepare("DELETE FROM vip_customers WHERE id = ?");
$stmt->execute([$id]);
$success_message = "VIP客户删除成功!";
}
}
} catch (Exception $e) {
$message = $e->getMessage();
}
}
// 获取所有VIP客户
try {
$stmt = $pdo->query("SELECT * FROM vip_customers ORDER BY created_at DESC");
$vip_customers = $stmt->fetchAll();
} catch (Exception $e) {
$error_message = '获取VIP客户列表失败:' . $e->getMessage();
$vip_customers = [];
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="format-detection" content="telephone=no">
<meta name="description" content="VIP客户管理,录入和管理VIP客户信息">
<meta name="keywords" content="VIP管理,客户管理,会员管理">
<title>VIP管理 - 洗车预约系统</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<header class="header">
<h1>👑 VIP客户管理</h1>
<nav class="nav">
<a href="index.php" class="nav-link">预约洗车</a>
<a href="bookings.php" class="nav-link">预约管理</a>
<a href="packages.php" class="nav-link">套餐管理</a>
<a href="vip.php" class="nav-link active">VIP管理</a>
</nav>
</header>
<?php if (isset($success_message)): ?>
<div class="success-message"><?php echo $success_message; ?></div>
<?php endif; ?>
<?php if (isset($error_message)): ?>
<div class="error-message"><?php echo $error_message; ?></div>
<?php endif; ?>
<?php if ($message): ?>
<div class="message error-message" style="background-color: #fee; color: #c33; border-color: #fcc;">
<?= htmlspecialchars($message) ?>
</div>
<?php endif; ?>
<div class="vip-management">
<!-- VIP录入表单 -->
<div class="card">
<h2> 录入新VIP客户</h2>
<form method="POST" class="form">
<input type="hidden" name="action" value="add_vip">
<div class="form-row">
<div class="form-group">
<label for="customer_name">客户姓名 *</label>
<input type="text" id="customer_name" name="customer_name" required>
</div>
<div class="form-group">
<label for="phone">联系电话 *</label>
<input type="tel" id="phone" name="phone" required>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="car_model">车型</label>
<input type="text" id="car_model" name="car_model" placeholder="如:宝马X5">
</div>
<div class="form-group">
<label for="car_number">车牌号</label>
<input type="text" id="car_number" name="car_number" placeholder="如:京A88888">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="email">邮箱</label>
<input type="email" id="email" name="email" placeholder="可选">
</div>
<div class="form-group">
<label for="birthday">生日</label>
<input type="date" id="birthday" name="birthday">
</div>
</div>
<div class="form-group">
<label for="notes">备注</label>
<textarea id="notes" name="notes" rows="3" placeholder="VIP客户特殊需求或备注信息..."></textarea>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">录入VIP客户</button>
<button type="reset" class="btn">重置</button>
</div>
</form>
</div>
<!-- VIP客户列表 -->
<div class="card">
<h2>👑 VIP客户列表 (共 <?php echo count($vip_customers); ?> 位)</h2>
<?php if (empty($vip_customers)): ?>
<div class="empty-message">暂无VIP客户</div>
<?php else: ?>
<div class="vip-grid">
<?php foreach ($vip_customers as $vip): ?>
<div class="vip-card">
<div class="vip-header">
<h3><?php echo htmlspecialchars($vip['customer_name']); ?></h3>
<div class="vip-status">👑 VIP</div>
</div>
<div class="vip-details">
<div class="detail-item">
<span class="detail-label">联系电话:</span>
<span class="detail-value"><?php echo htmlspecialchars($vip['phone']); ?></span>
</div>
<?php if ($vip['car_model']): ?>
<div class="detail-item">
<span class="detail-label">车型:</span>
<span class="detail-value"><?php echo htmlspecialchars($vip['car_model']); ?></span>
</div>
<?php endif; ?>
<?php if ($vip['car_number']): ?>
<div class="detail-item">
<span class="detail-label">车牌号:</span>
<span class="detail-value"><?php echo htmlspecialchars($vip['car_number']); ?></span>
</div>
<?php endif; ?>
<?php if ($vip['email']): ?>
<div class="detail-item">
<span class="detail-label">邮箱:</span>
<span class="detail-value"><?php echo htmlspecialchars($vip['email']); ?></span>
</div>
<?php endif; ?>
<?php if ($vip['birthday']): ?>
<div class="detail-item">
<span class="detail-label">生日:</span>
<span class="detail-value"><?php echo date('Y-m-d', strtotime($vip['birthday'])); ?></span>
</div>
<?php endif; ?>
</div>
<?php if ($vip['notes']): ?>
<div class="vip-notes">
<span class="detail-label">备注:</span>
<span><?php echo htmlspecialchars($vip['notes']); ?></span>
</div>
<?php endif; ?>
<div class="vip-meta">
<span>录入时间:<?php echo $vip['created_at']; ?></span>
</div>
<div class="vip-actions">
<form method="POST" style="display: inline;">
<input type="hidden" name="vip_id" value="<?php echo $vip['id']; ?>">
<button type="submit" name="action" value="delete_vip"
class="btn btn-sm btn-danger"
onclick="return confirm('确定要删除这个VIP客户吗?')">删除</button>
</form>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
</div>
<div style="text-align: center; margin-top: 2rem;">
<a href="index.php" class="btn">返回预约页面</a>
</div>
</div>
<script>
// 移动端优化脚本
document.addEventListener('DOMContentLoaded', function() {
// 为按钮添加触摸反馈
const buttons = document.querySelectorAll('.btn');
buttons.forEach(btn => {
btn.addEventListener('touchstart', function() {
this.style.transform = 'translateY(1px)';
});
btn.addEventListener('touchend', function() {
this.style.transform = 'translateY(-2px)';
});
});
// 检测设备类型
const isMobile = /Mobi|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
if (isMobile) {
document.body.classList.add('mobile-device');
}
});
</script>
</body>
</html>