559 lines
18 KiB
HTML
559 lines
18 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>会员详情</title>
|
||
<style>
|
||
* {
|
||
margin: 0;
|
||
padding: 0;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
body {
|
||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||
background-color: #f5f5f5;
|
||
color: #333;
|
||
line-height: 1.4;
|
||
}
|
||
|
||
.container {
|
||
max-width: 100%;
|
||
margin: 0 auto;
|
||
background: white;
|
||
min-height: 100vh;
|
||
}
|
||
|
||
/* Header Section */
|
||
.header {
|
||
padding: 20px 16px;
|
||
background: white;
|
||
border-bottom: 1px solid #e5e5e5;
|
||
}
|
||
|
||
.member-info {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 12px 20px;
|
||
margin-bottom: 20px;
|
||
}
|
||
|
||
.info-item {
|
||
display: flex;
|
||
align-items: center;
|
||
font-size: 14px;
|
||
}
|
||
|
||
.info-label {
|
||
color: #666;
|
||
margin-right: 8px;
|
||
min-width: 60px;
|
||
}
|
||
|
||
.info-value {
|
||
color: #333;
|
||
font-weight: 500;
|
||
}
|
||
|
||
/* Stats Cards */
|
||
.stats-container {
|
||
display: flex;
|
||
justify-content: space-around;
|
||
margin-top: 20px;
|
||
padding: 16px;
|
||
background: #f8f9fa;
|
||
border-radius: 8px;
|
||
}
|
||
|
||
.stat-item {
|
||
text-align: center;
|
||
flex: 1;
|
||
}
|
||
|
||
.stat-number {
|
||
font-size: 24px;
|
||
font-weight: bold;
|
||
color: #333;
|
||
margin-bottom: 4px;
|
||
}
|
||
|
||
.stat-label {
|
||
font-size: 12px;
|
||
color: #666;
|
||
}
|
||
|
||
/* Tab Navigation */
|
||
.tab-nav {
|
||
display: flex;
|
||
background: white;
|
||
border-bottom: 1px solid #e5e5e5;
|
||
overflow-x: auto;
|
||
}
|
||
|
||
.tab-item {
|
||
flex: 1;
|
||
padding: 16px 12px;
|
||
text-align: center;
|
||
font-size: 14px;
|
||
color: #666;
|
||
border-bottom: 2px solid transparent;
|
||
cursor: pointer;
|
||
transition: all 0.3s;
|
||
white-space: nowrap;
|
||
min-width: 120px;
|
||
}
|
||
|
||
.tab-item.active {
|
||
color: #1890ff;
|
||
border-bottom-color: #1890ff;
|
||
font-weight: 500;
|
||
}
|
||
|
||
/* Content Area */
|
||
.content {
|
||
padding: 0 16px 20px;
|
||
}
|
||
|
||
.tab-content {
|
||
display: none;
|
||
}
|
||
|
||
.tab-content.active {
|
||
display: block;
|
||
}
|
||
|
||
/* Table Styles */
|
||
.table-container {
|
||
background: white;
|
||
border-radius: 8px;
|
||
overflow: hidden;
|
||
margin-top: 16px;
|
||
}
|
||
|
||
.table-header {
|
||
display: grid;
|
||
background: #f8f9fa;
|
||
padding: 12px 8px;
|
||
font-size: 12px;
|
||
color: #666;
|
||
font-weight: 500;
|
||
border-bottom: 1px solid #e5e5e5;
|
||
}
|
||
|
||
.table-row {
|
||
display: grid;
|
||
padding: 12px 8px;
|
||
border-bottom: 1px solid #f0f0f0;
|
||
font-size: 13px;
|
||
align-items: center;
|
||
}
|
||
|
||
.table-row:last-child {
|
||
border-bottom: none;
|
||
}
|
||
|
||
/* Coupon Table */
|
||
.coupon-header {
|
||
grid-template-columns: 1fr 60px 60px 80px 60px;
|
||
}
|
||
|
||
.coupon-row {
|
||
grid-template-columns: 1fr 60px 60px 80px 60px;
|
||
}
|
||
|
||
/* Growth Table */
|
||
.growth-header {
|
||
grid-template-columns: 1fr 80px 1fr 60px;
|
||
}
|
||
|
||
.growth-row {
|
||
grid-template-columns: 1fr 80px 1fr 60px;
|
||
}
|
||
|
||
/* Points Table */
|
||
.points-header {
|
||
grid-template-columns: 1fr 60px 80px 1fr 60px;
|
||
}
|
||
|
||
.points-row {
|
||
grid-template-columns: 1fr 60px 80px 1fr 60px;
|
||
}
|
||
|
||
.status-available {
|
||
color: #52c41a;
|
||
font-size: 12px;
|
||
}
|
||
|
||
.status-expired {
|
||
color: #ff4d4f;
|
||
font-size: 12px;
|
||
}
|
||
|
||
.status-used {
|
||
color: #999;
|
||
font-size: 12px;
|
||
}
|
||
|
||
.points-positive {
|
||
color: #52c41a;
|
||
}
|
||
|
||
.points-negative {
|
||
color: #ff4d4f;
|
||
}
|
||
|
||
.detail-link {
|
||
color: #1890ff;
|
||
text-decoration: none;
|
||
font-size: 12px;
|
||
}
|
||
|
||
/* Pagination */
|
||
.pagination {
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
padding: 20px;
|
||
gap: 12px;
|
||
}
|
||
|
||
.pagination button {
|
||
padding: 8px 12px;
|
||
border: 1px solid #d9d9d9;
|
||
background: white;
|
||
color: #666;
|
||
border-radius: 4px;
|
||
font-size: 12px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.pagination button:disabled {
|
||
opacity: 0.5;
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
.pagination .current-page {
|
||
color: #333;
|
||
font-weight: 500;
|
||
}
|
||
|
||
/* Mobile Optimizations */
|
||
@media (max-width: 480px) {
|
||
.member-info {
|
||
grid-template-columns: 1fr;
|
||
gap: 8px;
|
||
}
|
||
|
||
.stats-container {
|
||
padding: 12px;
|
||
}
|
||
|
||
.stat-number {
|
||
font-size: 20px;
|
||
}
|
||
|
||
.table-container {
|
||
font-size: 12px;
|
||
}
|
||
|
||
.table-header,
|
||
.table-row {
|
||
padding: 8px 4px;
|
||
}
|
||
|
||
/* Stack table cells vertically on very small screens */
|
||
.coupon-header,
|
||
.coupon-row {
|
||
grid-template-columns: 1fr;
|
||
gap: 4px;
|
||
}
|
||
|
||
.growth-header,
|
||
.growth-row {
|
||
grid-template-columns: 1fr;
|
||
gap: 4px;
|
||
}
|
||
|
||
.points-header,
|
||
.points-row {
|
||
grid-template-columns: 1fr;
|
||
gap: 4px;
|
||
}
|
||
|
||
.table-row {
|
||
padding: 12px 8px;
|
||
border-left: 3px solid #1890ff;
|
||
margin-bottom: 8px;
|
||
border-radius: 0 4px 4px 0;
|
||
}
|
||
}
|
||
|
||
/* Loading State */
|
||
.loading {
|
||
text-align: center;
|
||
padding: 40px;
|
||
color: #999;
|
||
}
|
||
|
||
/* Empty State */
|
||
.empty-state {
|
||
text-align: center;
|
||
padding: 40px;
|
||
color: #999;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container">
|
||
<!-- Header Section -->
|
||
<div class="header">
|
||
<div class="member-info">
|
||
<div class="info-item">
|
||
<span class="info-label">会员姓名:</span>
|
||
<span class="info-value">张三</span>
|
||
</div>
|
||
<div class="info-item">
|
||
<span class="info-label">系统编号:</span>
|
||
<span class="info-value">3</span>
|
||
</div>
|
||
<div class="info-item">
|
||
<span class="info-label">手机号:</span>
|
||
<span class="info-value">138****1234</span>
|
||
</div>
|
||
<div class="info-item">
|
||
<span class="info-label">生日:</span>
|
||
<span class="info-value">1990-05-15</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="stats-container">
|
||
<div class="stat-item">
|
||
<div class="stat-number">1250</div>
|
||
<div class="stat-label">会员成长值</div>
|
||
</div>
|
||
<div class="stat-item">
|
||
<div class="stat-number">890</div>
|
||
<div class="stat-label">会员积分</div>
|
||
</div>
|
||
<div class="stat-item">
|
||
<div class="stat-number">5</div>
|
||
<div class="stat-label">会员优惠券</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Tab Navigation -->
|
||
<div class="tab-nav">
|
||
<div class="tab-item" onclick="switchTab('growth')">会员成长值明细</div>
|
||
<div class="tab-item" onclick="switchTab('points')">会员积分明细</div>
|
||
<div class="tab-item active" onclick="switchTab('coupons')">会员优惠券</div>
|
||
</div>
|
||
|
||
<!-- Content Area -->
|
||
<div class="content">
|
||
<!-- Coupons Tab -->
|
||
<div id="coupons" class="tab-content active">
|
||
<div class="table-container">
|
||
<div class="table-header coupon-header">
|
||
<div>优惠券名称</div>
|
||
<div>类型</div>
|
||
<div>面额</div>
|
||
<div>使用条件</div>
|
||
<div>状态</div>
|
||
</div>
|
||
<div class="table-row coupon-row">
|
||
<div>
|
||
<div style="font-weight: 500;">新用户专享券</div>
|
||
<div style="font-size: 11px; color: #999; margin-top: 2px;">获得时间: 2024-01-01 10:00:00</div>
|
||
<div style="font-size: 11px; color: #999;">有效期: 2024-02-01</div>
|
||
</div>
|
||
<div>满减券</div>
|
||
<div>¥20</div>
|
||
<div>满100元可用</div>
|
||
<div class="status-available">可使用</div>
|
||
</div>
|
||
<div class="table-row coupon-row">
|
||
<div>
|
||
<div style="font-weight: 500;">生日特惠券</div>
|
||
<div style="font-size: 11px; color: #999; margin-top: 2px;">获得时间: 2024-01-05 12:30:15</div>
|
||
<div style="font-size: 11px; color: #999;">有效期: 2024-02-05</div>
|
||
</div>
|
||
<div>折扣券</div>
|
||
<div>9折</div>
|
||
<div>全品类可用</div>
|
||
<div class="status-available">可使用</div>
|
||
</div>
|
||
<div class="table-row coupon-row">
|
||
<div>
|
||
<div style="font-weight: 500;">积分兑换券</div>
|
||
<div style="font-size: 11px; color: #999; margin-top: 2px;">获得时间: 2024-01-10 16:20:30</div>
|
||
<div style="font-size: 11px; color: #999;">有效期: 2024-03-10</div>
|
||
</div>
|
||
<div>满减券</div>
|
||
<div>¥50</div>
|
||
<div>满300元可用</div>
|
||
<div class="status-available">可使用</div>
|
||
</div>
|
||
<div class="table-row coupon-row">
|
||
<div>
|
||
<div style="font-weight: 500;">限时抢购券</div>
|
||
<div style="font-size: 11px; color: #999; margin-top: 2px;">获得时间: 2023-12-20 14:15:20</div>
|
||
<div style="font-size: 11px; color: #999;">有效期: 2024-01-20</div>
|
||
</div>
|
||
<div>满减券</div>
|
||
<div>¥10</div>
|
||
<div>满50元可用</div>
|
||
<div class="status-expired">已过期</div>
|
||
</div>
|
||
<div class="table-row coupon-row">
|
||
<div>
|
||
<div style="font-weight: 500;">会员专属券</div>
|
||
<div style="font-size: 11px; color: #999; margin-top: 2px;">获得时间: 2023-12-15 09:45:10</div>
|
||
<div style="font-size: 11px; color: #999;">有效期: 2024-01-15</div>
|
||
</div>
|
||
<div>满减券</div>
|
||
<div>¥30</div>
|
||
<div>满200元可用</div>
|
||
<div class="status-used">已使用</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Growth Tab -->
|
||
<div id="growth" class="tab-content">
|
||
<div class="table-container">
|
||
<div class="table-header growth-header">
|
||
<div>变化时间</div>
|
||
<div>成长值变动</div>
|
||
<div>关联订单</div>
|
||
<div>详情</div>
|
||
</div>
|
||
<div class="table-row growth-row">
|
||
<div>2024-01-15 14:30:25</div>
|
||
<div class="points-positive">+50</div>
|
||
<div>ORDER202401501</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
<div class="table-row growth-row">
|
||
<div>2024-01-10 09:15:10</div>
|
||
<div class="points-positive">+100</div>
|
||
<div>ORDER202401002</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
<div class="table-row growth-row">
|
||
<div>2024-01-05 16:45:33</div>
|
||
<div class="points-positive">+30</div>
|
||
<div>ORDER202401503</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
<div class="table-row growth-row">
|
||
<div>2024-01-02 11:20:15</div>
|
||
<div class="points-positive">+20</div>
|
||
<div>ORDER202401204</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
<div class="table-row growth-row">
|
||
<div>2023-12-28 13:55:40</div>
|
||
<div class="points-positive">+75</div>
|
||
<div>ORDER202312805</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Points Tab -->
|
||
<div id="points" class="tab-content">
|
||
<div class="table-container">
|
||
<div class="table-header points-header">
|
||
<div>变化时间</div>
|
||
<div>积分变动</div>
|
||
<div>变动类型</div>
|
||
<div>关联订单</div>
|
||
<div>详情</div>
|
||
</div>
|
||
<div class="table-row points-row">
|
||
<div>2024-01-15 14:30:25</div>
|
||
<div class="points-positive">+100</div>
|
||
<div>购物获得</div>
|
||
<div>ORDER202401501</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
<div class="table-row points-row">
|
||
<div>2024-01-12 10:20:15</div>
|
||
<div class="points-negative">-50</div>
|
||
<div>积分抵扣</div>
|
||
<div>ORDER202401202</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
<div class="table-row points-row">
|
||
<div>2024-01-10 09:15:10</div>
|
||
<div class="points-positive">+200</div>
|
||
<div>购物获得</div>
|
||
<div>ORDER202401002</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
<div class="table-row points-row">
|
||
<div>2024-01-08 15:45:30</div>
|
||
<div class="points-positive">+10</div>
|
||
<div>签到奖励</div>
|
||
<div>-</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
<div class="table-row points-row">
|
||
<div>2024-01-05 16:45:33</div>
|
||
<div class="points-positive">+60</div>
|
||
<div>购物获得</div>
|
||
<div>ORDER202401503</div>
|
||
<div><a href="#" class="detail-link">查看详情</a></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Pagination -->
|
||
<div class="pagination">
|
||
<button disabled>上一页</button>
|
||
<span class="current-page">第1页,共1页</span>
|
||
<button disabled>下一页</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
function switchTab(tabName) {
|
||
// Remove active class from all tabs and content
|
||
document.querySelectorAll('.tab-item').forEach(tab => {
|
||
tab.classList.remove('active');
|
||
});
|
||
document.querySelectorAll('.tab-content').forEach(content => {
|
||
content.classList.remove('active');
|
||
});
|
||
|
||
// Add active class to clicked tab and corresponding content
|
||
event.target.classList.add('active');
|
||
document.getElementById(tabName).classList.add('active');
|
||
}
|
||
|
||
// Add touch feedback for better mobile experience
|
||
document.querySelectorAll('.tab-item, .detail-link').forEach(element => {
|
||
element.addEventListener('touchstart', function() {
|
||
this.style.opacity = '0.7';
|
||
});
|
||
|
||
element.addEventListener('touchend', function() {
|
||
this.style.opacity = '1';
|
||
});
|
||
});
|
||
|
||
// Prevent zoom on double tap for better mobile experience
|
||
let lastTouchEnd = 0;
|
||
document.addEventListener('touchend', function (event) {
|
||
const now = (new Date()).getTime();
|
||
if (now - lastTouchEnd <= 300) {
|
||
event.preventDefault();
|
||
}
|
||
lastTouchEnd = now;
|
||
}, false);
|
||
</script>
|
||
</body>
|
||
</html> |