diff --git a/new_web/merchant/css/member-detail.css b/new_web/merchant/css/member-detail.css new file mode 100644 index 0000000..39c2967 --- /dev/null +++ b/new_web/merchant/css/member-detail.css @@ -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; + } +} \ No newline at end of file diff --git a/new_web/merchant/css/member-view.css b/new_web/merchant/css/member-view.css new file mode 100644 index 0000000..aa9fa46 --- /dev/null +++ b/new_web/merchant/css/member-view.css @@ -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; + } +} \ No newline at end of file diff --git a/new_web/merchant/js/member-detail.js b/new_web/merchant/js/member-detail.js new file mode 100644 index 0000000..f9deb98 --- /dev/null +++ b/new_web/merchant/js/member-detail.js @@ -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 = ` + ${tabTitle} + + `; + + // 添加点击事件 + 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; \ No newline at end of file diff --git a/new_web/merchant/js/member-view.js b/new_web/merchant/js/member-view.js new file mode 100644 index 0000000..f25581a --- /dev/null +++ b/new_web/merchant/js/member-view.js @@ -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); + } +} \ No newline at end of file diff --git a/new_web/merchant/pages/member-detail.html b/new_web/merchant/pages/member-detail.html new file mode 100644 index 0000000..05edac9 --- /dev/null +++ b/new_web/merchant/pages/member-detail.html @@ -0,0 +1,338 @@ +
+
+

会员详情-张三

+ +
+ + +
+
+

会员信息

+
+
+
+
+
+
+
张三
+
会员系统编号:二
+
会员手机号:138****1234
+
会员生日:1990-05-15
+
+
+
+ +
+
+
+
+
会员成长值
+
1250
+
+
+
+
+
+
会员积分
+
890
+
+
+
+
+
+
会员优惠券
+
5
+
+
+
+
+
+ + +
+
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
变化时间成长值变动关联订单详情
2025-07-24 17:20+35ORD9296详情
2025-07-12 17:20+100详情
2025-07-10 17:20+100详情
2025-06-29 17:20+20详情
2025-06-17 17:20+55ORD2063详情
2025-06-02 17:20+20详情
2025-05-20 17:20+81ORD5387详情
2025-05-16 17:20+100详情
2025-05-10 17:20+50详情
2025-05-04 17:20+100详情
2025-04-25 17:20+100详情
2025-04-18 17:20+50详情
2025-04-16 17:20+20详情
2025-04-04 17:20+20详情
2025-04-01 17:20+10ORD3911详情
2025-03-24 17:20+20详情
2025-03-10 17:20+95ORD8321详情
2025-02-28 17:20+100详情
2025-02-18 17:20+100详情
2025-02-04 17:20+20详情
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
变化时间积分变动关联订单详情
2025-07-24 17:20+25ORD9296详情
2025-07-20 15:30-50兑换商品详情
2025-07-12 17:20+80详情
2025-07-10 17:20+60详情
2025-06-29 17:20+15详情
2025-06-25 14:20-100兑换优惠券详情
2025-06-17 17:20+45ORD2063详情
2025-06-02 17:20+15详情
2025-05-20 17:20+65ORD5387详情
2025-05-16 17:20+80详情
2025-05-12 10:30-30兑换商品详情
2025-05-10 17:20+40详情
2025-05-04 17:20+80详情
2025-04-25 17:20+70详情
2025-04-18 17:20+35详情
2025-04-16 17:20+15详情
2025-04-04 17:20+15详情
2025-04-01 17:20+8ORD3911详情
+
+ +
+
+
\ No newline at end of file diff --git a/new_web/merchant/pages/member-view.html b/new_web/merchant/pages/member-view.html index ed18fde..cb6e4b6 100644 --- a/new_web/merchant/pages/member-view.html +++ b/new_web/merchant/pages/member-view.html @@ -1,70 +1,173 @@
-

会员查看

-
- - -
-
- - -
- - +

会员列表

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
会员ID姓名手机号等级积分注册时间操作
M001张小明138****1234金牌会员8,5002024-01-15 - - -
M002李小红139****5678银牌会员2,3002024-02-20 - - -
M003王小刚137****9012普通会员4502024-03-10 - - -
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+ + +
+
+
+
+
会员总数
+
1,247
+
+
+
+
+
+
今日新增
+
23
+
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
所属摊位 用户ID 用户头像用户昵称 手机号会员等级 生日注册时间 操作
时尚服装店M001
张三138****1234LV21990-05-152024-01-15 14:30:25详情
数码电子城M002
李四139****5678LV11985-08-202024-02-20 09:15:30详情
美食餐厅M003
王五136****9012LV31992-12-082024-03-10 16:45:12详情
家居生活馆M004
赵六137****3456LV11988-03-252024-04-05 11:20:45详情
运动健身店M005
孙七135****7890LV41995-07-122024-05-22 13:55:18详情
时尚服装店M006
周八134****2468LV21991-11-302024-06-18 08:35:22详情
+
+ + +
+
+ 显示 + + 条记录,共 1,247 条 +
+
+ 首页 + 上一页 + 页,共 63 页 + 下一页 + 尾页 +
+
\ No newline at end of file