会员详情
This commit is contained in:
		
							parent
							
								
									01b43945f4
								
							
						
					
					
						commit
						a13bd3f55e
					
				|  | @ -0,0 +1,339 @@ | ||||||
|  | /* 会员详情页面样式 */ | ||||||
|  | 
 | ||||||
|  | .detail-header { | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     justify-content: space-between; | ||||||
|  |     margin-bottom: 24px; | ||||||
|  |     padding-bottom: 16px; | ||||||
|  |     border-bottom: 1px solid #e5e7eb; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .close-btn { | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     gap: 8px; | ||||||
|  |     padding: 8px 16px; | ||||||
|  |     background: #f3f4f6; | ||||||
|  |     border: 1px solid #d1d5db; | ||||||
|  |     border-radius: 6px; | ||||||
|  |     color: #374151; | ||||||
|  |     text-decoration: none; | ||||||
|  |     font-size: 14px; | ||||||
|  |     cursor: pointer; | ||||||
|  |     transition: all 0.2s ease; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .close-btn:hover { | ||||||
|  |     background: #e5e7eb; | ||||||
|  |     border-color: #9ca3af; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .detail-header h2 { | ||||||
|  |     margin: 0; | ||||||
|  |     color: #1f2937; | ||||||
|  |     font-size: 20px; | ||||||
|  |     font-weight: 600; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 会员信息卡片 */ | ||||||
|  | .member-info-card { | ||||||
|  |     background: white; | ||||||
|  |     border: 1px solid #e5e7eb; | ||||||
|  |     border-radius: 8px; | ||||||
|  |     margin-bottom: 24px; | ||||||
|  |     overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-info-header { | ||||||
|  |     padding: 16px 20px; | ||||||
|  |     background: #f9fafb; | ||||||
|  |     border-bottom: 1px solid #e5e7eb; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-info-header h3 { | ||||||
|  |     margin: 0; | ||||||
|  |     color: #1f2937; | ||||||
|  |     font-size: 16px; | ||||||
|  |     font-weight: 600; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-info-content { | ||||||
|  |     padding: 20px; | ||||||
|  |     display: flex; | ||||||
|  |     justify-content: space-between; | ||||||
|  |     align-items: flex-start; | ||||||
|  |     gap: 40px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-basic { | ||||||
|  |     flex: 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-avatar-section { | ||||||
|  |     display: flex; | ||||||
|  |     align-items: flex-start; | ||||||
|  |     gap: 16px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .large-avatar { | ||||||
|  |     width: 80px; | ||||||
|  |     height: 80px; | ||||||
|  |     font-size: 32px; | ||||||
|  |     font-weight: 600; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-basic-info { | ||||||
|  |     flex: 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-name { | ||||||
|  |     font-size: 18px; | ||||||
|  |     font-weight: 600; | ||||||
|  |     color: #1f2937; | ||||||
|  |     margin-bottom: 8px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-id, | ||||||
|  | .member-phone, | ||||||
|  | .member-birth { | ||||||
|  |     font-size: 14px; | ||||||
|  |     color: #6b7280; | ||||||
|  |     margin-bottom: 6px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-assets { | ||||||
|  |     display: flex; | ||||||
|  |     gap: 24px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .asset-item { | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     gap: 12px; | ||||||
|  |     padding: 16px; | ||||||
|  |     background: #f8fafc; | ||||||
|  |     border-radius: 8px; | ||||||
|  |     min-width: 140px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .asset-icon { | ||||||
|  |     width: 32px; | ||||||
|  |     height: 32px; | ||||||
|  |     border-radius: 50%; | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     justify-content: center; | ||||||
|  |     position: relative; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .growth-icon { | ||||||
|  |     background: #dbeafe; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .growth-icon::before { | ||||||
|  |     content: '📈'; | ||||||
|  |     font-size: 16px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .points-icon { | ||||||
|  |     background: #dcfce7; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .points-icon::before { | ||||||
|  |     content: '💰'; | ||||||
|  |     font-size: 16px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .coupon-icon { | ||||||
|  |     background: #fef3c7; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .coupon-icon::before { | ||||||
|  |     content: '🎫'; | ||||||
|  |     font-size: 16px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .asset-info { | ||||||
|  |     flex: 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .asset-label { | ||||||
|  |     font-size: 12px; | ||||||
|  |     color: #6b7280; | ||||||
|  |     margin-bottom: 4px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .asset-value { | ||||||
|  |     font-size: 18px; | ||||||
|  |     font-weight: 600; | ||||||
|  |     color: #1f2937; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 详情标签页 */ | ||||||
|  | .detail-tabs { | ||||||
|  |     background: white; | ||||||
|  |     border: 1px solid #e5e7eb; | ||||||
|  |     border-radius: 8px; | ||||||
|  |     overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .tab-headers { | ||||||
|  |     display: flex; | ||||||
|  |     background: #f9fafb; | ||||||
|  |     border-bottom: 1px solid #e5e7eb; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .tab-header { | ||||||
|  |     flex: 1; | ||||||
|  |     padding: 16px 20px; | ||||||
|  |     background: none; | ||||||
|  |     border: none; | ||||||
|  |     color: #6b7280; | ||||||
|  |     font-size: 14px; | ||||||
|  |     font-weight: 500; | ||||||
|  |     cursor: pointer; | ||||||
|  |     transition: all 0.2s ease; | ||||||
|  |     position: relative; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .tab-header.active { | ||||||
|  |     color: #2563eb; | ||||||
|  |     background: white; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .tab-header.active::after { | ||||||
|  |     content: ''; | ||||||
|  |     position: absolute; | ||||||
|  |     bottom: 0; | ||||||
|  |     left: 0; | ||||||
|  |     right: 0; | ||||||
|  |     height: 2px; | ||||||
|  |     background: #2563eb; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .tab-header:hover:not(.active) { | ||||||
|  |     color: #374151; | ||||||
|  |     background: #f3f4f6; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .tab-content { | ||||||
|  |     display: none; | ||||||
|  |     padding: 20px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .tab-content.active { | ||||||
|  |     display: block; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 详情表格 */ | ||||||
|  | .detail-table { | ||||||
|  |     width: 100%; | ||||||
|  |     border-collapse: collapse; | ||||||
|  |     margin-bottom: 16px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .detail-table th { | ||||||
|  |     background: #f9fafb; | ||||||
|  |     padding: 12px 16px; | ||||||
|  |     text-align: left; | ||||||
|  |     font-size: 14px; | ||||||
|  |     font-weight: 600; | ||||||
|  |     color: #374151; | ||||||
|  |     border-bottom: 1px solid #e5e7eb; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .detail-table td { | ||||||
|  |     padding: 12px 16px; | ||||||
|  |     font-size: 14px; | ||||||
|  |     color: #6b7280; | ||||||
|  |     border-bottom: 1px solid #f3f4f6; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .detail-table tr:hover { | ||||||
|  |     background: #f9fafb; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .positive { | ||||||
|  |     color: #059669; | ||||||
|  |     font-weight: 600; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .negative { | ||||||
|  |     color: #dc2626; | ||||||
|  |     font-weight: 600; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .detail-link { | ||||||
|  |     color: #2563eb; | ||||||
|  |     text-decoration: none; | ||||||
|  |     font-size: 13px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .detail-link:hover { | ||||||
|  |     text-decoration: underline; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 表格底部 */ | ||||||
|  | .table-footer { | ||||||
|  |     display: flex; | ||||||
|  |     justify-content: space-between; | ||||||
|  |     align-items: center; | ||||||
|  |     padding: 16px 0; | ||||||
|  |     font-size: 14px; | ||||||
|  |     color: #6b7280; | ||||||
|  |     border-top: 1px solid #f3f4f6; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .table-pagination { | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     gap: 16px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .table-pagination span { | ||||||
|  |     cursor: pointer; | ||||||
|  |     padding: 4px 8px; | ||||||
|  |     border-radius: 4px; | ||||||
|  |     transition: background 0.2s ease; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .table-pagination span:hover { | ||||||
|  |     background: #f3f4f6; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 响应式设计 */ | ||||||
|  | @media (max-width: 768px) { | ||||||
|  |     .member-info-content { | ||||||
|  |         flex-direction: column; | ||||||
|  |         gap: 20px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .member-assets { | ||||||
|  |         flex-direction: column; | ||||||
|  |         gap: 12px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .asset-item { | ||||||
|  |         min-width: auto; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .tab-headers { | ||||||
|  |         flex-direction: column; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .detail-table { | ||||||
|  |         font-size: 12px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .detail-table th, | ||||||
|  |     .detail-table td { | ||||||
|  |         padding: 8px 12px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .table-footer { | ||||||
|  |         flex-direction: column; | ||||||
|  |         gap: 12px; | ||||||
|  |         align-items: flex-start; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,380 @@ | ||||||
|  | /* 会员查看页面专用样式 */ | ||||||
|  | 
 | ||||||
|  | /* 筛选区域样式 */ | ||||||
|  | .filter-section { | ||||||
|  |     background: #fff; | ||||||
|  |     padding: 20px; | ||||||
|  |     margin-bottom: 20px; | ||||||
|  |     border-radius: 8px; | ||||||
|  |     box-shadow: 0 2px 4px rgba(0,0,0,0.1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filter-row { | ||||||
|  |     display: flex; | ||||||
|  |     gap: 20px; | ||||||
|  |     flex-wrap: wrap; | ||||||
|  |     align-items: end; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filter-item { | ||||||
|  |     display: flex; | ||||||
|  |     flex-direction: column; | ||||||
|  |     min-width: 150px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filter-item label { | ||||||
|  |     color: #666; | ||||||
|  |     font-size: 14px; | ||||||
|  |     margin-bottom: 5px; | ||||||
|  |     font-weight: normal; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filter-item select, | ||||||
|  | .filter-item input { | ||||||
|  |     padding: 8px 12px; | ||||||
|  |     border: 1px solid #ddd; | ||||||
|  |     border-radius: 4px; | ||||||
|  |     font-size: 14px; | ||||||
|  |     min-height: 36px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filter-item input::placeholder { | ||||||
|  |     color: #999; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filter-actions { | ||||||
|  |     margin-top: 15px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filter-actions .btn { | ||||||
|  |     background: #10b981; | ||||||
|  |     color: white; | ||||||
|  |     border: none; | ||||||
|  |     padding: 8px 20px; | ||||||
|  |     border-radius: 4px; | ||||||
|  |     cursor: pointer; | ||||||
|  |     font-size: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .filter-actions .btn:hover { | ||||||
|  |     background: #059669; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 统计信息样式 */ | ||||||
|  | .stats-section { | ||||||
|  |     display: flex; | ||||||
|  |     gap: 20px; | ||||||
|  |     margin-bottom: 20px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stats-item { | ||||||
|  |     background: #fff; | ||||||
|  |     padding: 20px; | ||||||
|  |     border-radius: 8px; | ||||||
|  |     box-shadow: 0 2px 4px rgba(0,0,0,0.1); | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     gap: 15px; | ||||||
|  |     min-width: 200px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stats-icon { | ||||||
|  |     width: 40px; | ||||||
|  |     height: 40px; | ||||||
|  |     border-radius: 50%; | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     justify-content: center; | ||||||
|  |     position: relative; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-icon { | ||||||
|  |     background: rgba(59, 130, 246, 0.1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-icon::before { | ||||||
|  |     content: "👥"; | ||||||
|  |     font-size: 20px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .new-member-icon { | ||||||
|  |     background: rgba(16, 185, 129, 0.1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .new-member-icon::before { | ||||||
|  |     content: "✨"; | ||||||
|  |     font-size: 18px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stats-content { | ||||||
|  |     flex: 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stats-label { | ||||||
|  |     color: #666; | ||||||
|  |     font-size: 14px; | ||||||
|  |     margin-bottom: 4px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .stats-value { | ||||||
|  |     color: #333; | ||||||
|  |     font-size: 24px; | ||||||
|  |     font-weight: bold; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 表格容器样式 */ | ||||||
|  | .table-container { | ||||||
|  |     background: #fff; | ||||||
|  |     border-radius: 8px; | ||||||
|  |     box-shadow: 0 2px 4px rgba(0,0,0,0.1); | ||||||
|  |     overflow: hidden; | ||||||
|  |     margin-bottom: 20px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 会员表格样式 */ | ||||||
|  | .member-table { | ||||||
|  |     width: 100%; | ||||||
|  |     border-collapse: collapse; | ||||||
|  |     font-size: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-table thead { | ||||||
|  |     background: #f8fafc; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-table th { | ||||||
|  |     padding: 12px 16px; | ||||||
|  |     text-align: left; | ||||||
|  |     font-weight: 500; | ||||||
|  |     color: #374151; | ||||||
|  |     border-bottom: 1px solid #e5e7eb; | ||||||
|  |     position: relative; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-table th:first-child { | ||||||
|  |     width: 40px; | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-table td { | ||||||
|  |     padding: 12px 16px; | ||||||
|  |     border-bottom: 1px solid #f3f4f6; | ||||||
|  |     vertical-align: middle; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-table td:first-child { | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .member-table tbody tr:hover { | ||||||
|  |     background-color: #f9fafb; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 排序图标样式 */ | ||||||
|  | .sort-icon { | ||||||
|  |     color: #9ca3af; | ||||||
|  |     margin-left: 4px; | ||||||
|  |     cursor: pointer; | ||||||
|  |     user-select: none; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .sort-icon:hover { | ||||||
|  |     color: #374151; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 头像样式 */ | ||||||
|  | .avatar { | ||||||
|  |     width: 32px; | ||||||
|  |     height: 32px; | ||||||
|  |     border-radius: 50%; | ||||||
|  |     display: inline-flex; | ||||||
|  |     align-items: center; | ||||||
|  |     justify-content: center; | ||||||
|  |     color: white; | ||||||
|  |     font-weight: 500; | ||||||
|  |     font-size: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .green-avatar { | ||||||
|  |     background: #10b981; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .orange-avatar { | ||||||
|  |     background: #f59e0b; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .red-avatar { | ||||||
|  |     background: #ef4444; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .purple-avatar { | ||||||
|  |     background: #8b5cf6; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .pink-avatar { | ||||||
|  |     background: #ec4899; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .blue-avatar { | ||||||
|  |     background: #3b82f6; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 等级徽章样式 */ | ||||||
|  | .level-badge { | ||||||
|  |     padding: 4px 8px; | ||||||
|  |     border-radius: 12px; | ||||||
|  |     font-size: 12px; | ||||||
|  |     font-weight: 500; | ||||||
|  |     text-align: center; | ||||||
|  |     min-width: 36px; | ||||||
|  |     display: inline-block; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .level-badge.lv1 { | ||||||
|  |     background: #fef3c7; | ||||||
|  |     color: #92400e; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .level-badge.lv2 { | ||||||
|  |     background: #ddd6fe; | ||||||
|  |     color: #6b21a8; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .level-badge.lv3 { | ||||||
|  |     background: #fecaca; | ||||||
|  |     color: #991b1b; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .level-badge.lv4 { | ||||||
|  |     background: #a7f3d0; | ||||||
|  |     color: #065f46; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 详情链接样式 */ | ||||||
|  | .detail-link { | ||||||
|  |     color: #10b981; | ||||||
|  |     text-decoration: none; | ||||||
|  |     font-size: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .detail-link:hover { | ||||||
|  |     color: #059669; | ||||||
|  |     text-decoration: underline; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 分页样式 */ | ||||||
|  | .pagination-section { | ||||||
|  |     background: #fff; | ||||||
|  |     padding: 15px 20px; | ||||||
|  |     border-radius: 8px; | ||||||
|  |     box-shadow: 0 2px 4px rgba(0,0,0,0.1); | ||||||
|  |     display: flex; | ||||||
|  |     justify-content: space-between; | ||||||
|  |     align-items: center; | ||||||
|  |     flex-wrap: wrap; | ||||||
|  |     gap: 15px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .pagination-info { | ||||||
|  |     color: #666; | ||||||
|  |     font-size: 14px; | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     gap: 8px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .pagination-info select { | ||||||
|  |     padding: 4px 8px; | ||||||
|  |     border: 1px solid #ddd; | ||||||
|  |     border-radius: 4px; | ||||||
|  |     font-size: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .pagination-controls { | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     gap: 12px; | ||||||
|  |     color: #666; | ||||||
|  |     font-size: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .pagination-controls span { | ||||||
|  |     cursor: pointer; | ||||||
|  |     padding: 4px 8px; | ||||||
|  |     border-radius: 4px; | ||||||
|  |     transition: background-color 0.2s; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .pagination-controls span:hover { | ||||||
|  |     background: #f3f4f6; | ||||||
|  |     color: #374151; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .pagination-controls input { | ||||||
|  |     width: 50px; | ||||||
|  |     padding: 4px 8px; | ||||||
|  |     border: 1px solid #ddd; | ||||||
|  |     border-radius: 4px; | ||||||
|  |     text-align: center; | ||||||
|  |     font-size: 14px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 复选框样式优化 */ | ||||||
|  | input[type="checkbox"] { | ||||||
|  |     width: 16px; | ||||||
|  |     height: 16px; | ||||||
|  |     cursor: pointer; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 响应式设计 */ | ||||||
|  | @media (max-width: 1200px) { | ||||||
|  |     .filter-row { | ||||||
|  |         gap: 15px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .filter-item { | ||||||
|  |         min-width: 120px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .stats-section { | ||||||
|  |         flex-wrap: wrap; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .stats-item { | ||||||
|  |         min-width: 180px; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @media (max-width: 768px) { | ||||||
|  |     .filter-row { | ||||||
|  |         flex-direction: column; | ||||||
|  |         gap: 15px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .filter-item { | ||||||
|  |         min-width: auto; | ||||||
|  |         width: 100%; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .stats-section { | ||||||
|  |         flex-direction: column; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .stats-item { | ||||||
|  |         min-width: auto; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .member-table { | ||||||
|  |         font-size: 12px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .member-table th, | ||||||
|  |     .member-table td { | ||||||
|  |         padding: 8px 12px; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     .pagination-section { | ||||||
|  |         flex-direction: column; | ||||||
|  |         text-align: center; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,324 @@ | ||||||
|  | /** | ||||||
|  |  * 会员详情页面功能 | ||||||
|  |  * 包含会员信息展示、成长值明细、积分明细等功能 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | // 当前会员数据
 | ||||||
|  | let currentMemberData = null; | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 初始化会员详情页面 | ||||||
|  |  */ | ||||||
|  | function initMemberDetail() { | ||||||
|  |     console.log('会员详情页面已初始化'); | ||||||
|  |     loadMemberDetailCSS(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 加载会员详情页面专用CSS | ||||||
|  |  */ | ||||||
|  | function loadMemberDetailCSS() { | ||||||
|  |     if (!document.getElementById('memberDetailCSS')) { | ||||||
|  |         const link = document.createElement('link'); | ||||||
|  |         link.id = 'memberDetailCSS'; | ||||||
|  |         link.rel = 'stylesheet'; | ||||||
|  |         link.href = 'css/member-detail.css'; | ||||||
|  |         document.head.appendChild(link); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 查看会员详情 - 从会员列表页面调用 | ||||||
|  |  * @param {string} memberId - 会员ID   | ||||||
|  |  */ | ||||||
|  | function viewMemberDetail_Detail(memberId) { | ||||||
|  |     console.log('打开会员详情页面:', memberId); | ||||||
|  |      | ||||||
|  |     // 获取会员数据
 | ||||||
|  |     const memberData = getMemberData(memberId); | ||||||
|  |     if (!memberData) { | ||||||
|  |         alert('会员信息不存在'); | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     currentMemberData = memberData; | ||||||
|  |      | ||||||
|  |     // 使用系统的openTab功能打开新标签页
 | ||||||
|  |     const tabTitle = `会员详情-${memberData.nickname}`; | ||||||
|  |      | ||||||
|  |     // 检查是否已经打开了该会员的详情页
 | ||||||
|  |     const existingTab = Array.from(document.querySelectorAll('.tab')).find(tab =>  | ||||||
|  |         tab.querySelector('span').textContent === tabTitle | ||||||
|  |     ); | ||||||
|  |      | ||||||
|  |     if (existingTab) { | ||||||
|  |         // 如果已存在,直接激活该标签页
 | ||||||
|  |         window.switchTab(existingTab.id); | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     // 创建自定义的会员详情标签页
 | ||||||
|  |     createMemberDetailTab(tabTitle, memberData); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 创建会员详情标签页 | ||||||
|  |  * @param {string} tabTitle - 标签页标题 | ||||||
|  |  * @param {Object} memberData - 会员数据 | ||||||
|  |  */ | ||||||
|  | async function createMemberDetailTab(tabTitle, memberData) { | ||||||
|  |     try { | ||||||
|  |         // 使用全局的tab计数器
 | ||||||
|  |         window.tabCounter++; | ||||||
|  |         const tabId = `tab-${window.tabCounter}`; | ||||||
|  |         const contentId = `content-${window.tabCounter}`; | ||||||
|  |          | ||||||
|  |         // 创建新的tab
 | ||||||
|  |         const tabBar = document.querySelector('.tab-bar'); | ||||||
|  |         const newTab = document.createElement('div'); | ||||||
|  |         newTab.className = 'tab'; | ||||||
|  |         newTab.id = tabId; | ||||||
|  |         newTab.innerHTML = ` | ||||||
|  |             <span>${tabTitle}</span> | ||||||
|  |             <button class="close-btn" onclick="closeTab('${tabId}')" aria-label="关闭">×</button> | ||||||
|  |         `;
 | ||||||
|  |          | ||||||
|  |         // 添加点击事件
 | ||||||
|  |         newTab.addEventListener('click', function(e) { | ||||||
|  |             if (!e.target.classList.contains('close-btn')) { | ||||||
|  |                 window.switchTab(tabId); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |          | ||||||
|  |         tabBar.appendChild(newTab); | ||||||
|  |          | ||||||
|  |         // 创建对应的内容区域
 | ||||||
|  |         const contentArea = document.querySelector('.content-area'); | ||||||
|  |         const newContent = document.createElement('div'); | ||||||
|  |         newContent.className = 'tab-content'; | ||||||
|  |         newContent.id = contentId; | ||||||
|  |          | ||||||
|  |         // 先加载CSS样式
 | ||||||
|  |         loadMemberDetailCSS(); | ||||||
|  |          | ||||||
|  |         // 加载HTML内容
 | ||||||
|  |         const response = await fetch('pages/member-detail.html'); | ||||||
|  |         const htmlContent = await response.text(); | ||||||
|  |         newContent.innerHTML = htmlContent; | ||||||
|  |          | ||||||
|  |         contentArea.appendChild(newContent); | ||||||
|  |          | ||||||
|  |         // 更新页面内容为具体会员数据
 | ||||||
|  |         updateMemberDetailContent(newContent, memberData); | ||||||
|  |          | ||||||
|  |         // 初始化标签页功能
 | ||||||
|  |         initDetailTabs(newContent); | ||||||
|  |          | ||||||
|  |         // 激活新创建的tab
 | ||||||
|  |         window.switchTab(tabId); | ||||||
|  |          | ||||||
|  |     } catch (error) { | ||||||
|  |         console.error('创建会员详情标签页失败:', error); | ||||||
|  |         alert('打开会员详情失败,请重试'); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 更新会员详情页面内容 | ||||||
|  |  * @param {HTMLElement} container - 页面容器 | ||||||
|  |  * @param {Object} memberData - 会员数据 | ||||||
|  |  */ | ||||||
|  | function updateMemberDetailContent(container, memberData) { | ||||||
|  |     // 更新标题
 | ||||||
|  |     const title = container.querySelector('.detail-header h2'); | ||||||
|  |     if (title) { | ||||||
|  |         title.textContent = `会员详情-${memberData.nickname}`; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     // 更新头像
 | ||||||
|  |     const avatar = container.querySelector('.avatar'); | ||||||
|  |     if (avatar) { | ||||||
|  |         avatar.textContent = memberData.nickname.charAt(0); | ||||||
|  |         avatar.className = `avatar large-avatar ${memberData.avatarClass}`; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     // 更新基本信息
 | ||||||
|  |     const nameEl = container.querySelector('.member-name'); | ||||||
|  |     if (nameEl) nameEl.textContent = memberData.nickname; | ||||||
|  |      | ||||||
|  |     const idEl = container.querySelector('.member-id'); | ||||||
|  |     if (idEl) idEl.textContent = `会员系统编号:${memberData.systemId}`; | ||||||
|  |      | ||||||
|  |     const phoneEl = container.querySelector('.member-phone'); | ||||||
|  |     if (phoneEl) phoneEl.textContent = `会员手机号:${memberData.phone}`; | ||||||
|  |      | ||||||
|  |     const birthEl = container.querySelector('.member-birth'); | ||||||
|  |     if (birthEl) birthEl.textContent = `会员生日:${memberData.birthday}`; | ||||||
|  |      | ||||||
|  |     // 更新资产信息
 | ||||||
|  |     const growthValue = container.querySelector('.asset-item:nth-child(1) .asset-value'); | ||||||
|  |     if (growthValue) growthValue.textContent = memberData.growthValue; | ||||||
|  |      | ||||||
|  |     const pointsValue = container.querySelector('.asset-item:nth-child(2) .asset-value'); | ||||||
|  |     if (pointsValue) pointsValue.textContent = memberData.points; | ||||||
|  |      | ||||||
|  |     const couponsValue = container.querySelector('.asset-item:nth-child(3) .asset-value'); | ||||||
|  |     if (couponsValue) couponsValue.textContent = memberData.coupons; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 初始化详情标签页功能 | ||||||
|  |  * @param {HTMLElement} container - 页面容器 | ||||||
|  |  */ | ||||||
|  | function initDetailTabs(container) { | ||||||
|  |     // 确保成长值明细标签页默认激活
 | ||||||
|  |     const growthTab = container.querySelector('#growthTab'); | ||||||
|  |     const pointsTab = container.querySelector('#pointsTab'); | ||||||
|  |     const growthHeader = container.querySelector('.tab-header:first-child'); | ||||||
|  |     const pointsHeader = container.querySelector('.tab-header:last-child'); | ||||||
|  |      | ||||||
|  |     if (growthTab && pointsTab && growthHeader && pointsHeader) { | ||||||
|  |         growthTab.classList.add('active'); | ||||||
|  |         pointsTab.classList.remove('active'); | ||||||
|  |         growthHeader.classList.add('active'); | ||||||
|  |         pointsHeader.classList.remove('active'); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 切换详情标签页 | ||||||
|  |  * @param {Event} event - 点击事件 | ||||||
|  |  * @param {string} tabName - 标签页名称 | ||||||
|  |  */ | ||||||
|  | function switchDetailTab(event, tabName) { | ||||||
|  |     const container = event.target.closest('.page-content'); | ||||||
|  |     if (!container) return; | ||||||
|  |      | ||||||
|  |     // 移除所有激活状态
 | ||||||
|  |     const allHeaders = container.querySelectorAll('.tab-header'); | ||||||
|  |     const allContents = container.querySelectorAll('.tab-content'); | ||||||
|  |      | ||||||
|  |     allHeaders.forEach(header => header.classList.remove('active')); | ||||||
|  |     allContents.forEach(content => content.classList.remove('active')); | ||||||
|  |      | ||||||
|  |     // 激活当前标签页
 | ||||||
|  |     event.target.classList.add('active'); | ||||||
|  |      | ||||||
|  |     const targetTab = container.querySelector(`#${tabName}Tab`); | ||||||
|  |     if (targetTab) { | ||||||
|  |         targetTab.classList.add('active'); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 关闭会员详情标签页 | ||||||
|  |  */ | ||||||
|  | function closeMemberDetailTab() { | ||||||
|  |     // 获取当前活动的标签页
 | ||||||
|  |     const activeTab = document.querySelector('.tab-item.active'); | ||||||
|  |     if (activeTab) { | ||||||
|  |         const tabId = activeTab.getAttribute('data-tab'); | ||||||
|  |         closeTab(tabId); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * 获取会员数据 - 模拟数据 | ||||||
|  |  * @param {string} memberId - 会员ID | ||||||
|  |  * @returns {Object|null} 会员数据 | ||||||
|  |  */ | ||||||
|  | function getMemberData(memberId) { | ||||||
|  |     const mockMembers = { | ||||||
|  |         'M001': { | ||||||
|  |             id: 'M001', | ||||||
|  |             nickname: '张三', | ||||||
|  |             systemId: '二', | ||||||
|  |             phone: '138****1234', | ||||||
|  |             birthday: '1990-05-15', | ||||||
|  |             avatarClass: 'green-avatar', | ||||||
|  |             growthValue: 1250, | ||||||
|  |             points: 890, | ||||||
|  |             coupons: 5, | ||||||
|  |             level: 'LV2', | ||||||
|  |             store: '时尚服装店', | ||||||
|  |             registerTime: '2024-01-15 14:30:25' | ||||||
|  |         }, | ||||||
|  |         'M002': { | ||||||
|  |             id: 'M002', | ||||||
|  |             nickname: '李四', | ||||||
|  |             systemId: '三', | ||||||
|  |             phone: '139****5678', | ||||||
|  |             birthday: '1985-08-20', | ||||||
|  |             avatarClass: 'orange-avatar', | ||||||
|  |             growthValue: 800, | ||||||
|  |             points: 650, | ||||||
|  |             coupons: 3, | ||||||
|  |             level: 'LV1', | ||||||
|  |             store: '数码电子城', | ||||||
|  |             registerTime: '2024-02-20 09:15:30' | ||||||
|  |         }, | ||||||
|  |         'M003': { | ||||||
|  |             id: 'M003', | ||||||
|  |             nickname: '王五', | ||||||
|  |             systemId: '四', | ||||||
|  |             phone: '136****9012', | ||||||
|  |             birthday: '1992-12-08', | ||||||
|  |             avatarClass: 'red-avatar', | ||||||
|  |             growthValue: 1850, | ||||||
|  |             points: 1200, | ||||||
|  |             coupons: 8, | ||||||
|  |             level: 'LV3', | ||||||
|  |             store: '美食餐厅', | ||||||
|  |             registerTime: '2024-03-10 16:45:12' | ||||||
|  |         }, | ||||||
|  |         'M004': { | ||||||
|  |             id: 'M004', | ||||||
|  |             nickname: '赵六', | ||||||
|  |             systemId: '五', | ||||||
|  |             phone: '137****3456', | ||||||
|  |             birthday: '1988-03-25', | ||||||
|  |             avatarClass: 'purple-avatar', | ||||||
|  |             growthValue: 600, | ||||||
|  |             points: 420, | ||||||
|  |             coupons: 2, | ||||||
|  |             level: 'LV1', | ||||||
|  |             store: '家居生活馆', | ||||||
|  |             registerTime: '2024-04-05 11:20:45' | ||||||
|  |         }, | ||||||
|  |         'M005': { | ||||||
|  |             id: 'M005', | ||||||
|  |             nickname: '孙七', | ||||||
|  |             systemId: '六', | ||||||
|  |             phone: '135****7890', | ||||||
|  |             birthday: '1995-07-12', | ||||||
|  |             avatarClass: 'pink-avatar', | ||||||
|  |             growthValue: 2500, | ||||||
|  |             points: 1800, | ||||||
|  |             coupons: 12, | ||||||
|  |             level: 'LV4', | ||||||
|  |             store: '运动健身店', | ||||||
|  |             registerTime: '2024-05-22 13:55:18' | ||||||
|  |         }, | ||||||
|  |         'M006': { | ||||||
|  |             id: 'M006', | ||||||
|  |             nickname: '周八', | ||||||
|  |             systemId: '七', | ||||||
|  |             phone: '134****2468', | ||||||
|  |             birthday: '1991-11-30', | ||||||
|  |             avatarClass: 'blue-avatar', | ||||||
|  |             growthValue: 1100, | ||||||
|  |             points: 750, | ||||||
|  |             coupons: 4, | ||||||
|  |             level: 'LV2', | ||||||
|  |             store: '时尚服装店', | ||||||
|  |             registerTime: '2024-06-18 08:35:22' | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  |      | ||||||
|  |     return mockMembers[memberId] || null; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 暴露全局函数
 | ||||||
|  | window.viewMemberDetail_Detail = viewMemberDetail_Detail; | ||||||
|  | window.switchDetailTab = switchDetailTab; | ||||||
|  | window.closeMemberDetailTab = closeMemberDetailTab; | ||||||
|  | @ -0,0 +1,207 @@ | ||||||
|  | /** | ||||||
|  |  * 会员查看页面功能 | ||||||
|  |  * 会员列表的查看、筛选和分页功能 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | // 页面初始化函数(必需)
 | ||||||
|  | function initMemberView() { | ||||||
|  |     console.log('会员查看页面已初始化'); | ||||||
|  |     loadMemberViewCSS(); | ||||||
|  |     initMemberTable(); | ||||||
|  |     bindMemberEvents(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 加载专用CSS
 | ||||||
|  | function loadMemberViewCSS() { | ||||||
|  |     if (!document.getElementById('memberViewCSS')) { | ||||||
|  |         const link = document.createElement('link'); | ||||||
|  |         link.id = 'memberViewCSS'; | ||||||
|  |         link.rel = 'stylesheet'; | ||||||
|  |         link.href = 'css/member-view.css'; | ||||||
|  |         document.head.appendChild(link); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 初始化会员表格
 | ||||||
|  | function initMemberTable() { | ||||||
|  |     const selectAllCheckbox = document.getElementById('selectAll'); | ||||||
|  |     if (selectAllCheckbox) { | ||||||
|  |         selectAllCheckbox.addEventListener('change', toggleSelectAll); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 绑定事件
 | ||||||
|  | function bindMemberEvents() { | ||||||
|  |     // 筛选查询按钮事件已在HTML中绑定onclick
 | ||||||
|  |      | ||||||
|  |     // 分页大小改变事件
 | ||||||
|  |     const pageSizeSelect = document.getElementById('pageSize'); | ||||||
|  |     if (pageSizeSelect) { | ||||||
|  |         pageSizeSelect.addEventListener('change', handlePageSizeChange); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 全选切换
 | ||||||
|  | function toggleSelectAll() { | ||||||
|  |     const selectAllCheckbox = document.getElementById('selectAll'); | ||||||
|  |     const memberCheckboxes = document.querySelectorAll('#memberTableBody input[type="checkbox"]'); | ||||||
|  |      | ||||||
|  |     memberCheckboxes.forEach(checkbox => { | ||||||
|  |         checkbox.checked = selectAllCheckbox.checked; | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 筛选查询功能
 | ||||||
|  | function searchMembers() { | ||||||
|  |     const storeFilter = document.getElementById('storeFilter').value; | ||||||
|  |     const nicknameFilter = document.getElementById('nicknameFilter').value; | ||||||
|  |     const levelFilter = document.getElementById('levelFilter').value; | ||||||
|  |     const registrationDate = document.getElementById('registrationDate').value; | ||||||
|  |      | ||||||
|  |     console.log('筛选条件:', { | ||||||
|  |         store: storeFilter, | ||||||
|  |         nickname: nicknameFilter, | ||||||
|  |         level: levelFilter, | ||||||
|  |         date: registrationDate | ||||||
|  |     }); | ||||||
|  |      | ||||||
|  |     // 这里实现筛选逻辑
 | ||||||
|  |     filterMemberTable(storeFilter, nicknameFilter, levelFilter, registrationDate); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 筛选表格数据
 | ||||||
|  | function filterMemberTable(store, nickname, level, date) { | ||||||
|  |     const tableBody = document.getElementById('memberTableBody'); | ||||||
|  |     const rows = tableBody.querySelectorAll('tr'); | ||||||
|  |      | ||||||
|  |     rows.forEach(row => { | ||||||
|  |         let showRow = true; | ||||||
|  |          | ||||||
|  |         // 店铺筛选
 | ||||||
|  |         if (store && row.cells[1].textContent !== store) { | ||||||
|  |             showRow = false; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         // 昵称筛选
 | ||||||
|  |         if (nickname && !row.cells[4].textContent.toLowerCase().includes(nickname.toLowerCase())) { | ||||||
|  |             showRow = false; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         // 等级筛选
 | ||||||
|  |         if (level && !row.cells[6].textContent.includes(level)) { | ||||||
|  |             showRow = false; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         // 日期筛选(简单日期匹配)
 | ||||||
|  |         if (date && !row.cells[8].textContent.includes(date)) { | ||||||
|  |             showRow = false; | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         row.style.display = showRow ? '' : 'none'; | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 查看会员详情
 | ||||||
|  | function viewMemberDetail(memberId) { | ||||||
|  |     console.log('查看会员详情:', memberId); | ||||||
|  |      | ||||||
|  |     // 先加载会员详情模块
 | ||||||
|  |     loadMemberDetailModule().then(() => { | ||||||
|  |         // 调用会员详情模块的函数
 | ||||||
|  |         if (window.viewMemberDetail_Detail) { | ||||||
|  |             window.viewMemberDetail_Detail(memberId); | ||||||
|  |         } else { | ||||||
|  |             console.error('会员详情模块未正确加载'); | ||||||
|  |             alert('页面加载失败,请重试'); | ||||||
|  |         } | ||||||
|  |     }).catch(error => { | ||||||
|  |         console.error('加载会员详情模块失败:', error); | ||||||
|  |         alert('页面加载失败,请重试'); | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 动态加载会员详情模块
 | ||||||
|  | async function loadMemberDetailModule() { | ||||||
|  |     // 检查是否已经加载
 | ||||||
|  |     if (window.memberDetailModuleLoaded) { | ||||||
|  |         return Promise.resolve(); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     return new Promise((resolve, reject) => { | ||||||
|  |         const script = document.createElement('script'); | ||||||
|  |         script.src = 'js/member-detail.js'; | ||||||
|  |         script.onload = () => { | ||||||
|  |             window.memberDetailModuleLoaded = true; | ||||||
|  |             resolve(); | ||||||
|  |         }; | ||||||
|  |         script.onerror = () => { | ||||||
|  |             reject(new Error('Failed to load member-detail.js')); | ||||||
|  |         }; | ||||||
|  |         document.head.appendChild(script); | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 处理分页大小改变
 | ||||||
|  | function handlePageSizeChange() { | ||||||
|  |     const pageSize = document.getElementById('pageSize').value; | ||||||
|  |     console.log('分页大小改为:', pageSize); | ||||||
|  |      | ||||||
|  |     // 这里实现分页逻辑
 | ||||||
|  |     // 实际项目中会重新请求数据或重新分页显示
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 排序功能
 | ||||||
|  | function sortTable(columnIndex, sortType = 'asc') { | ||||||
|  |     const table = document.querySelector('.member-table'); | ||||||
|  |     const tbody = table.querySelector('tbody'); | ||||||
|  |     const rows = Array.from(tbody.querySelectorAll('tr')); | ||||||
|  |      | ||||||
|  |     rows.sort((a, b) => { | ||||||
|  |         const aValue = a.cells[columnIndex].textContent.trim(); | ||||||
|  |         const bValue = b.cells[columnIndex].textContent.trim(); | ||||||
|  |          | ||||||
|  |         if (sortType === 'asc') { | ||||||
|  |             return aValue.localeCompare(bValue, 'zh-CN'); | ||||||
|  |         } else { | ||||||
|  |             return bValue.localeCompare(aValue, 'zh-CN'); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  |      | ||||||
|  |     // 重新插入排序后的行
 | ||||||
|  |     rows.forEach(row => tbody.appendChild(row)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 重置筛选条件
 | ||||||
|  | function resetFilters() { | ||||||
|  |     document.getElementById('storeFilter').value = ''; | ||||||
|  |     document.getElementById('nicknameFilter').value = ''; | ||||||
|  |     document.getElementById('levelFilter').value = ''; | ||||||
|  |     document.getElementById('registrationDate').value = ''; | ||||||
|  |      | ||||||
|  |     // 显示所有行
 | ||||||
|  |     const tableBody = document.getElementById('memberTableBody'); | ||||||
|  |     const rows = tableBody.querySelectorAll('tr'); | ||||||
|  |     rows.forEach(row => { | ||||||
|  |         row.style.display = ''; | ||||||
|  |     }); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 暴露到全局作用域供HTML调用
 | ||||||
|  | window.searchMembers = searchMembers; | ||||||
|  | window.viewMemberDetail = viewMemberDetail; | ||||||
|  | window.resetFilters = resetFilters; | ||||||
|  | window.sortTable = sortTable; | ||||||
|  | 
 | ||||||
|  | // 页面清理函数(可选)
 | ||||||
|  | function cleanupMemberView() { | ||||||
|  |     // 清理事件监听器等
 | ||||||
|  |     const selectAllCheckbox = document.getElementById('selectAll'); | ||||||
|  |     if (selectAllCheckbox) { | ||||||
|  |         selectAllCheckbox.removeEventListener('change', toggleSelectAll); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     const pageSizeSelect = document.getElementById('pageSize'); | ||||||
|  |     if (pageSizeSelect) { | ||||||
|  |         pageSizeSelect.removeEventListener('change', handlePageSizeChange); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,338 @@ | ||||||
|  | <div class="page-content"> | ||||||
|  |     <div class="detail-header"> | ||||||
|  |         <h2>会员详情-张三</h2> | ||||||
|  |         <button class="btn btn-secondary close-btn" onclick="closeMemberDetailTab()">关闭</button> | ||||||
|  |     </div> | ||||||
|  |      | ||||||
|  |     <!-- 会员基本信息 --> | ||||||
|  |     <div class="member-info-card"> | ||||||
|  |         <div class="member-info-header"> | ||||||
|  |             <h3>会员信息</h3> | ||||||
|  |         </div> | ||||||
|  |         <div class="member-info-content"> | ||||||
|  |             <div class="member-basic"> | ||||||
|  |                 <div class="member-avatar-section"> | ||||||
|  |                     <div class="avatar large-avatar green-avatar">张</div> | ||||||
|  |                     <div class="member-basic-info"> | ||||||
|  |                         <div class="member-name">张三</div> | ||||||
|  |                         <div class="member-id">会员系统编号:二</div> | ||||||
|  |                         <div class="member-phone">会员手机号:138****1234</div> | ||||||
|  |                         <div class="member-birth">会员生日:1990-05-15</div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |              | ||||||
|  |             <div class="member-assets"> | ||||||
|  |                 <div class="asset-item"> | ||||||
|  |                     <div class="asset-icon growth-icon"></div> | ||||||
|  |                     <div class="asset-info"> | ||||||
|  |                         <div class="asset-label">会员成长值</div> | ||||||
|  |                         <div class="asset-value">1250</div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="asset-item"> | ||||||
|  |                     <div class="asset-icon points-icon"></div> | ||||||
|  |                     <div class="asset-info"> | ||||||
|  |                         <div class="asset-label">会员积分</div> | ||||||
|  |                         <div class="asset-value">890</div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="asset-item"> | ||||||
|  |                     <div class="asset-icon coupon-icon"></div> | ||||||
|  |                     <div class="asset-info"> | ||||||
|  |                         <div class="asset-label">会员优惠券</div> | ||||||
|  |                         <div class="asset-value">5</div> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  |      | ||||||
|  |     <!-- 详情标签页 --> | ||||||
|  |     <div class="detail-tabs"> | ||||||
|  |         <div class="tab-headers"> | ||||||
|  |             <button class="tab-header active" onclick="switchDetailTab(event, 'growth')">会员成长值明细</button> | ||||||
|  |             <button class="tab-header" onclick="switchDetailTab(event, 'points')">会员积分明细</button> | ||||||
|  |         </div> | ||||||
|  |          | ||||||
|  |         <!-- 会员成长值明细 --> | ||||||
|  |         <div id="growthTab" class="tab-content active"> | ||||||
|  |             <div class="table-container"> | ||||||
|  |                 <table class="detail-table"> | ||||||
|  |                     <thead> | ||||||
|  |                         <tr> | ||||||
|  |                             <th>变化时间</th> | ||||||
|  |                             <th>成长值变动</th> | ||||||
|  |                             <th>关联订单</th> | ||||||
|  |                             <th>详情</th> | ||||||
|  |                         </tr> | ||||||
|  |                     </thead> | ||||||
|  |                     <tbody> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-07-24 17:20</td> | ||||||
|  |                             <td class="positive">+35</td> | ||||||
|  |                             <td>ORD9296</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-07-12 17:20</td> | ||||||
|  |                             <td class="positive">+100</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-07-10 17:20</td> | ||||||
|  |                             <td class="positive">+100</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-06-29 17:20</td> | ||||||
|  |                             <td class="positive">+20</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-06-17 17:20</td> | ||||||
|  |                             <td class="positive">+55</td> | ||||||
|  |                             <td>ORD2063</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-06-02 17:20</td> | ||||||
|  |                             <td class="positive">+20</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-20 17:20</td> | ||||||
|  |                             <td class="positive">+81</td> | ||||||
|  |                             <td>ORD5387</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-16 17:20</td> | ||||||
|  |                             <td class="positive">+100</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-10 17:20</td> | ||||||
|  |                             <td class="positive">+50</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-04 17:20</td> | ||||||
|  |                             <td class="positive">+100</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-25 17:20</td> | ||||||
|  |                             <td class="positive">+100</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-18 17:20</td> | ||||||
|  |                             <td class="positive">+50</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-16 17:20</td> | ||||||
|  |                             <td class="positive">+20</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-04 17:20</td> | ||||||
|  |                             <td class="positive">+20</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-01 17:20</td> | ||||||
|  |                             <td class="positive">+10</td> | ||||||
|  |                             <td>ORD3911</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-03-24 17:20</td> | ||||||
|  |                             <td class="positive">+20</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-03-10 17:20</td> | ||||||
|  |                             <td class="positive">+95</td> | ||||||
|  |                             <td>ORD8321</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-02-28 17:20</td> | ||||||
|  |                             <td class="positive">+100</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-02-18 17:20</td> | ||||||
|  |                             <td class="positive">+100</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-02-04 17:20</td> | ||||||
|  |                             <td class="positive">+20</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                     </tbody> | ||||||
|  |                 </table> | ||||||
|  |             </div> | ||||||
|  |             <div class="table-footer"> | ||||||
|  |                 <span>共 20 条记录</span> | ||||||
|  |                 <div class="table-pagination"> | ||||||
|  |                     <span>上一页</span> | ||||||
|  |                     <span>第 1 页,共 1 页</span> | ||||||
|  |                     <span>下一页</span> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |          | ||||||
|  |         <!-- 会员积分明细 --> | ||||||
|  |         <div id="pointsTab" class="tab-content"> | ||||||
|  |             <div class="table-container"> | ||||||
|  |                 <table class="detail-table"> | ||||||
|  |                     <thead> | ||||||
|  |                         <tr> | ||||||
|  |                             <th>变化时间</th> | ||||||
|  |                             <th>积分变动</th> | ||||||
|  |                             <th>关联订单</th> | ||||||
|  |                             <th>详情</th> | ||||||
|  |                         </tr> | ||||||
|  |                     </thead> | ||||||
|  |                     <tbody> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-07-24 17:20</td> | ||||||
|  |                             <td class="positive">+25</td> | ||||||
|  |                             <td>ORD9296</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-07-20 15:30</td> | ||||||
|  |                             <td class="negative">-50</td> | ||||||
|  |                             <td>兑换商品</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-07-12 17:20</td> | ||||||
|  |                             <td class="positive">+80</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-07-10 17:20</td> | ||||||
|  |                             <td class="positive">+60</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-06-29 17:20</td> | ||||||
|  |                             <td class="positive">+15</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-06-25 14:20</td> | ||||||
|  |                             <td class="negative">-100</td> | ||||||
|  |                             <td>兑换优惠券</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-06-17 17:20</td> | ||||||
|  |                             <td class="positive">+45</td> | ||||||
|  |                             <td>ORD2063</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-06-02 17:20</td> | ||||||
|  |                             <td class="positive">+15</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-20 17:20</td> | ||||||
|  |                             <td class="positive">+65</td> | ||||||
|  |                             <td>ORD5387</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-16 17:20</td> | ||||||
|  |                             <td class="positive">+80</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-12 10:30</td> | ||||||
|  |                             <td class="negative">-30</td> | ||||||
|  |                             <td>兑换商品</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-10 17:20</td> | ||||||
|  |                             <td class="positive">+40</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-05-04 17:20</td> | ||||||
|  |                             <td class="positive">+80</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-25 17:20</td> | ||||||
|  |                             <td class="positive">+70</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-18 17:20</td> | ||||||
|  |                             <td class="positive">+35</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-16 17:20</td> | ||||||
|  |                             <td class="positive">+15</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-04 17:20</td> | ||||||
|  |                             <td class="positive">+15</td> | ||||||
|  |                             <td>无</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                         <tr> | ||||||
|  |                             <td>2025-04-01 17:20</td> | ||||||
|  |                             <td class="positive">+8</td> | ||||||
|  |                             <td>ORD3911</td> | ||||||
|  |                             <td><a href="#" class="detail-link">详情</a></td> | ||||||
|  |                         </tr> | ||||||
|  |                     </tbody> | ||||||
|  |                 </table> | ||||||
|  |             </div> | ||||||
|  |             <div class="table-footer"> | ||||||
|  |                 <span>共 18 条记录</span> | ||||||
|  |                 <div class="table-pagination"> | ||||||
|  |                     <span>上一页</span> | ||||||
|  |                     <span>第 1 页,共 1 页</span> | ||||||
|  |                     <span>下一页</span> | ||||||
|  |                 </div> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </div> | ||||||
|  | @ -1,70 +1,173 @@ | ||||||
| <div class="page-content"> | <div class="page-content"> | ||||||
|     <h2>会员查看</h2> |     <h2>会员列表</h2> | ||||||
|     <div class="form-group"> |  | ||||||
|         <label>搜索会员:</label> |  | ||||||
|         <input type="text" placeholder="请输入会员姓名或手机号"> |  | ||||||
|     </div> |  | ||||||
|     <div class="form-group"> |  | ||||||
|         <label>会员等级:</label> |  | ||||||
|         <select> |  | ||||||
|             <option value="">全部等级</option> |  | ||||||
|             <option value="normal">普通会员</option> |  | ||||||
|             <option value="silver">银牌会员</option> |  | ||||||
|             <option value="gold">金牌会员</option> |  | ||||||
|         </select> |  | ||||||
|     </div> |  | ||||||
|     <button class="btn btn-primary">搜索</button> |  | ||||||
|     <button class="btn">重置</button> |  | ||||||
|      |      | ||||||
|     <table class="table"> |     <!-- 筛选区域 --> | ||||||
|         <thead> |     <div class="filter-section"> | ||||||
|             <tr> |         <div class="filter-row"> | ||||||
|                 <th>会员ID</th> |             <div class="filter-item"> | ||||||
|                 <th>姓名</th> |                 <label>店铺</label> | ||||||
|                 <th>手机号</th> |                 <select id="storeFilter"> | ||||||
|                 <th>等级</th> |                     <option value="">全部店铺</option> | ||||||
|                 <th>积分</th> |                     <option value="时尚服装店">时尚服装店</option> | ||||||
|                 <th>注册时间</th> |                     <option value="数码电子城">数码电子城</option> | ||||||
|                 <th>操作</th> |                     <option value="美食餐厅">美食餐厅</option> | ||||||
|             </tr> |                     <option value="家居生活馆">家居生活馆</option> | ||||||
|         </thead> |                     <option value="运动健身店">运动健身店</option> | ||||||
|         <tbody> |                 </select> | ||||||
|             <tr> |             </div> | ||||||
|                 <td>M001</td> |             <div class="filter-item"> | ||||||
|                 <td>张小明</td> |                 <label>用户昵称</label> | ||||||
|                 <td>138****1234</td> |                 <input type="text" id="nicknameFilter" placeholder="请输入用户昵称"> | ||||||
|                 <td>金牌会员</td> |             </div> | ||||||
|                 <td>8,500</td> |             <div class="filter-item"> | ||||||
|                 <td>2024-01-15</td> |                 <label>会员等级</label> | ||||||
|                 <td> |                 <select id="levelFilter"> | ||||||
|                     <button class="btn">查看详情</button> |                     <option value="">全部等级</option> | ||||||
|                     <button class="btn">编辑</button> |                     <option value="LV1">LV1</option> | ||||||
|                 </td> |                     <option value="LV2">LV2</option> | ||||||
|             </tr> |                     <option value="LV3">LV3</option> | ||||||
|             <tr> |                     <option value="LV4">LV4</option> | ||||||
|                 <td>M002</td> |                 </select> | ||||||
|                 <td>李小红</td> |             </div> | ||||||
|                 <td>139****5678</td> |             <div class="filter-item"> | ||||||
|                 <td>银牌会员</td> |                 <label>注册时间</label> | ||||||
|                 <td>2,300</td> |                 <input type="date" id="registrationDate"> | ||||||
|                 <td>2024-02-20</td> |             </div> | ||||||
|                 <td> |         </div> | ||||||
|                     <button class="btn">查看详情</button> |         <div class="filter-actions"> | ||||||
|                     <button class="btn">编辑</button> |             <button class="btn btn-primary" onclick="searchMembers()">筛选查询</button> | ||||||
|                 </td> |         </div> | ||||||
|             </tr> |     </div> | ||||||
|             <tr> | 
 | ||||||
|                 <td>M003</td> |     <!-- 统计信息 --> | ||||||
|                 <td>王小刚</td> |     <div class="stats-section"> | ||||||
|                 <td>137****9012</td> |         <div class="stats-item"> | ||||||
|                 <td>普通会员</td> |             <div class="stats-icon member-icon"></div> | ||||||
|                 <td>450</td> |             <div class="stats-content"> | ||||||
|                 <td>2024-03-10</td> |                 <div class="stats-label">会员总数</div> | ||||||
|                 <td> |                 <div class="stats-value">1,247</div> | ||||||
|                     <button class="btn">查看详情</button> |             </div> | ||||||
|                     <button class="btn">编辑</button> |         </div> | ||||||
|                 </td> |         <div class="stats-item"> | ||||||
|             </tr> |             <div class="stats-icon new-member-icon"></div> | ||||||
|         </tbody> |             <div class="stats-content"> | ||||||
|     </table> |                 <div class="stats-label">今日新增</div> | ||||||
|  |                 <div class="stats-value">23</div> | ||||||
|  |             </div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  |      | ||||||
|  |     <!-- 会员列表表格 --> | ||||||
|  |     <div class="table-container"> | ||||||
|  |         <table class="member-table"> | ||||||
|  |             <thead> | ||||||
|  |                 <tr> | ||||||
|  |                     <th><input type="checkbox" id="selectAll"></th> | ||||||
|  |                     <th>所属摊位 <span class="sort-icon">↕</span></th> | ||||||
|  |                     <th>用户ID <span class="sort-icon">↕</span></th> | ||||||
|  |                     <th>用户头像</th> | ||||||
|  |                     <th>用户昵称 <span class="sort-icon">↕</span></th> | ||||||
|  |                     <th>手机号</th> | ||||||
|  |                     <th>会员等级 <span class="sort-icon">↕</span></th> | ||||||
|  |                     <th>生日</th> | ||||||
|  |                     <th>注册时间 <span class="sort-icon">↕</span></th> | ||||||
|  |                     <th>操作</th> | ||||||
|  |                 </tr> | ||||||
|  |             </thead> | ||||||
|  |             <tbody id="memberTableBody"> | ||||||
|  |                 <tr> | ||||||
|  |                     <td><input type="checkbox"></td> | ||||||
|  |                     <td>时尚服装店</td> | ||||||
|  |                     <td>M001</td> | ||||||
|  |                     <td><div class="avatar green-avatar">张</div></td> | ||||||
|  |                     <td>张三</td> | ||||||
|  |                     <td>138****1234</td> | ||||||
|  |                     <td><span class="level-badge lv2">LV2</span></td> | ||||||
|  |                     <td>1990-05-15</td> | ||||||
|  |                     <td>2024-01-15 14:30:25</td> | ||||||
|  |                     <td><a href="#" class="detail-link" onclick="viewMemberDetail('M001')">详情</a></td> | ||||||
|  |                 </tr> | ||||||
|  |                 <tr> | ||||||
|  |                     <td><input type="checkbox"></td> | ||||||
|  |                     <td>数码电子城</td> | ||||||
|  |                     <td>M002</td> | ||||||
|  |                     <td><div class="avatar orange-avatar">李</div></td> | ||||||
|  |                     <td>李四</td> | ||||||
|  |                     <td>139****5678</td> | ||||||
|  |                     <td><span class="level-badge lv1">LV1</span></td> | ||||||
|  |                     <td>1985-08-20</td> | ||||||
|  |                     <td>2024-02-20 09:15:30</td> | ||||||
|  |                     <td><a href="#" class="detail-link" onclick="viewMemberDetail('M002')">详情</a></td> | ||||||
|  |                 </tr> | ||||||
|  |                 <tr> | ||||||
|  |                     <td><input type="checkbox"></td> | ||||||
|  |                     <td>美食餐厅</td> | ||||||
|  |                     <td>M003</td> | ||||||
|  |                     <td><div class="avatar red-avatar">王</div></td> | ||||||
|  |                     <td>王五</td> | ||||||
|  |                     <td>136****9012</td> | ||||||
|  |                     <td><span class="level-badge lv3">LV3</span></td> | ||||||
|  |                     <td>1992-12-08</td> | ||||||
|  |                     <td>2024-03-10 16:45:12</td> | ||||||
|  |                     <td><a href="#" class="detail-link" onclick="viewMemberDetail('M003')">详情</a></td> | ||||||
|  |                 </tr> | ||||||
|  |                 <tr> | ||||||
|  |                     <td><input type="checkbox"></td> | ||||||
|  |                     <td>家居生活馆</td> | ||||||
|  |                     <td>M004</td> | ||||||
|  |                     <td><div class="avatar purple-avatar">赵</div></td> | ||||||
|  |                     <td>赵六</td> | ||||||
|  |                     <td>137****3456</td> | ||||||
|  |                     <td><span class="level-badge lv1">LV1</span></td> | ||||||
|  |                     <td>1988-03-25</td> | ||||||
|  |                     <td>2024-04-05 11:20:45</td> | ||||||
|  |                     <td><a href="#" class="detail-link" onclick="viewMemberDetail('M004')">详情</a></td> | ||||||
|  |                 </tr> | ||||||
|  |                 <tr> | ||||||
|  |                     <td><input type="checkbox"></td> | ||||||
|  |                     <td>运动健身店</td> | ||||||
|  |                     <td>M005</td> | ||||||
|  |                     <td><div class="avatar pink-avatar">孙</div></td> | ||||||
|  |                     <td>孙七</td> | ||||||
|  |                     <td>135****7890</td> | ||||||
|  |                     <td><span class="level-badge lv4">LV4</span></td> | ||||||
|  |                     <td>1995-07-12</td> | ||||||
|  |                     <td>2024-05-22 13:55:18</td> | ||||||
|  |                     <td><a href="#" class="detail-link" onclick="viewMemberDetail('M005')">详情</a></td> | ||||||
|  |                 </tr> | ||||||
|  |                 <tr> | ||||||
|  |                     <td><input type="checkbox"></td> | ||||||
|  |                     <td>时尚服装店</td> | ||||||
|  |                     <td>M006</td> | ||||||
|  |                     <td><div class="avatar blue-avatar">周</div></td> | ||||||
|  |                     <td>周八</td> | ||||||
|  |                     <td>134****2468</td> | ||||||
|  |                     <td><span class="level-badge lv2">LV2</span></td> | ||||||
|  |                     <td>1991-11-30</td> | ||||||
|  |                     <td>2024-06-18 08:35:22</td> | ||||||
|  |                     <td><a href="#" class="detail-link" onclick="viewMemberDetail('M006')">详情</a></td> | ||||||
|  |                 </tr> | ||||||
|  |             </tbody> | ||||||
|  |         </table> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <!-- 分页 --> | ||||||
|  |     <div class="pagination-section"> | ||||||
|  |         <div class="pagination-info"> | ||||||
|  |             显示  | ||||||
|  |             <select id="pageSize"> | ||||||
|  |                 <option value="20" selected>20</option> | ||||||
|  |                 <option value="50">50</option> | ||||||
|  |                 <option value="100">100</option> | ||||||
|  |             </select> | ||||||
|  |             条记录,共 1,247 条 | ||||||
|  |         </div> | ||||||
|  |         <div class="pagination-controls"> | ||||||
|  |             <span>首页</span> | ||||||
|  |             <span>上一页</span> | ||||||
|  |             <span>第 <input type="number" value="1" min="1" max="63"> 页,共 63 页</span> | ||||||
|  |             <span>下一页</span> | ||||||
|  |             <span>尾页</span> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
| </div> | </div> | ||||||
		Loading…
	
		Reference in New Issue