统一packages.php与pending_bookings.php的样式

This commit is contained in:
2025-12-06 02:17:42 +08:00
parent 9d8fa49206
commit bb3ebffb37
2 changed files with 207 additions and 29 deletions
+58 -24
View File
@@ -51,18 +51,52 @@ $packages = $stmt->fetchAll();
<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="洗车套餐管理系统">
<meta name="keywords" content="洗车,套餐,管理">
<link rel="apple-touch-icon" href="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTkyIiBoZWlnaHQ9IjE5MiIgdmlld0JveD0iMCAwIDE5MiAxOTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxOTIiIGhlaWdodD0iMTkyIiByeD0iMjQiIGZpbGw9IiMzMDk1RjQiLz4KPHN2ZyB4PSI0OCIgeT0iNDgiIHdpZHRoPSI5NiIgaGVpZ2h0PSI5NiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+CjxwYXRoIGQ9Ik0yMS4yIDQuNEMyMS42IDMuNiAyMi4xIDMuMSAyMi41IDIuN0MyMy40IDIuMSAyNC41IDIuMSAyNS4yIDIuN0MyNS44IDMuMSAyNi4zIDMuNiAyNi43IDQuNEMyNy4xIDUuMSAyNy4xIDYuMiAyNi43IDcuMUMyNi4zIDcuOCAyNS44IDguMyAyNS4yIDguN0MyNC43IDkuMSAyMy42IDkuMSAyMi45IDguN0MyMi4zIDguMyAyMS44IDcuOCAyMS40IDcuMUMyMS4wIDYuMiAyMS4wIDUuMSAyMS4yIDQuNFoiLz4KPHN2ZyB4PSIyMCIgeT0iMTIiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+CjxwYXRoIGQ9Ik0yMSAyMy41QzIwLjUgMjMuNSAyMCAyMyAyMCAyMi41VjEyQzIwIDExLjUgMjAuNSAxMSAyMSAxMUg5QzguNSAxMSAxMi41IDEwLjUgMTIgMTBIMjBWMTBCMjAgMTAuNSAyMC41IDExIDIxIDExVjIzLjVaIi8+CjxwYXRoIGQ9Ik0xOCAyMFYxN0gxNFY4SDVWMTNIMTlWMTVIMTlWMjBaIi8+CjxwYXRoIGQ9Ik04IDEwSDVWN0g4VjEwWiIvPgo8L3N2Zz4KPC9zdmc+">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>套餐管理 - 洗车预约系统</title>
<link rel="stylesheet" href="style.css">
<style>
/* 套餐管理页面特定样式 - 与pending_bookings.php保持一致 */
.pending-bookings-container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.package-form-container {
background: #fff;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
margin-bottom: 20px;
padding: 20px;
}
.packages-list {
background: #fff;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
margin-bottom: 20px;
padding: 20px;
}
.packages-list h2 {
margin-top: 0;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
color: #2c3e50;
}
.package-form-container h2 {
margin-top: 0;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
color: #2c3e50;
}
</style>
</head>
<body>
<div class="container">
<div class="pending-bookings-container">
<header class="header">
<h1>🚗 洗车预约系统 - 套餐管理</h1>
<nav class="nav">
@@ -82,9 +116,9 @@ $packages = $stmt->fetchAll();
</div>
<?php endif; ?>
<div class="package-form-container card">
<div class="package-form-container">
<h2>添加新套餐</h2>
<form method="POST" class="form">
<form method="POST">
<input type="hidden" name="action" value="add">
<div class="form-group">
@@ -114,18 +148,18 @@ $packages = $stmt->fetchAll();
<div class="services-container">
<div class="service-item">
<input type="text" name="services[]" placeholder="服务项目1" value="外观清洗">
<button type="button" class="btn btn-danger btn-sm" onclick="removeService(this)">删除</button>
<button type="button" class="btn-danger btn-sm" onclick="removeService(this)">删除</button>
</div>
<div class="service-item">
<input type="text" name="services[]" placeholder="服务项目2" value="内饰清洁">
<button type="button" class="btn btn-danger btn-sm" onclick="removeService(this)">删除</button>
<button type="button" class="btn-danger btn-sm" onclick="removeService(this)">删除</button>
</div>
</div>
<button type="button" class="btn btn-outline btn-sm" onclick="addService()">+ 添加服务项目</button>
<button type="button" class="btn-outline btn-sm" onclick="addService()">+ 添加服务项目</button>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary btn-lg">添加套餐</button>
<button type="submit" class="btn-primary btn-lg">添加套餐</button>
</div>
</form>
</div>
@@ -141,8 +175,8 @@ $packages = $stmt->fetchAll();
<?php else: ?>
<div class="packages-grid">
<?php foreach ($packages as $package): ?>
<div class="package-card card <?= $package['is_active'] ? '' : 'inactive' ?>">
<div class="package-header">
<div class="package-card pending-card <?= $package['is_active'] ? '' : 'inactive' ?>">
<div class="package-header pending-header">
<h3 class="package-title"><?= htmlspecialchars($package['package_name']) ?></h3>
<div class="package-status">
<span class="status-badge <?= $package['is_active'] ? 'active' : 'inactive' ?>">
@@ -155,7 +189,7 @@ $packages = $stmt->fetchAll();
<p class="package-description"><?= htmlspecialchars($package['description']) ?></p>
<?php endif; ?>
<div class="package-details">
<div class="package-details detail-grid">
<div class="detail-item">
<span class="detail-label">基础时长:</span>
<span class="detail-value"><strong><?= $package['base_duration'] ?></strong>分钟</span>
@@ -183,16 +217,16 @@ $packages = $stmt->fetchAll();
<?php endif; ?>
<div class="package-actions">
<button class="btn btn-primary btn-sm" onclick="editPackage(<?= $package['id'] ?>">编辑</button>
<button class="btn-primary btn-sm" onclick="editPackage(<?= $package['id'] ?>)">编辑</button>
<form method="POST" style="display: inline;" onsubmit="return confirmDelete()">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="id" value="<?= $package['id'] ?>">
<button type="submit" class="btn btn-danger btn-sm">删除</button>
<button type="submit" class="btn-danger btn-sm">删除</button>
</form>
</div>
<!-- 编辑表单 -->
<form method="POST" class="edit-form card" id="edit-form-<?= $package['id'] ?>" style="display: none;">
<form method="POST" class="edit-form" id="edit-form-<?= $package['id'] ?>" style="display: none;">
<input type="hidden" name="action" value="update">
<input type="hidden" name="id" value="<?= $package['id'] ?>">
@@ -230,14 +264,14 @@ $packages = $stmt->fetchAll();
?>
<div class="service-item">
<input type="text" name="services[]" value="<?= htmlspecialchars(trim($service)) ?>">
<button type="button" class="btn btn-danger btn-sm" onclick="removeService(this)">删除</button>
<button type="button" class="btn-danger btn-sm" onclick="removeService(this)">删除</button>
</div>
<?php
endif;
endforeach;
?>
</div>
<button type="button" class="btn btn-outline btn-sm" onclick="addService()">+ 添加服务项目</button>
<button type="button" class="btn-outline btn-sm" onclick="addService()">+ 添加服务项目</button>
</div>
<div class="form-group">
@@ -248,8 +282,8 @@ $packages = $stmt->fetchAll();
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">保存更改</button>
<button type="button" class="btn btn-outline" onclick="cancelEdit(<?= $package['id'] ?>)">取消</button>
<button type="submit" class="btn-primary">保存更改</button>
<button type="button" class="btn-outline" onclick="cancelEdit(<?= $package['id'] ?>)">取消</button>
</div>
</form>
</div>
+149 -5
View File
@@ -1110,20 +1110,164 @@ label {
/* 滚动条样式 */
::-webkit-scrollbar {
width: 6px;
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--el-bg-color-page);
background: #f1f1f1;
border-radius: 4px;
}
::-webkit-scrollbar-thumb {
background: var(--el-border-color);
border-radius: 3px;
background: #ccc;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--el-text-secondary);
background: #999;
}
/* 套餐管理页面样式 */
.package-card {
transition: all 0.3s ease;
margin-bottom: 20px;
}
.package-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}
.package-card.inactive {
opacity: 0.7;
}
.package-card.inactive .package-title {
text-decoration: line-through;
}
.package-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.package-title {
font-size: 1.2rem;
margin: 0;
color: #2c3e50;
}
.package-description {
color: #666;
margin-bottom: 15px;
line-height: 1.5;
}
.package-details {
margin-bottom: 15px;
}
.package-actions {
display: flex;
gap: 10px;
margin-top: 20px;
padding-top: 20px;
border-top: 1px solid #eee;
}
.package-services {
margin-top: 15px;
}
.services-tags {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-top: 8px;
}
.service-tag {
background: #f5f5f5;
color: #666;
padding: 4px 12px;
border-radius: 20px;
font-size: 0.85rem;
border: 1px solid #eee;
}
.empty-state {
text-align: center;
padding: 60px 20px;
color: #999;
}
.empty-icon {
font-size: 3rem;
margin-bottom: 15px;
}
.empty-message {
font-size: 1.2rem;
margin-bottom: 5px;
color: #666;
}
.empty-submessage {
font-size: 0.9rem;
}
/* 表单样式 */
.form-row {
display: flex;
gap: 20px;
margin-bottom: 15px;
}
.form-row .form-group {
flex: 1;
margin-bottom: 0;
}
.services-container {
margin-bottom: 15px;
}
.service-item {
display: flex;
gap: 10px;
margin-bottom: 10px;
}
.service-item input {
flex: 1;
}
/* 响应式设计 */
@media (max-width: 768px) {
.form-row {
flex-direction: column;
}
.packages-grid {
grid-template-columns: 1fr;
}
.package-actions {
flex-direction: column;
}
.package-actions button {
width: 100%;
}
}
.packages-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
gap: 20px;
}
/* 套餐管理页面样式 */