中科集团HTML托管
返回管理
编辑页面
页面标题
有效期
7天
30天
90天
修改后将从当前时间重新计算过期时间
CSS文件(可选)
* { margin: 0; padding: 0; box-sizing: border-box; } :root { --primary: #ff6a00; --primary-hover: #e55d00; --primary-light: #fff4ed; --bg: #f5f6fa; --sidebar-bg: #1e1e2d; --sidebar-hover: #2a2a3d; --sidebar-active: #ff6a00; --card-bg: #fff; --text: #333; --text-secondary: #888; --border: #e8e8e8; --success: #52c41a; --warning: #faad14; --danger: #ff4d4f; --info: #1890ff; --radius: 8px; --shadow: 0 2px 12px rgba(0,0,0,0.08); } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; background: var(--bg); color: var(--text); font-size: 14px; line-height: 1.6; } /* Login Page */ .login-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); } .login-box { background: #fff; border-radius: 12px; padding: 48px 40px; width: 420px; box-shadow: 0 20px 60px rgba(0,0,0,0.2); } .login-box h1 { text-align: center; font-size: 24px; margin-bottom: 8px; color: var(--text); } .login-box .subtitle { text-align: center; color: var(--text-secondary); margin-bottom: 32px; font-size: 14px; } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 6px; font-weight: 500; color: var(--text); font-size: 13px; } .form-group input, .form-group select, .form-group textarea { width: 100%; padding: 10px 14px; border: 1px solid var(--border); border-radius: 6px; font-size: 14px; transition: border-color 0.2s; outline: none; } .form-group input:focus, .form-group select:focus, .form-group textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(255,106,0,0.1); } .form-group textarea { resize: vertical; min-height: 80px; } .btn { display: inline-flex; align-items: center; justify-content: center; padding: 10px 24px; border: none; border-radius: 6px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.2s; gap: 6px; } .btn-primary { background: var(--primary); color: #fff; } .btn-primary:hover { background: var(--primary-hover); } .btn-full { width: 100%; } .btn-outline { background: #fff; border: 1px solid var(--border); color: var(--text); } .btn-outline:hover { border-color: var(--primary); color: var(--primary); } .btn-sm { padding: 6px 14px; font-size: 12px; } .btn-danger { background: var(--danger); color: #fff; } .btn-success { background: var(--success); color: #fff; } .btn-info { background: var(--info); color: #fff; } /* Layout */ .app-layout { display: flex; min-height: 100vh; } /* Sidebar */ .sidebar { width: 220px; background: var(--sidebar-bg); color: #fff; display: flex; flex-direction: column; position: fixed; top: 0; left: 0; bottom: 0; z-index: 100; overflow-y: auto; } .sidebar-logo { padding: 20px; font-size: 18px; font-weight: 700; border-bottom: 1px solid rgba(255,255,255,0.1); display: flex; align-items: center; gap: 10px; } .sidebar-logo .logo-icon { width: 36px; height: 36px; background: var(--primary); border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 18px; } .sidebar-nav { flex: 1; padding: 12px 0; } .nav-group-title { padding: 16px 20px 6px; font-size: 11px; color: rgba(255,255,255,0.4); text-transform: uppercase; letter-spacing: 1px; } .nav-item { display: flex; align-items: center; padding: 10px 20px; cursor: pointer; transition: all 0.2s; gap: 10px; color: rgba(255,255,255,0.7); font-size: 13px; border-left: 3px solid transparent; } .nav-item:hover { background: var(--sidebar-hover); color: #fff; } .nav-item.active { background: rgba(255,106,0,0.15); color: var(--primary); border-left-color: var(--primary); } .nav-item .icon { width: 20px; text-align: center; font-size: 15px; } /* Main Content */ .main-content { flex: 1; margin-left: 220px; display: flex; flex-direction: column; } /* Header */ .top-header { background: #fff; padding: 0 24px; height: 56px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 50; } .header-left { display: flex; align-items: center; gap: 16px; } .header-left h2 { font-size: 16px; font-weight: 600; } .breadcrumb { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-secondary); } .breadcrumb span.current { color: var(--text); } .header-right { display: flex; align-items: center; gap: 16px; } .header-right .avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; } .notification-badge { position: relative; cursor: pointer; font-size: 18px; } .notification-badge .badge { position: absolute; top: -6px; right: -8px; background: var(--danger); color: #fff; font-size: 10px; width: 16px; height: 16px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } /* Page Content */ .page-content { padding: 24px; flex: 1; } /* Cards */ .card { background: var(--card-bg); border-radius: var(--radius); box-shadow: var(--shadow); margin-bottom: 20px; } .card-header { padding: 16px 20px; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; } .card-header h3 { font-size: 15px; font-weight: 600; } .card-body { padding: 20px; } /* Stats Grid */ .stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 24px; } .stat-card { background: #fff; border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); } .stat-card .label { font-size: 13px; color: var(--text-secondary); margin-bottom: 8px; } .stat-card .value { font-size: 28px; font-weight: 700; color: var(--text); } .stat-card .change { font-size: 12px; margin-top: 4px; } .stat-card .change.up { color: var(--success); } .stat-card .change.down { color: var(--danger); } /* Tables */ .table-wrapper { overflow-x: auto; } table { width: 100%; border-collapse: collapse; } table th, table td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--border); font-size: 13px; white-space: nowrap; } table th { background: #fafafa; font-weight: 600; color: var(--text-secondary); font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; } table tr:hover td { background: #fafafa; } /* Tags */ .tag { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 12px; font-weight: 500; } .tag-success { background: #f6ffed; color: var(--success); border: 1px solid #b7eb8f; } .tag-warning { background: #fffbe6; color: #d48806; border: 1px solid #ffe58f; } .tag-danger { background: #fff2f0; color: var(--danger); border: 1px solid #ffccc7; } .tag-info { background: #e6f7ff; color: var(--info); border: 1px solid #91d5ff; } .tag-default { background: #f5f5f5; color: #999; border: 1px solid #d9d9d9; } /* Tabs */ .tabs { display: flex; border-bottom: 2px solid var(--border); margin-bottom: 20px; } .tab-item { padding: 10px 20px; cursor: pointer; font-size: 14px; color: var(--text-secondary); border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.2s; } .tab-item:hover { color: var(--primary); } .tab-item.active { color: var(--primary); border-bottom-color: var(--primary); font-weight: 500; } /* Filter Bar */ .filter-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; } .filter-bar input, .filter-bar select { padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; font-size: 13px; outline: none; } .filter-bar input:focus, .filter-bar select:focus { border-color: var(--primary); } /* Pagination */ .pagination { display: flex; align-items: center; justify-content: space-between; padding: 16px 0; } .pagination .info { font-size: 13px; color: var(--text-secondary); } .pagination .pages { display: flex; gap: 4px; } .pagination .page-btn { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 4px; cursor: pointer; font-size: 13px; background: #fff; transition: all 0.2s; } .pagination .page-btn:hover { border-color: var(--primary); color: var(--primary); } .pagination .page-btn.active { background: var(--primary); color: #fff; border-color: var(--primary); } /* Modal */ .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; opacity: 0; visibility: hidden; transition: all 0.3s; } .modal-overlay.show { opacity: 1; visibility: visible; } .modal { background: #fff; border-radius: 12px; width: 560px; max-height: 80vh; overflow-y: auto; transform: translateY(20px); transition: transform 0.3s; } .modal-overlay.show .modal { transform: translateY(0); } .modal-header { padding: 20px 24px; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; } .modal-header h3 { font-size: 16px; } .modal-close { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; cursor: pointer; border-radius: 4px; font-size: 18px; color: var(--text-secondary); } .modal-close:hover { background: #f5f5f5; } .modal-body { padding: 24px; } .modal-footer { padding: 16px 24px; border-top: 1px solid var(--border); display: flex; justify-content: flex-end; gap: 10px; } /* Progress Steps */ .steps { display: flex; align-items: center; margin-bottom: 32px; } .step { display: flex; align-items: center; gap: 8px; flex: 1; } .step .step-num { width: 28px; height: 28px; border-radius: 50%; background: #e8e8e8; color: #999; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; flex-shrink: 0; } .step.active .step-num { background: var(--primary); color: #fff; } .step.done .step-num { background: var(--success); color: #fff; } .step .step-label { font-size: 13px; color: var(--text-secondary); } .step.active .step-label { color: var(--primary); font-weight: 500; } .step.done .step-label { color: var(--success); } .step-line { flex: 1; height: 2px; background: #e8e8e8; margin: 0 8px; } .step.done + .step-line { background: var(--success); } /* Upload Area */ .upload-area { border: 2px dashed var(--border); border-radius: 8px; padding: 32px; text-align: center; cursor: pointer; transition: all 0.2s; } .upload-area:hover { border-color: var(--primary); background: var(--primary-light); } .upload-area .upload-icon { font-size: 36px; margin-bottom: 8px; } .upload-area .upload-text { color: var(--text-secondary); font-size: 13px; } /* Grid layouts */ .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; } .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; } /* Product Card */ .product-card { background: #fff; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; transition: box-shadow 0.2s; } .product-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.1); } .product-card .product-img { height: 160px; background: #f5f5f5; display: flex; align-items: center; justify-content: center; font-size: 48px; } .product-card .product-info { padding: 12px; } .product-card .product-name { font-size: 13px; margin-bottom: 6px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .product-card .product-price { color: var(--primary); font-size: 16px; font-weight: 600; } .product-card .product-stock { font-size: 12px; color: var(--text-secondary); margin-top: 4px; } /* Charts placeholder */ .chart-placeholder { background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); border-radius: 8px; height: 300px; display: flex; align-items: center; justify-content: center; color: #999; font-size: 14px; } /* Simple bar chart */ .bar-chart { display: flex; align-items: flex-end; gap: 12px; height: 200px; padding: 20px 0; } .bar-chart .bar-item { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; } .bar-chart .bar { width: 100%; background: var(--primary); border-radius: 4px 4px 0 0; min-height: 4px; transition: height 0.5s; } .bar-chart .bar-label { font-size: 11px; color: var(--text-secondary); } .bar-chart .bar-value { font-size: 11px; font-weight: 600; } /* Coupon card */ .coupon-card { border: 1px solid var(--border); border-radius: 8px; padding: 16px; display: flex; gap: 16px; align-items: center; margin-bottom: 12px; } .coupon-amount { font-size: 28px; font-weight: 700; color: var(--primary); min-width: 80px; text-align: center; } .coupon-amount small { font-size: 14px; } .coupon-info { flex: 1; } .coupon-info .coupon-name { font-weight: 600; margin-bottom: 4px; } .coupon-info .coupon-desc { font-size: 12px; color: var(--text-secondary); } .coupon-status { text-align: right; } /* Dropdown */ .dropdown { position: relative; } .dropdown-menu { position: absolute; top: 100%; right: 0; background: #fff; border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.15); min-width: 160px; padding: 6px 0; z-index: 200; display: none; } .dropdown-menu.show { display: block; } .dropdown-item { padding: 8px 16px; cursor: pointer; font-size: 13px; display: flex; align-items: center; gap: 8px; } .dropdown-item:hover { background: #f5f5f5; } /* Empty state */ .empty-state { text-align: center; padding: 60px 20px; color: var(--text-secondary); } .empty-state .empty-icon { font-size: 48px; margin-bottom: 12px; } /* Switch toggle */ .switch { position: relative; width: 40px; height: 22px; cursor: pointer; } .switch input { display: none; } .switch .slider { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: #ccc; border-radius: 22px; transition: 0.3s; } .switch .slider::before { content: ''; position: absolute; width: 18px; height: 18px; left: 2px; bottom: 2px; background: #fff; border-radius: 50%; transition: 0.3s; } .switch input:checked + .slider { background: var(--primary); } .switch input:checked + .slider::before { transform: translateX(18px); } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .fade-in { animation: fadeIn 0.3s ease-out; } /* Tab panels */ .tab-panel { display: none; } .tab-panel.active { display: block; } /* Hidden utility */ .hidden { display: none !important; } /* Page sections */ .page-section { display: none; } .page-section.active { display: block; animation: fadeIn 0.3s ease-out; } /* Responsive */ @media (max-width: 1200px) { .stats-grid { grid-template-columns: repeat(2, 1fr); } } /* SKU table */ .sku-table { width: 100%; margin-top: 12px; } .sku-table th, .sku-table td { padding: 8px 12px; border: 1px solid var(--border); font-size: 13px; } .sku-table input { width: 100%; border: 1px solid var(--border); padding: 6px 8px; border-radius: 4px; font-size: 13px; } /* Spec tags */ .spec-tag { display: inline-flex; align-items: center; padding: 4px 12px; background: #f5f5f5; border: 1px solid var(--border); border-radius: 4px; margin: 4px; font-size: 13px; cursor: pointer; } .spec-tag:hover { border-color: var(--primary); color: var(--primary); } .spec-tag.selected { background: var(--primary-light); border-color: var(--primary); color: var(--primary); } /* Score stars */ .stars { color: #faad14; font-size: 14px; letter-spacing: 2px; } /* Review card */ .review-card { border-bottom: 1px solid var(--border); padding: 16px 0; } .review-card:last-child { border-bottom: none; } .review-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; } .review-user { display: flex; align-items: center; gap: 8px; } .review-avatar { width: 32px; height: 32px; border-radius: 50%; background: #e8e8e8; display: flex; align-items: center; justify-content: center; font-size: 13px; } .review-content { font-size: 13px; color: var(--text); margin-bottom: 8px; } .review-reply { background: #f9f9f9; padding: 10px 14px; border-radius: 6px; font-size: 12px; color: var(--text-secondary); margin-top: 8px; } .review-reply::before { content: '商家回复: '; color: var(--primary); font-weight: 500; } /* Money display */ .money { color: var(--primary); font-weight: 600; } /* Flex utilities */ .flex { display: flex; } .flex-between { display: flex; justify-content: space-between; align-items: center; } .flex-center { display: flex; align-items: center; justify-content: center; } .gap-8 { gap: 8px; } .gap-12 { gap: 12px; } .gap-16 { gap: 16px; } .mt-12 { margin-top: 12px; } .mt-16 { margin-top: 16px; } .mt-20 { margin-top: 20px; } .mb-12 { margin-bottom: 12px; } .mb-16 { margin-bottom: 16px; } .mb-20 { margin-bottom: 20px; } .text-center { text-align: center; } .text-secondary { color: var(--text-secondary); } .text-sm { font-size: 12px; } .fw-600 { font-weight: 600; } /* Shop preview */ .shop-preview { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; } .shop-banner { height: 200px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 24px; font-weight: 700; } .shop-info-bar { padding: 16px 20px; display: flex; align-items: center; gap: 16px; } .shop-avatar-lg { width: 64px; height: 64px; border-radius: 12px; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 24px; font-weight: 700; margin-top: -32px; border: 3px solid #fff; } /* Timeline */ .timeline { padding: 0 0 0 20px; border-left: 2px solid var(--border); } .timeline-item { position: relative; padding: 0 0 24px 20px; } .timeline-item::before { content: ''; position: absolute; left: -7px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--primary); border: 2px solid #fff; } .timeline-item .time { font-size: 12px; color: var(--text-secondary); margin-bottom: 4px; } .timeline-item .content { font-size: 13px; }
JS文件(可选)
const App = { currentPage: 'dashboard', currentTab: {}, loadedPages: {}, init() { this.bindLoginEvents(); this.checkLogin(); }, checkLogin() { const loggedIn = sessionStorage.getItem('loggedIn'); if (loggedIn) { document.getElementById('loginPage').classList.add('hidden'); document.getElementById('appLayout').classList.remove('hidden'); this.initApp(); } }, initApp() { this.bindNavEvents(); this.bindModalEvents(); this.bindTabEvents(); this.bindFilterEvents(); this.navigateTo('dashboard'); }, bindLoginEvents() { const loginBtn = document.getElementById('loginBtn'); if (loginBtn) { loginBtn.addEventListener('click', () => { sessionStorage.setItem('loggedIn', 'true'); document.getElementById('loginPage').classList.add('hidden'); document.getElementById('appLayout').classList.remove('hidden'); this.initApp(); }); } }, bindNavEvents() { document.querySelectorAll('.nav-item[data-page]').forEach(item => { item.addEventListener('click', () => { this.navigateTo(item.dataset.page); }); }); }, async navigateTo(page) { this.currentPage = page; document.querySelectorAll('.nav-item').forEach(i => i.classList.remove('active')); const navItem = document.querySelector(`.nav-item[data-page="${page}"]`); if (navItem) navItem.classList.add('active'); const titles = { dashboard: '数据概览', 'entry-apply': '入驻申请', 'shop-manage': '店铺管理', 'product-manage': '商品管理', 'order-manage': '订单管理', marketing: '营销工具', 'data-board': '数据看板', finance: '财务结算', 'review-manage': '评价管理' }; document.getElementById('pageTitle').textContent = titles[page] || page; document.getElementById('breadcrumbCurrent').textContent = titles[page] || page; const container = document.getElementById('pageContent'); if (this.loadedPages[page]) { container.innerHTML = this.loadedPages[page]; } else { try { const response = await fetch(`pages/${page}.html`); if (response.ok) { const html = await response.text(); this.loadedPages[page] = html; container.innerHTML = html; } else { container.innerHTML = `
🚧
页面加载失败
`; } } catch (e) { container.innerHTML = `
⚠️
网络错误,请刷新重试
`; } } const loadedSection = container.querySelector('.page-section'); if (loadedSection) loadedSection.classList.add('active'); this.rebindDynamicEvents(); window.scrollTo(0, 0); }, rebindDynamicEvents() { this.bindTabEvents(); this.bindModalEvents(); this.bindFilterEvents(); this.bindSpecTags(); }, bindModalEvents() { document.querySelectorAll('[data-modal]').forEach(btn => { btn.onclick = () => { const modal = document.getElementById(btn.dataset.modal); if (modal) modal.classList.add('show'); }; }); document.querySelectorAll('.modal-close').forEach(btn => { btn.onclick = () => { const overlay = btn.closest('.modal-overlay'); if (overlay) overlay.classList.remove('show'); }; }); document.querySelectorAll('.modal-overlay').forEach(overlay => { overlay.onclick = (e) => { if (e.target === overlay) overlay.classList.remove('show'); }; }); }, bindTabEvents() { document.querySelectorAll('.tabs').forEach(tabContainer => { const tabs = tabContainer.querySelectorAll('.tab-item'); tabs.forEach(tab => { tab.onclick = () => { const group = tabContainer.dataset.group || 'default'; tabs.forEach(t => t.classList.remove('active')); tab.classList.add('active'); this.currentTab[group] = tab.dataset.tab; const parent = tabContainer.closest('.page-section') || tabContainer.closest('.card'); if (parent) { parent.querySelectorAll('.tab-panel').forEach(p => p.classList.remove('active')); const panel = parent.querySelector(`[data-panel="${tab.dataset.tab}"]`); if (panel) panel.classList.add('active'); } }; }); }); }, bindFilterEvents() { document.querySelectorAll('.filter-bar select, .filter-bar input').forEach(el => { el.onchange = () => { this.showToast('筛选条件已更新', 'info'); }; }); }, bindSpecTags() { document.querySelectorAll('.spec-tag:not([style*="dashed"])').forEach(tag => { if (!tag.onclick) { tag.onclick = () => tag.classList.toggle('selected'); } }); }, showToast(message, type = 'success') { const toast = document.createElement('div'); toast.style.cssText = ` position: fixed; top: 20px; right: 20px; z-index: 2000; padding: 12px 24px; border-radius: 8px; color: #fff; font-size: 14px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); animation: fadeIn 0.3s ease-out; `; const colors = { success: '#52c41a', warning: '#faad14', error: '#ff4d4f', info: '#1890ff' }; toast.style.background = colors[type] || colors.success; toast.textContent = message; document.body.appendChild(toast); setTimeout(() => toast.remove(), 3000); }, showConfirm(message, callback) { const overlay = document.createElement('div'); overlay.className = 'modal-overlay show'; overlay.innerHTML = `
确认操作
×
${message}
`; document.body.appendChild(overlay); overlay.querySelector('.confirm-ok').onclick = () => { overlay.remove(); if (callback) callback(); }; overlay.onclick = (e) => { if (e.target === overlay) overlay.remove(); }; } }; document.addEventListener('DOMContentLoaded', () => App.init());
HTML内容
商家后台管理系统
商家后台
Merchant Management System
手机号 / 账号
密码
记住登录
忘记密码?
登 录
还没有账号?
申请入驻
数据概览
首页
/
数据概览
🔔
3
欢迎回来, 张经理
张
发布新商品
×
商品名称
商品类目
请选择类目
男装
女装
初始价格
创建优惠券
×
优惠券类型
满减券
折扣券
无门槛券
面额 (元)
使用门槛 (元)
发行量
有效期
至
新增客服账号
×
登录账号
姓名
角色
售前客服
售后客服
客服主管
初始密码
申请提现
×
可提现余额
¥58,632.50
提现金额
提现方式
银行卡 (招商银行 ****8888)
支付宝 (138****8888)
保存更改
取消
访问码:
c8jbt5ba
复制链接
重新生成