大盈家科技

项目经营中枢 · 出资 / 进销存 / 开支 / 透明分润 / 投资协议
正在连接本地服务…

一个项目,一笔账,分得清清楚楚

线下实体 or 线上一人,按项目单独配置出资与分润。经营过程全记录,利润与分润自动核算、可追溯到每一笔,一键生成投资协议。

项目列表
📁
还没有项目。点「新建项目」或「载入示例」开始。
客户 / 商机 合作为主:客户与引荐/执行合作方统一管理
客户 / 渠道
商机(含引荐/执行跟进)
`; const w = window.open('', '_blank'); w.document.write(html); w.document.close(); } async function uiDeleteProject(id) { if (!confirm('确定删除该项目及其全部经营 / 分润记录?此操作不可恢复。')) return; try { const r = await api('DELETE', '/api/projects/' + id); if (r && r.error) { toast(r.error, true); return; } if (state.sel === id) state.sel = null; toast('已删除项目 #' + id); loadProjects(); } catch (e) { toast('失败:' + e.message, true); } } async function uiDeleteEntry(kind, eid) { if (!confirm('删除这条记录?')) return; const id = state.sel; try { const r = await api('DELETE', `/api/projects/${id}/${kind}/${eid}`); if (r && r.error) { toast(r.error, true); return; } toast('已删除该记录'); selectProject(id); } catch (e) { toast('失败:' + e.message, true); } } async function exportData() { try { const r = await fetch('/api/export'); const text = await r.text(); const blob = new Blob([text], { type: 'application/json' }); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'dayingjia-backup-' + new Date().toISOString().slice(0, 10) + '.json'; a.click(); toast('已导出数据备份'); } catch (e) { toast('导出失败:' + e.message, true); } } async function importData(input) { const f = input.files[0]; if (!f) return; const r = new FileReader(); r.onload = async () => { try { const d = JSON.parse(r.result); await api('POST', '/api/import', d); toast('已导入数据,刷新列表'); loadProjects(); } catch (e) { toast('导入失败:' + e.message, true); } input.value = ''; }; r.readAsText(f); } /* ============ 启动:先连服务,再加载 ============ */ (async () => { let ok = false; try { const r = await fetch('/api/health'); ok = r.ok; } catch (e) {} const conn = document.getElementById('conn'); if (ok) { conn.className = 'connok'; conn.innerHTML = '✅ 已连接本地服务,数据自动保存到本机文件。 导出备份 · '; loadProjects(); } else { conn.className = 'connerr'; conn.innerHTML = '⚠ 未连接到本地服务。请通过桌面「大盈家结算系统」快捷方式(启动.bat)打开本系统,不要直接双击 app.html。'; } })(); /* ============ 投资协议生成 ============ */ function openAgreement() { const d = state.dash; if (!d) { toast('请先选择一个项目', true); return; } const p = d.project; const today = new Date(); const dateStr = today.getFullYear() + '年' + (today.getMonth() + 1) + '月' + today.getDate() + '日'; // 动态股权阶段描述 let stageDesc = ''; if (p.splitMode === 'DYNAMIC' && d.dynamicStage) { const s = d.dynamicStage; stageDesc = ` 第四条 动态股权机制 本项目的分红比例根据项目发展阶段动态调整,具体如下: | 阶段 | 触发条件 | 资金股 | 管理股 | 技术股 | |------|----------|--------|--------|--------| | 启动期 | 累计回款 < 总投资 | 70% | 20% | 10% | | 回本期 | 回款 ≥ 总投资,净利润 < 50%投资 | 50% | 40% | 10% | | 盈利期 | 净利润 ≥ 50%投资 | 30% | 60% | 10% | 当前阶段:${s.stageName} - 资金股占比:${(s.ratios.capital * 100).toFixed(0)}% - 管理股占比:${(s.ratios.management * 100).toFixed(0)}% - 技术股占比:${(s.ratios.tech * 100).toFixed(0)}% 该机制确保:资金承担前期风险获得较高回报,经营能力在盈利期获得主导回报。`; } // 出资人列表 const investorList = p.investors.map(inv => { const cap = d.investorsCap.find(c => c.id === inv.id); const capAmt = cap ? cap.current : 0; const ratio = d.totalCapital > 0 ? (capAmt / d.totalCapital * 100).toFixed(2) : '0'; const invData = p.investors.find(x => x.id === inv.id); const isPureCapital = invData && !invData.managementShare && !invData.techShare; const rights = isPureCapital ? '仅分红权,不参与经营' : '分红权 + 管理股/技术股收益'; return `- ${inv.name}:出资人民币 ${yuan(capAmt)},占比 ${ratio}%。权利范围:${rights}`; }).join('\n'); const agreementText = ` # 项目投资协议 **项目名称**:${p.name} **签署日期**:${dateStr} --- ## 第一条 项目概况 1. 项目名称:${p.name} 2. 项目类型:${p.type === 'OFFLINE' ? '线下实体项目' : '线上项目'} 3. 总投资额:人民币 ${yuan(p.totalInvest)} 4. 运营管理方:大盈家科技(或约定的运营负责人) --- ## 第二条 出资结构 ${investorList} --- ## 第三条 权利范围 1. **分红权**:各出资人按出资比例享有项目的利润分红权。 2. **经营管理权**: - 项目的日常经营管理权归大盈家科技或约定的运营负责人。 - 纯资金出资人(未持有管理股/技术股者)不参与项目的日常经营管理决策。 3. **财务知情权**:各出资人有权查阅项目的经营报表,了解营收、成本、利润等财务状况。 4. **人事任免权**:项目的人事任免权归运营管理方,出资人不得干预。 ${stageDesc} --- ## 第五条 分红结算 1. 分红按净利润计算,净利润 = 营收 - 进货成本 - 运营开支 - 大盈家运营/平台费。 2. 分红结算周期:按月/季度/年度(双方约定)。 3. 分红支付方式:银行转账至各出资人指定账户。 --- ## 第六条 退出机制 1. 出资人如需退出,需提前 30 天书面通知运营管理方。 2. 退资金额按当前实际出资额结算(不含未实现利润)。 3. 如项目已盈利,退资人可按约定获得应得分红后再退出。 --- ## 第七条 风险承担 1. 项目经营风险由全体出资人按出资比例共同承担。 2. 如项目亏损,各出资人仅以其出资额为限承担责任,不承担连带责任。 --- ## 第八条 协议生效 本协议自各出资人签字之日起生效,一式${p.investors.length + 1}份,各出资人各执一份,运营管理方执一份,具有同等法律效力。 --- ## 签署栏 ${p.investors.map(inv => ` **${inv.name}**(出资人) 签字:________________ 日期:________________ 身份证号:__________________________ `).join('\n')} **大盈家科技**(运营管理方) 签字:________________ 日期:________________ 盖章:________________ `; // 显示协议 document.getElementById('agreementContent').innerHTML = agreementText.replace(/\n/g, '
').replace(/##/g, '').replace(/\*\*(.+?)\*\*/g, '$1'); document.getElementById('agreementModal').classList.add('show'); } function closeAgreementModal() { document.getElementById('agreementModal').classList.remove('show'); } function downloadAgreement() { const content = document.getElementById('agreementContent').innerText; const d = state.dash; if (!d) return; const filename = d.project.name + '_投资协议_' + new Date().toISOString().slice(0,10) + '.txt'; const blob = new Blob([content], { type: 'text/plain;charset=utf-8' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = filename; a.click(); URL.revokeObjectURL(url); toast('协议已下载'); }