共建者中心

共建者中心页面

.hxeco-wrap, .hxeco-wrap * { box-sizing: border-box; } .hxeco-wrap { width: 100%; background: #f5f7fb; font-family: system-ui, -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif; color: #1e293b; line-height: 1.5; padding: 16px; } .hxeco-container { max-width: 480px; margin: 0 auto; display: flex; flex-direction: column; gap: 13px; } .hxeco-stats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; } .hxeco-stat-item { background: #ffffff; border-radius: 14px; padding: 13px; box-shadow: 0 2px 6px rgba(0,0,0,0.03); border: 1px solid #eef2f6; } .hxeco-stat-label { font-size: 12px; color: #64748b; margin-bottom: 5px; } .hxeco-stat-number { font-size: 22px; font-weight: 700; color: #0f172a; line-height: 1.2; } .hxeco-stat-desc { font-size: 11px; color: #64748b; margin-top: 3px; } .hxeco-accordion { background: #ffffff; border-radius: 14px; border: 1px solid #eef2f6; overflow: hidden; box-shadow: 0 2px 6px rgba(0,0,0,0.02); } .hxeco-accordion-header { width: 100%; padding: 13px 16px; font-weight: 600; font-size: 15px; display: flex; justify-content: space-between; align-items: center; cursor: pointer; background: #ffffff; transition: background 0.2s; border: none; color: #1e293b; text-align: left; } .hxeco-accordion-header:hover { background: #f8fafc; } .hxeco-arrow { font-size: 12px; color: #64748b; transition: transform 0.2s; margin-left: 10px; } .hxeco-accordion-content { padding: 0 16px; max-height: 0; overflow: hidden; transition: max-height 0.3s ease, padding 0.3s ease; } .hxeco-accordion.hxeco-open .hxeco-accordion-content { padding: 13px 16px; max-height: 2200px; } .hxeco-accordion.hxeco-open .hxeco-arrow { transform: rotate(180deg); } .hxeco-mini-table { width: 100%; border-collapse: collapse; font-size: 13px; } .hxeco-mini-table th { background: #f8fafc; font-weight: 600; padding: 8px 6px; border-bottom: 1px solid #e2e8f0; text-align: left; white-space: nowrap; } .hxeco-mini-table td { padding: 8px 6px; border-bottom: 1px solid #f1f5f9; vertical-align: top; } .hxeco-step-row { display: flex; align-items: center; gap: 6px; padding: 6px 0; font-size: 13px; } .hxeco-step-dot { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; flex-shrink: 0; } .hxeco-step-done { background: #dcfce7; color: #166534; } .hxeco-step-current { background: #fef3c7; color: #92400e; } .hxeco-step-pending { background: #f1f5f9; color: #64748b; } .hxeco-legal-box { background: #fefce8; border-left: 3px solid #eab308; padding: 11px 13px; border-radius: 8px; font-size: 12px; color: #5c4b0b; margin-top: 8px; } .hxeco-risk-box { background: #ffffff; border-left-color: #f97316; margin-top: 0; } .hxeco-btn-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; } .hxeco-btn { flex: 1 1 auto; padding: 8px 13px; border-radius: 24px; font-size: 13px; font-weight: 600; text-align: center; text-decoration: none; border: 1px solid #cbd5e1; color: #1e293b; background: #ffffff; white-space: nowrap; transition: all 0.2s; } .hxeco-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 14px rgba(15, 23, 42, 0.08); color: #0f766e; } .hxeco-btn-primary { background: #0f766e; color: #ffffff; border: none; } .hxeco-btn-primary:hover { color: #ffffff; background: #115e59; } .hxeco-footer { text-align: center; font-size: 11px; color: #94a3b8; margin-top: 8px; } .hxeco-loading { text-align: center; color: #64748b; font-size: 13px; padding: 10px 0; } .hxeco-error { display: block; color: #dc2626; font-size: 13px; padding: 10px 0; } .hxeco-empty { text-align: center; color: #64748b; padding: 16px 0; font-size: 13px; } .hxeco-search-box { display: flex; gap: 8px; margin-bottom: 8px; } .hxeco-search-input { flex: 1; min-width: 0; padding: 8px; border: 1px solid #e2e8f0; border-radius: 8px; font-size: 13px; outline: none; } .hxeco-search-input:focus { border-color: #0f766e; box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.12); } .hxeco-search-btn { padding: 8px 16px; background: #0f766e; color: #ffffff; border: none; border-radius: 8px; font-size: 13px; cursor: pointer; white-space: nowrap; } .hxeco-table-scroll { width: 100%; overflow-x: auto; } .hxeco-small-text { font-size: 12px; color: #475569; margin-top: 10px; } .hxeco-progress-text { font-size: 13px; line-height: 1.8; } @media (max-width: 420px) { .hxeco-wrap { padding: 12px; } .hxeco-stats-grid { gap: 9px; } .hxeco-stat-item { padding: 11px; } .hxeco-stat-number { font-size: 19px; } .hxeco-accordion-header { font-size: 14px; padding: 12px 13px; } .hxeco-accordion.hxeco-open .hxeco-accordion-content { padding: 12px 13px; } .hxeco-mini-table { font-size: 12px; } .hxeco-search-box { flex-direction: column; } .hxeco-search-btn { width: 100%; } }
📌 共建阶段
第一阶段
生活事务基础版
💰 单轮目标
30万
目标总额
📊 累计支出
4.8万
截至2026-04-24
🧑‍🤝‍🧑 共建者
--
已获奠基者编号
概念验证 — 核心逻辑可行
用户系统搭建 — 奠基者编号开始发放
原型开发 — 基础功能实现中
内测准备 — 邀请共建者参与体验
🎯 核心目标:帮你管物、管事、管提醒,让生活更有序。
用途分类金额(元)占比
创始人生活补贴16,00033.3%
技术合伙人(全职)12,00025.0%
服务器/域名/工具8,50017.7%
UI设计外包5,00010.4%
推广素材制作3,2006.7%
备用金及其他3,3006.9%
加载中...
加载中...
阶段名称单轮目标
1生活事务基础版30万
2生活事务智能版40万
3社区互助版230万
4智能物联版7700万
5个人智能版7000万
6生态开放版3.5亿
(function() { const CSV_URL = 'YOUR_CSV_URL'; let allData = []; const root = document.currentScript.previousElementSibling; const totalMembersEl = root.querySelector('[data-hxeco-total-members]'); const starTableEl = root.querySelector('[data-hxeco-star-table]'); const fullTableEl = root.querySelector('[data-hxeco-full-table]'); const searchInputEl = root.querySelector('[data-hxeco-search-input]'); const searchBtnEl = root.querySelector('[data-hxeco-search-btn]'); function escapeHtml(value) { return String(value || '') .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); } function parseCSV(text) { const rows = []; let row = []; let value = ''; let insideQuotes = false; for (let i = 0; i cell !== '')) rows.push(row); row = []; value = ''; } else { value += char; } } if (value || row.length) { row.push(value.trim()); if (row.some(cell => cell !== '')) rows.push(row); } if (rows.length item.trim()); return rows.slice(1).map(items => { const obj = {}; headers.forEach((header, index) => { obj[header] = items[index] || ''; }); return obj; }).filter(item => Object.values(item).some(v => String(v).trim() !== '')); } function renderStarTable(data) { if (!data.length) { starTableEl.innerHTML = '
暂无共建者数据
'; return; } const top5 = data.slice(0, 5); let html = '
'; top5.forEach(row => { html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; }); html += '
编号贡献类型贡献值区间档位
#' + escapeHtml(row['奠基者编号']) + '' + escapeHtml(row['贡献类型']) + '' + escapeHtml(row['贡献值区间']) + '' + escapeHtml(row['档位']) + '
'; html += '
💡 完整记录见下方明细表。个人凭“编号+身份证后4位”查询本人数据。
'; starTableEl.innerHTML = html; } function renderFullTable(data, keyword) { let filteredData = data; const text = String(keyword || '').trim().toLowerCase(); if (text) { filteredData = data.filter(row => { return String(row['奠基者编号'] || '').toLowerCase().includes(text) || String(row['档位'] || '').toLowerCase().includes(text) || String(row['贡献类型'] || '').toLowerCase().includes(text) || String(row['贡献值区间'] || '').toLowerCase().includes(text) || String(row['参与阶段'] || '').toLowerCase().includes(text) || String(row['加入时间'] || '').toLowerCase().includes(text); }); } if (!filteredData.length) { fullTableEl.innerHTML = '
没有匹配的记录
'; return; } let html = ''; filteredData.forEach(row => { html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; }); html += '
编号贡献值区间档位参与阶段加入时间贡献类型
#' + escapeHtml(row['奠基者编号']) + '' + escapeHtml(row['贡献值区间']) + '' + escapeHtml(row['档位']) + '' + escapeHtml(row['参与阶段']) + '' + escapeHtml(row['加入时间']) + '' + escapeHtml(row['贡献类型']) + '
'; html += '
共 ' + filteredData.length + ' 条记录
'; fullTableEl.innerHTML = html; } function updateTotalMembers(count) { totalMembersEl.textContent = count; } function showCsvNotice() { starTableEl.innerHTML = '请先替换 CSV_URL 为你的 Google Sheets CSV 链接'; fullTableEl.innerHTML = '请先替换 CSV_URL 为你的 Google Sheets CSV 链接'; totalMembersEl.textContent = '--'; } async function loadData() { if (!CSV_URL || CSV_URL === 'YOUR_CSV_URL') { showCsvNotice(); return; } try { const response = await fetch(CSV_URL + (CSV_URL.includes('?') ? '&' : '?') + '_=' + Date.now(), { cache: 'no-store' }); if (!response.ok) { throw new Error('网络错误'); } const csvText = await response.text(); allData = parseCSV(csvText); renderStarTable(allData); renderFullTable(allData, searchInputEl.value); updateTotalMembers(allData.length); } catch (err) { starTableEl.innerHTML = '加载失败,请检查 CSV 链接是否公开'; fullTableEl.innerHTML = '加载失败,请检查 CSV 链接是否公开'; totalMembersEl.textContent = '--'; } } root.querySelectorAll('.hxeco-accordion-header').forEach(button => { button.addEventListener('click', function() { this.closest('.hxeco-accordion').classList.toggle('hxeco-open'); }); }); searchBtnEl.addEventListener('click', function() { renderFullTable(allData, searchInputEl.value); }); searchInputEl.addEventListener('keydown', function(e) { if (e.key === 'Enter') { renderFullTable(allData, searchInputEl.value); } }); loadData(); setInterval(loadData, 5 * 60 * 1000); })();