根据提供的统计摘要,我看到有3个文件发生了变化:

- 新增了一个关于汇率预测的markdown文件(125行新增)
- 修改了一个工作计划汇报的HTML文件(大量修改)
- 新增了一个统计计算器的HTML文件(451行新增)

基于这些变化,生成的常规提交信息如下:

feat: 新增汇率预测文档和统计计算器功能

- 新增汇率预测相关的markdown文档
- 新增统计计算器HTML页面,提供数据分析功能
- 重构工作计划汇报页面,优化内容结构和布局
This commit is contained in:
史悦
2025-09-16 15:51:00 +08:00
parent 5c9a60ee27
commit 0d7d5b0a43
3 changed files with 955 additions and 411 deletions

View File

@@ -0,0 +1,125 @@
### **第一部分:关键数据假设与市场调研**
为了让财务模型尽可能贴近现实,我们首先需要基于公开数据和行业惯例,对几个核心运营指标进行合理假设。
#### **假设1回收品类与价格**
四线城市废品回收价格相对稳定,但利润空间较一线城市薄。我们选取最常见、居民产生量最大的**废纸板**和**塑料瓶**作为核心分析对象。
* **废纸板 (黄板纸)**
* **回收价 (给用户)**:¥ 0.8元/公斤 (¥ 0.4元/斤)
* **出售价 (给打包站)**:¥ 1.2元/公斤 (¥ 0.6元/斤)
* **毛利**:¥ 0.4元/公斤
* **塑料瓶 (PET)**
* **回收价 (给用户)**:¥ 1.4元/公斤 (¥ 0.7元/斤)
* **出售价 (给打包站)**:¥ 2.0元/公斤 (¥ 1.0元/斤)
* **毛利**:¥ 0.6元/公斤
> **分析**:价差是核心盈利来源。这个价差需要覆盖场地、物流、设备折旧、运营等所有成本。
#### **假设2单站点日均回收量**
这是决定收入的关键变量,也是最难预测的。一个部署在超市或快递驿站门口的回收点,其回收量受社区大小、居民习惯、竞争等多种因素影响。参考行业数据,我们做一个**保守的**估算。
* **覆盖户数**:假设站点能有效覆盖周边 300-500 户常住居民。
* **日均有效投递户数**:假设每天有 5% 的家庭前来投递,即 15-25 户。
* **平均每户投递量**:假设每户平均投递 1.5 公斤的可回收物。
* **日均总回收量**22.5公斤 - 37.5公斤。为方便计算,我们取一个中间值 **30公斤/天**
* **品类构成**:根据生活经验,废纸板通常占大头。我们假设 **废纸板:塑料瓶 = 2:1**
* 废纸板20公斤/天
* 塑料瓶10公斤/天
#### **假设3运营成本参数**
* **场地合作费 (给超市/驿站)**:在四线城市,直接给付高额租金不现实。采用**利润分成**或**低额固定费用**是主流。我们按 **“营业额的10%”** 作为场地合作费,这样能更好地激励合作伙伴。
* **物流清运成本**假设一个物流人员兼职或专职配备一辆三轮车每天可负责清运10-15个站点。单个站点的清运成本被摊薄。
* 人员薪资(四线城市):¥ 3000/月
* 车辆折旧及电费:¥ 300/月
* 总物流成本:¥ 3300/月
* **分摊到单站的月物流成本** (按15个站计算):¥ 3300 / 15 = **¥ 220/月**
* **设备维护与网络费**您的计划书中提到200元/月这在初期可能偏高。我们采用一个更贴近实际的估算硬件年度维护成本5%+ 物联网卡及服务器费用。
* (¥ 1500 * 5%) / 12个月 + ¥ 20/月 ≈ **¥ 27/月**
* **其他运营成本**:包括小程序维护、客服、可能的坏账损失等,计提 **¥ 50/月**。
---
### **第二部分:单站点财务模型分析 (月度)**
基于以上假设,我们来构建一个单站点的月度财务模型。
#### **A. 月度收入估算**
* **月总回收量**:
* 废纸板: 20公斤/天 * 30天 = 600公斤
* 塑料瓶: 10公斤/天 * 30天 = 300公斤
* **月度毛利 (收入)**:
* 废纸板毛利: 600公斤 * ¥ 0.4/公斤 = ¥ 240
* 塑料瓶毛利: 300公斤 * ¥ 0.6/公斤 = ¥ 180
* **合计月度毛利**: ¥ 240 + ¥ 180 = **¥ 420**
#### **B. 月度成本估算**
1. **给用户的回收金 (变动成本)**
* 废纸板: 600公斤 * ¥ 0.8 = ¥ 480
* 塑料瓶: 300公斤 * ¥ 1.4 = ¥ 420
* **合计回收金**: ¥ 900
2. **月度运营成本 (固定成本)**
* **场地合作费**: (¥ 480 + ¥ 420) * 10% = **¥ 90**
* **物流清运成本**: **¥ 220**
* **设备维护网络费**: **¥ 27**
* **其他运营成本**: **¥ 50**
* **合计月度运营成本**: ¥ 90 + ¥ 220 + ¥ 27 + ¥ 50 = **¥ 387**
#### **C. 月度利润计算**
* **单站月度净利润** = 月度毛利 - 月度运营成本
* **单站月度净利润** = ¥ 420 - ¥ 387 = **¥ 33**
---
### **第三部分:投资回报分析**
#### **1. 初始投资成本 (CAPEX)**
* 设备投入: ¥ 1500
* 部署成本: ¥ 300 (如您计划书所述)
* **单站总投资**: **¥ 1800**
#### **2. 投资回收期 (Payback Period)**
* **计算公式**: 总投资 / 月度净利润
* **回收期**: ¥ 1800 / ¥ 33/月 ≈ **54.5个月**
#### **3. 年化投资回报率 (Annual ROI)**
* **计算公式**: (年净利润 / 总投资) * 100%
* **年净利润**: ¥ 33/月 * 12个月 = ¥ 396
* **年化ROI**: (¥ 396 / ¥ 1800) * 100% = **22%**
---
### **第四部分:结论与专业建议**
#### **分析结论**
1. **盈利能力非常脆弱**在当前保守的回收量假设下单个站点的月净利润仅为33元。这意味着模型对任何变量的波动都极其敏感。例如如果日均回收量下降到25公斤项目就会开始亏损。
2. **投资回收期过长**54.5个月约4年半的回收期对于一个硬件设备可能只有3-5年寿命的轻资产项目来说风险非常高。在收回成本之前设备可能就需要更新换代了。
3. **规模效应是关键**:单个站点无法盈利,但项目的核心在于通过规模化运营来摊薄成本、提升效率。特别是**物流成本**,只有当一个清运人员能覆盖足够多的站点时,单站成本才能降下来。
#### **专业建议与破局之道**
您的商业模式很有潜力,但必须优化财务模型才能走通。以下是几条关键建议:
1. **提升单点回收量是第一要务**
* **精准选址**:必须选择社区活跃度高、老年人多、且周边缺少竞争的“黄金点位”。前期需要投入大量精力进行地推和市场调研。
* **强效地推和用户教育**您的营销策略非常正确。“回收换鸡蛋”等活动虽然会短期增加成本但如果能将日均回收量从30公斤提升到50公斤整个模型就会发生质变月净利将超过200元回收期缩短至1年以内
2. **优化成本结构**
* **降低物流成本**能否与驿站或超市老板达成更深度的合作由他们进行“暂存”和“集包”当废品达到一定量级如500公斤您再派车统一清运这将极大降低物流频次和成本。
* **探索“众包物流”**:利用社区内的闲散劳动力(如三轮车主、退休人员),以订单制或兼职形式进行清运,进一步降低固定的人力成本。
3. **开拓多元化收入来源**
* **押注高价值品类**:除了纸板和塑料,能否增加对**旧衣物、金属(易拉罐)**等高毛利品类的回收?特别是旧衣物,其回收和处理链条利润空间更大。
* **广告收入前置**在设备屏幕和微信小程序上为社区周边的商家如小餐馆、理发店、菜市场摊主提供极其廉价如50-100元/月)的广告位。这笔收入虽然不多,但在项目初期可能是“救命钱”,可以直接覆盖掉一部分运营成本。
* **政府补贴**:积极与当地街道、环保部门沟通。垃圾分类和资源回收是政府的重点工作,很有可能申请到环保项目试点补贴或一次性的设备购置补贴,这将极大改善您的初始投资压力。

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
@@ -29,80 +29,54 @@
.no-print { display: none !important; }
}
/* 精益画布样式 */
.lean-canvas-grid {
display: flex;
flex-direction: column;
gap: 1rem;
max-width: 100%;
margin: 0 auto;
}
.canvas-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1rem;
align-items: start;
}
.canvas-box {
border: 2px solid;
border-radius: 0.5rem;
background: white;
overflow: hidden;
min-height: 200px;
display: flex;
flex-direction: column;
}
.canvas-tall {
min-height: 400px;
}
.canvas-wide {
grid-column: 1 / -1;
min-height: 150px;
}
.canvas-header {
padding: 0.5rem 1rem;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: bold;
}
.canvas-title {
font-size: 1rem;
font-weight: bold;
margin: 0;
}
.canvas-number {
font-size: 1.5rem;
font-weight: bold;
opacity: 0.7;
}
.canvas-content {
padding: 1rem;
flex-grow: 1;
}
@media (max-width: 768px) {
.canvas-row {
grid-template-columns: 1fr;
}
.canvas-box {
min-height: 150px;
}
.canvas-tall {
min-height: 200px;
}
}
</style>
/* 精益画布样式 */
.lean-canvas-grid {
display: grid;
grid-template-columns: repeat(3, minmax(240px, 1fr));
gap: 1.5rem;
}
@media (max-width: 1280px) {
.lean-canvas-grid {
grid-template-columns: repeat(2, minmax(240px, 1fr));
}
}
@media (max-width: 768px) {
.lean-canvas-grid {
grid-template-columns: 1fr;
}
}
.canvas-box {
border: 2px solid;
border-radius: 0.75rem;
background: white;
overflow: hidden;
display: flex;
flex-direction: column;
min-height: 100%;
}
.canvas-header {
padding: 0.75rem 1rem;
display: flex;
align-items: center;
font-weight: bold;
justify-content: flex-start;
gap: 0.5rem;
}
.canvas-title {
font-size: 1rem;
font-weight: bold;
margin: 0;
}
.canvas-content {
padding: 1.25rem;
flex-grow: 1;
}\r\n </style>
</head>
<body class="bg-gray-50 font-sans">
<!-- 导航栏 -->
@@ -110,7 +84,7 @@
<div class="max-w-7xl mx-auto flex justify-between items-center">
<h1 class="text-2xl font-bold">服到家 商业规划</h1>
<div class="text-sm opacity-90">
面向股东汇报 | 2024年
2024年-9月
</div>
</div>
</nav>
@@ -125,7 +99,7 @@
服到家智能回收平台
</h1>
<p class="text-xl text-gray-600 mb-6">
基于AI机器人技术的智能废品回收解决方案
智能废品回收解决方案
</p>
<div class="flex flex-wrap justify-center gap-4 text-sm">
<span class="bg-primary text-white px-4 py-2 rounded-full">智能终端</span>
@@ -147,341 +121,331 @@
</div>
</section>
<!-- 核心问题与解决方案 -->
<section class="mb-12">
<h2 class="text-3xl font-bold text-gray-800 mb-8 text-center">市场需求分析</h2>
<div class="grid md:grid-cols-2 gap-8">
<!-- 问题 -->
<div class="bg-white rounded-xl p-6 section-shadow">
<h3 class="text-xl font-bold text-red-600 mb-4 flex items-center">
<span class="w-8 h-8 bg-red-100 rounded-full flex items-center justify-center mr-3">
<span class="text-red-600 font-bold">!</span>
</span>
核心痛点
</h3>
<div class="space-y-4">
<div>
<h4 class="font-semibold text-gray-800 mb-2">居民侧痛点</h4>
<ul class="text-gray-600 space-y-1 text-sm">
<li>• 卖废品麻烦,需囤积等人</li>
<li>• 老人操作困难,现有方案不友好</li>
<li>• 价格不透明,缺乏信任</li>
</ul>
</div>
<div>
<h4 class="font-semibold text-gray-800 mb-2">商家侧痛点</h4>
<ul class="text-gray-600 space-y-1 text-sm">
<li>• 人工成本高,需专人管理</li>
<li>• 技术门槛高,缺乏智能方案</li>
<li>• 流动回收车时间不固定</li>
</ul>
</div>
</div>
</div>
<!-- 解决方案 -->
<div class="bg-white rounded-xl p-6 section-shadow">
<h3 class="text-xl font-bold text-blue-600 mb-4 flex items-center">
<span class="w-8 h-8 bg-blue-100 rounded-full flex items-center justify-center mr-3">
<span class="text-blue-600 font-bold"></span>
</span>
智能解决方案
</h3>
<div class="space-y-4">
<div>
<h4 class="font-semibold text-gray-800 mb-2">智能终端系统</h4>
<ul class="text-gray-600 space-y-1 text-sm">
<li>• 平板显示二维码供扫描</li>
<li>• AI摄像头自动识别分类</li>
<li>• 自动称重计价,价格透明</li>
<li>• 大字体显示,适老化设计</li>
</ul>
</div>
<div>
<h4 class="font-semibold text-gray-800 mb-2">多角色管理</h4>
<ul class="text-gray-600 space-y-1 text-sm">
<li>• 普通用户/管理员/清运员</li>
<li>• 统一平台,智能分权</li>
</ul>
</div>
</div>
</div>
</div>
<!-- 核心问题与解决方案 -->
<section class="mb-12">
<h2 class="text-3xl font-bold text-gray-800 mb-8 text-center">市场需求分析</h2>
<div class="grid md:grid-cols-2 gap-8">
<div class="bg-white rounded-xl p-6 section-shadow">
<h3 class="text-xl font-bold text-primary mb-4">机会洞察</h3>
<p class="text-gray-600 mb-4 text-sm leading-relaxed">
城市居民生活垃圾分类要求逐步常态化,《“十四五”循环经济发展规划》和多地再生资源补贴政策正在加速推进可回收物闭环管理。
结合《废品回收小程序PRD V2.0》和《商业计划书-绿邻回收》中的用户调研数据,我们将市场需求聚焦在“人工引导+自助投递”的混合服务路径,既保留人情温度,又发挥数字化效率。
</p>
<ul class="space-y-3 text-gray-600 text-sm leading-relaxed">
<li class="flex items-start">
<span class="text-primary mr-2"></span>
<span>政策驱动:双碳目标、城市生活垃圾分类条例以及社区积分激励,持续拉动规范化回收服务需求。</span>
</li>
<li class="flex items-start">
<span class="text-primary mr-2"></span>
<span>需求缺口:一线及新一线城市社区回收设施覆盖率长期偏低,夜间和节假日服务能力严重不足。</span>
</li>
<li class="flex items-start">
<span class="text-primary mr-2"></span>
<span>服务模式升级:站点合作商提供现场轻引导,配合自助终端完成称重、计价与结算,显著降低老年人使用门槛。</span>
</li>
</ul>
<div class="mt-6">
<h4 class="font-semibold text-gray-800 mb-2">核心痛点</h4>
<ul class="grid grid-cols-1 gap-3 text-gray-600 text-sm leading-relaxed">
<li class="flex items-start">
<span class="text-primary mr-2 mt-0.5"></span>
<span>居民端:缺乏可信的陪伴式引导,担心操作出错或被骗价,尤其是老年群体需要面对面协助才能建立信任。</span>
</li>
<li class="flex items-start">
<span class="text-primary mr-2 mt-0.5"></span>
<span>场地方:希望利用现有店员或管理员扩展环保服务,但缺少标准化流程与收益核算工具。</span>
</li>
<li class="flex items-start">
<span class="text-primary mr-2 mt-0.5"></span>
<span>运营端:人工引导、库存监控与清运调度尚未数据化,缺乏对一线人员培训与绩效的统一管理手段。</span>
</li>
</ul>
</div>
</div>
<div class="bg-white rounded-xl p-6 section-shadow">
<h3 class="text-xl font-bold text-secondary mb-4">目标客群与价值主张</h3>
<div class="space-y-4 text-sm text-gray-600 leading-relaxed">
<div>
<h4 class="font-semibold text-gray-800 mb-2">C端家庭用户</h4>
<p>以“王大妈”“小张”等画像为代表用户希望有人在旁提醒关键步骤同时保持流程像ATM一样简洁透明。</p>
<ul class="list-disc pl-5 space-y-1">
<li>现场引导人员完成身份确认和品类选择,自助终端负责称重、计价与到账。</li>
<li>AI识别+自动称重即时计价,配合引导人员提示异常,确保价格透明可追溯。</li>
<li>小程序记录交易历史,线下讲解绿色积分和环保成就,强化复购动机。</li>
</ul>
</div>
<div>
<h4 class="font-semibold text-gray-800 mb-2">B端场地方</h4>
<p>社区商超、快递站、物业等场景已有店员或管理员,可在闲时提供引导服务并分享收益。</p>
<ul class="list-disc pl-5 space-y-1">
<li>模块化终端占地小、噪音低,支持与收银台或服务台联动,强化品牌环保形象。</li>
<li>系统提供收益分成报表、人员培训指引和异常提示,帮助场地方清楚掌握投入产出。</li>
<li>结合线下宣传活动和会员体系,引导用户形成定期到店的回收习惯。</li>
</ul>
</div>
<div>
<h4 class="font-semibold text-gray-800 mb-2">运营与清运团队</h4>
<p>需要标准化的后台系统支撑人工引导与自助投递协同,降低人力密度并提升数据决策能力。</p>
<ul class="list-disc pl-5 space-y-1">
<li>统一后台实时监控库存、人员值守与异常情况,自动派发清运和补货任务。</li>
<li>运维APP记录巡检、培训签到与备件管理帮助一线引导员快速响应问题。</li>
<li>可视化数据看板支持设备与人员绩效排名、品类趋势等精细化运营指标。</li>
</ul>
</div>
</div>
</div>
</div>
<div class="grid md:grid-cols-3 gap-6 mt-8">
<div class="bg-white rounded-xl p-5 section-shadow text-center">
<div class="text-2xl font-bold text-primary mb-1">10-15台</div>
<p class="text-sm text-gray-600">MVP阶段计划投放终端数量与站点店员配合验证“人工引导+自助投递”协同模式。</p>
</div>
<div class="bg-white rounded-xl p-5 section-shadow text-center">
<div class="text-2xl font-bold text-secondary mb-1">15笔/台/日</div>
<p class="text-sm text-gray-600">目标单台日均交易量匹配引导人员轮班安排和PRD设定的复购率40%。</p>
</div>
<div class="bg-white rounded-xl p-5 section-shadow text-center">
<div class="text-2xl font-bold text-accent mb-1">3000元</div>
<p class="text-sm text-gray-600">单台设备投入与培训成本回收目标,支撑场地方引导人力与数字化系统的可持续运营。</p>
</div>
</div>
</section>
<!-- 产品画布 -->
<section class="mb-12">
<h2 class="text-3xl font-bold text-gray-800 mb-8 text-center">产品精益画布</h2>
<div class="bg-white rounded-xl p-6 section-shadow">
<div class="text-center mb-6">
<h3 class="text-2xl font-bold text-primary mb-2">微信扫一扫,老少皆宜智能回收</h3>
<p class="text-gray-600">基于AI机器人技术的全自动化废品回收解决方案</p>
</div>
<!-- HTML画布 -->
<div class="lean-canvas-grid">
<!-- 第一行 -->
<div class="canvas-row">
<!-- 问题 - 跨两行 -->
<div class="canvas-box canvas-tall bg-red-50 border-red-200">
<div class="canvas-header bg-red-100">
<h4 class="canvas-title text-red-800">问题</h4>
<span class="canvas-number">1</span>
</div>
<div class="canvas-content">
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">居民痛点:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 卖废品麻烦,需囤积等人</li>
<li>• 老人操作困难,现有方案不友好</li>
<li>• 价格不透明,缺乏信任</li>
</ul>
</div>
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">商家痛点:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 人工成本高,需专人管理</li>
<li>• 技术门槛高,缺乏智能方案</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">现有替代方案局限:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 流动回收车时间不固定</li>
<li>• 人工回收点成本高</li>
</ul>
</div>
</div>
</div>
<!-- 解决方案 -->
<div class="canvas-box bg-blue-50 border-blue-200">
<div class="canvas-header bg-blue-100">
<h4 class="canvas-title text-blue-800">解决方案</h4>
<span class="canvas-number">4</span>
</div>
<div class="canvas-content">
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">智能终端系统:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 平板显示二维码供扫描</li>
<li>蓝牙电子秤自动称重</li>
<li>大字体显示金额重量</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">多角色管理:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 普通用户/管理员/清运员</li>
<li>• 统一平台,智能分权</li>
</ul>
</div>
</div>
</div>
<!-- 独特卖点 - 跨两行 -->
<div class="canvas-box canvas-tall bg-orange-50 border-orange-200">
<div class="canvas-header bg-orange-100">
<h4 class="canvas-title text-orange-800">独特卖点</h4>
<span class="canvas-number">3</span>
</div>
<div class="canvas-content">
<div class="text-center mb-4">
<p class="font-bold text-orange-600 text-sm leading-relaxed">
微信扫一扫,<br>老少皆宜智能回收
</p>
</div>
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">对用户价值:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>扫码即用,操作超简单</li>
<li>• 价格透明,立即到账</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">对商家价值:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>零人工成本,智能管理</li>
<li>• 稳定增收,吸引客流</li>
</ul>
</div>
</div>
</div>
<!-- 门槛优势 -->
<div class="canvas-box bg-pink-50 border-pink-200">
<div class="canvas-header bg-pink-100">
<h4 class="canvas-title text-pink-800">门槛优势</h4>
<span class="canvas-number">9</span>
</div>
<div class="canvas-content">
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">产品壁垒:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 老人友好设计(市场空白)</li>
<li>• 低成本智能化方案</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">运营壁垒:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 点位网络效应</li>
<li>• 先发优势抢占资源</li>
</ul>
</div>
</div>
</div>
<!-- 客户群体分类 - 跨两行 -->
<div class="canvas-box canvas-tall bg-green-50 border-green-200">
<div class="canvas-header bg-green-100">
<h4 class="canvas-title text-green-800">客户群体分类</h4>
<span class="canvas-number">2</span>
</div>
<div class="canvas-content">
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">核心用户 (C端):</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 社区中老年人 (扫码即用)</li>
<li>• 环保意识强的年轻家庭</li>
<li>图方便的上班族</li>
</ul>
</div>
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">合作伙伴 (B端):</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 社区超市、便利店</li>
<li>快递驿站、物业服务点</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">需求特征:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 操作简单、零成本增收</li>
<li>智能化管理、吸引客流</li>
</ul>
</div>
</div>
</div>
</div>
<!-- 第二行 -->
<div class="canvas-row">
<!-- 关键指标 -->
<div class="canvas-box bg-teal-50 border-teal-200">
<div class="canvas-header bg-teal-100">
<h4 class="canvas-title text-teal-800">关键指标</h4>
<span class="canvas-number">8</span>
</div>
<div class="canvas-content">
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">运营指标:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 单终端日均交易量</li>
<li>• 终端网络覆盖社区数</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">用户指标:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 操作成功率、用户满意度</li>
<li>• 用户复购率、推荐率</li>
</ul>
</div>
</div>
</div>
<!-- 渠道 -->
<div class="canvas-box bg-purple-50 border-purple-200">
<div class="canvas-header bg-purple-100">
<h4 class="canvas-title text-purple-800">渠道</h4>
<span class="canvas-number">5</span>
</div>
<div class="canvas-content">
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">线下布点:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 社区超市、快递站合作</li>
<li>与物业/居委会合作</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">用户触达:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 微信生态扫一扫直达</li>
<li>业主群推广分享</li>
</ul>
</div>
</div>
</div>
</div>
<!-- 第三行 -->
<div class="canvas-row">
<!-- 成本分析 - 跨列 -->
<div class="canvas-box canvas-wide bg-yellow-50 border-yellow-200">
<div class="canvas-header bg-yellow-100">
<h4 class="canvas-title text-yellow-800">成本分析</h4>
<span class="canvas-number">7</span>
</div>
<div class="canvas-content">
<div class="grid md:grid-cols-3 gap-4">
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">单点成本:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 硬件成本: 1000元/终端</li>
<li>• 部署成本: 2000元/点</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">运营成本:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 技术维护、云服务</li>
<li>• 清运物流、客服支持</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-1">分成成本:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 与场地方交易额分账</li>
</ul>
</div>
</div>
</div>
</div>
<!-- 收入分析 - 跨列 -->
<div class="canvas-box canvas-wide bg-green-50 border-green-200">
<div class="canvas-header bg-green-100">
<h4 class="canvas-title text-green-800">收入分析</h4>
<span class="canvas-number">6</span>
</div>
<div class="canvas-content">
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">主要收入流:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 废品回收差价 (终端回收价 vs 批发销售价的差额) - 核心收入</li>
<li>• 与合作场地按交易量分成 - 激励合作</li>
</ul>
</div>
<div class="mb-3">
<p class="font-semibold text-gray-800 text-sm mb-1">增值收入流:</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 规模化后的数据服务收入</li>
<li>• 绿色积分商城佣金</li>
</ul>
</div>
<div class="text-center bg-green-100 rounded p-2 mt-2">
<p class="text-sm font-bold text-green-700">单点投入1500元预期4-10个月回本</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- 用户故事与场景 -->
<!-- 产品画布 -->
<section class="mb-12">
<h2 class="text-3xl font-bold text-gray-800 mb-8 text-center">产品精益画布</h2>
<div class="bg-white rounded-xl p-6 section-shadow">
<div class="text-center mb-6">
<h3 class="text-2xl font-bold text-primary mb-2">微信扫一扫,人工引导+自助协作回收</h3>
<p class="text-gray-600">基于AI识别与轻量人力协同的社区回收解决方案</p>
</div>
<div class="lean-canvas-grid">
<div class="canvas-box bg-red-50 border-red-200">
<div class="canvas-header bg-red-100">
<h4 class="canvas-title text-red-800">问题与洞察</h4>
</div>
<div class="canvas-content">
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">居民痛点</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 卖废品需囤积等待,流程不透明</li>
<li>• 老年人担心操作失误、价格被压</li>
<li>• 缺乏可信的线下陪伴式服务</li>
</ul>
</div>
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">场地方痛点</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 人工记账效率低,员工培训缺标准</li>
<li>• 环保服务无法量化收益与回报</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-2">现有替代方案局限</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 流动回收车时间地点不固定</li>
<li>• 纯人工回收点成本高、体验不佳</li>
</ul>
</div>
</div>
</div>
<div class="canvas-box bg-green-50 border-green-200">
<div class="canvas-header bg-green-100">
<h4 class="canvas-title text-green-800">目标客群</h4>
</div>
<div class="canvas-content">
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">C端核心用户</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 社区中老年居民:需要面对面引导保障安全感</li>
<li>• 环保意识强的年轻家庭:追求高效与积分激励</li>
<li>• 上班族:利用碎片化时间快速处理废品</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-2">B端合作伙伴</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>社区超市、便利店、快递驿站</li>
<li>物业服务点、社区管理者</li>
<li>• 具备闲时人力的社区服务商</li>
</ul>
</div>
</div>
</div>
<div class="canvas-box bg-orange-50 border-orange-200">
<div class="canvas-header bg-orange-100">
<h4 class="canvas-title text-orange-800">价值主张</h4>
</div>
<div class="canvas-content">
<div class="text-center mb-4">
<p class="font-bold text-orange-600 text-sm leading-relaxed">
人工引导降低门槛,智能终端保障效率与透明
</p>
</div>
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">服务体验</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 线下引导讲解关键步骤,适老化语音+大字体提示</li>
<li>• 微信小程序记录收益、碳减排成就</li>
</ul>
</div>
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">产品差异化</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 终端融合AI识别与电子称重自动计价</li>
<li>模块化硬件,点位快速部署与维护</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-2">运营壁垒</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 数据驱动的价格与调度体系</li>
<li>标准化培训沉淀引导员操作手册</li>
</ul>
</div>
</div>
</div>
<div class="canvas-box bg-blue-50 border-blue-200">
<div class="canvas-header bg-blue-100">
<h4 class="canvas-title text-blue-800">解决方案</h4>
</div>
<div class="canvas-content">
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">终端+人员协同</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 引导员完成身份核验、品类确认与异常处理</li>
<li>• 自助终端负责识别、称重、结算与票据推送</li>
</ul>
</div>
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">多角色系统</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 居民端、引导端、清运端三端协作</li>
<li>• 后台实时监控库存与设备状态</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-2">适配场景</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 社区综合服务点、物业大厅、商超入口</li>
<li>• 可扩展至校园、园区等细分场景</li>
</ul>
</div>
</div>
</div>
<div class="canvas-box bg-purple-50 border-purple-200">
<div class="canvas-header bg-purple-100">
<h4 class="canvas-title text-purple-800">渠道策略</h4>
</div>
<div class="canvas-content">
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">线下获客</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>与社区超市、物业、快递站共建服务点</li>
<li>• 引导员在高峰时段驻点讲解</li>
</ul>
</div>
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">线上触达</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>微信生态扫码直达,公众号/小程序运营</li>
<li>• 社群运营、社区公告、积分活动触达</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-2">合作拓展</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>政府/环保机构联合宣导</li>
<li>• 与再生资源公司共建回收网络</li>
</ul>
</div>
</div>
</div>
<div class="canvas-box bg-teal-50 border-teal-200">
<div class="canvas-header bg-teal-100">
<h4 class="canvas-title text-teal-800">关键指标</h4>
</div>
<div class="canvas-content">
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">运营指标</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 单终端日均交易量、有效引导时长</li>
<li>• 引导员覆盖社区数、设备在线率</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-2">用户指标</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 操作成功率、用户满意度/复购率</li>
<li>• 积分使用率、推荐率</li>
</ul>
</div>
</div>
</div>
<div class="canvas-box bg-yellow-50 border-yellow-200">
<div class="canvas-header bg-yellow-100">
<h4 class="canvas-title text-yellow-800">成本结构</h4>
</div>
<div class="canvas-content">
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">单点成本</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 终端硬件约1500元/台</li>
<li>• 场地布点与安装约2000元/点</li>
</ul>
</div>
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">运营成本</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>云服务、算法维护、数据存储</li>
<li>• 引导员培训补贴、清运物流、人力排班</li>
</ul>
</div>
<div>
<p class="font-semibold text-gray-800 text-sm mb-2">合作成本</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>与场地方收益分成/奖励</li>
<li>• 宣传物料与社区活动投入</li>
</ul>
</div>
</div>
</div>
<div class="canvas-box bg-green-50 border-green-200">
<div class="canvas-header bg-green-100">
<h4 class="canvas-title text-green-800">收入结构</h4>
</div>
<div class="canvas-content">
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">主要收入流</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 废品回收价差(居民回收价 vs 批发销售价)</li>
<li>• 与合作场地方按成交量分成</li>
</ul>
</div>
<div class="mb-4">
<p class="font-semibold text-gray-800 text-sm mb-2">增值收入</p>
<ul class="text-xs text-gray-700 space-y-1">
<li>• 数据服务、碳积分兑换合作</li>
<li>• 品牌联合营销、广告植入</li>
</ul>
</div>
<div class="bg-green-100 rounded p-3 text-center">
<p class="text-sm font-bold text-green-700">单点投入约3000元预计4-10个月回本</p>
</div>
</div>
</div>
</div>
</div>
</section>\r\n <!-- 用户故事与场景 -->
<section class="mb-12">
<h2 class="text-3xl font-bold text-gray-800 mb-8 text-center">用户故事与应用场景</h2>
<div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
@@ -1056,4 +1020,8 @@
}
</script>
</body>
</html>
</html>

View File

@@ -0,0 +1,451 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<title>回报率预测计算器</title>
<style>
:root {
color-scheme: light dark;
font-family: "Segoe UI", "Microsoft YaHei", sans-serif;
background-color: #f7f8fa;
color: #1f2933;
}
body {
margin: 0;
padding: 32px;
display: flex;
justify-content: center;
}
.container {
width: min(1080px, 100%);
background: #ffffffee;
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.08);
border-radius: 18px;
padding: 32px 36px 48px;
}
h1 {
margin: 0 0 8px;
font-size: 28px;
}
.subtitle {
margin: 0;
color: #52606d;
font-size: 16px;
}
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 16px;
margin: 32px 0;
}
.summary-card {
border-radius: 14px;
padding: 20px 24px;
background: linear-gradient(135deg, #2563eb, #38bdf8);
color: #f8fafc;
}
.summary-card h2 {
font-size: 14px;
letter-spacing: 0.08em;
text-transform: uppercase;
margin: 0 0 12px;
}
.summary-value {
font-size: 28px;
font-weight: 700;
}
.input-section {
margin-bottom: 36px;
}
.input-section h3 {
margin: 0 0 16px;
font-size: 20px;
}
.field-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 18px;
}
label {
display: flex;
flex-direction: column;
gap: 6px;
font-size: 14px;
color: #364152;
}
input[type="number"] {
padding: 10px 14px;
border: 1px solid #d9e2ec;
border-radius: 10px;
font-size: 16px;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
input[type="number"]:focus {
border-color: #2563eb;
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
outline: none;
}
.result-section {
margin-top: 40px;
}
table {
width: 100%;
border-collapse: collapse;
margin-bottom: 24px;
}
th,
td {
padding: 12px 16px;
border-bottom: 1px solid #e4ebf3;
text-align: right;
}
th:first-child,
td:first-child {
text-align: left;
}
th {
background: #f0f4ff;
font-weight: 600;
}
.note {
font-size: 13px;
color: #e4ebf3;
}
@media (max-width: 768px) {
body {
padding: 16px;
}
.container {
padding: 24px;
}
}
</style>
</head>
<body>
<div class="container">
<header>
<h1>回报率预测计算器</h1>
<p class="subtitle">根据《回报率预测》文档的假设提供默认值,可随场景调整实时查看财务指标。</p>
</header>
<div class="card-grid">
<div class="summary-card">
<h2>月度净利润</h2>
<div id="monthlyNetProfit" class="summary-value">¥ 33.00</div>
<p class="note">= 月毛利 - 固定运营成本</p>
</div>
<div class="summary-card">
<h2>投资回收期</h2>
<div id="paybackPeriod" class="summary-value">54.5 个月</div>
<p class="note">= 单站总投资 / 月净利润</p>
</div>
<div class="summary-card">
<h2>年化 ROI</h2>
<div id="annualROI" class="summary-value">22.0%</div>
<p class="note">= (年净利润 / 总投资) × 100%</p>
</div>
</div>
<section class="input-section">
<h3>核心量化假设</h3>
<div class="field-grid">
<label>
日均废纸板回收量 (公斤)
<input id="dailyCardboard" type="number" min="0" step="0.1" value="20" />
</label>
<label>
日均塑料瓶回收量 (公斤)
<input id="dailyPet" type="number" min="0" step="0.1" value="10" />
</label>
<label>
月计费天数 (天)
<input id="daysPerMonth" type="number" min="1" step="1" value="30" />
</label>
<label>
废纸板回收价 ¥/公斤 (给用户)
<input id="buyPriceCardboard" type="number" min="0" step="0.01" value="0.8" />
</label>
<label>
废纸板出售价 ¥/公斤 (给打包站)
<input id="sellPriceCardboard" type="number" min="0" step="0.01" value="1.2" />
</label>
<label>
塑料瓶回收价 ¥/公斤 (给用户)
<input id="buyPricePet" type="number" min="0" step="0.01" value="1.4" />
</label>
<label>
塑料瓶出售价 ¥/公斤 (给打包站)
<input id="sellPricePet" type="number" min="0" step="0.01" value="2.0" />
</label>
</div>
</section>
<section class="input-section">
<h3>运营及投入假设</h3>
<div class="field-grid">
<label>
场地合作分成 (占给站长回收金 %)
<input id="siteFeePercent" type="number" min="0" step="0.1" value="10" />
</label>
<label>
月物流清运成本 (¥)
<input id="logisticsCost" type="number" min="0" step="1" value="220" />
</label>
<label>
设备维护与网络费 (¥/月)
<input id="maintenanceCost" type="number" min="0" step="1" value="27" />
</label>
<label>
其他运营成本 (¥/月)
<input id="otherCost" type="number" min="0" step="1" value="50" />
</label>
<label>
单站设备投入 (¥)
<input id="equipmentCost" type="number" min="0" step="10" value="1500" />
</label>
<label>
部署及安装成本 (¥)
<input id="deploymentCost" type="number" min="0" step="10" value="300" />
</label>
</div>
</section>
<section class="result-section">
<h3>产出指标</h3>
<table>
<thead>
<tr>
<th>指标</th>
<th>废纸板</th>
<th>塑料瓶</th>
<th>合计</th>
</tr>
</thead>
<tbody>
<tr>
<td>月度回收量 (公斤)</td>
<td id="monthlyCardboardKg">600.0</td>
<td id="monthlyPetKg">300.0</td>
<td id="monthlyTotalKg">900.0</td>
</tr>
<tr>
<td>给用户回收金 (¥)</td>
<td id="payoutCardboard">¥ 480.00</td>
<td id="payoutPet">¥ 420.00</td>
<td id="payoutTotal">¥ 900.00</td>
</tr>
<tr>
<td>销售收入 (¥)</td>
<td id="saleCardboard">¥ 720.00</td>
<td id="salePet">¥ 600.00</td>
<td id="saleTotal">¥ 1,320.00</td>
</tr>
<tr>
<td>毛利 (¥)</td>
<td id="grossCardboard">¥ 240.00</td>
<td id="grossPet">¥ 180.00</td>
<td id="grossTotal">¥ 420.00</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>成本拆解</th>
<th>金额 (¥)</th>
</tr>
</thead>
<tbody>
<tr>
<td>场地合作费</td>
<td id="siteFee">¥ 90.00</td>
</tr>
<tr>
<td>月物流清运成本</td>
<td id="logisticsCostCell">¥ 220.00</td>
</tr>
<tr>
<td>设备维护与网络费</td>
<td id="maintenanceCostCell">¥ 27.00</td>
</tr>
<tr>
<td>其他运营成本</td>
<td id="otherCostCell">¥ 50.00</td>
</tr>
<tr>
<td><strong>固定成本合计</strong></td>
<td id="fixedCostTotal"><strong>¥ 387.00</strong></td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>投资与回报</th>
<th>金额 / 指标</th>
</tr>
</thead>
<tbody>
<tr>
<td>单站总投资 (Capex)</td>
<td id="totalInvestment">¥ 1,800.00</td>
</tr>
<tr>
<td>月度净利润</td>
<td id="netProfitCell">¥ 33.00</td>
</tr>
<tr>
<td>投资回收期</td>
<td id="paybackCell">54.5 个月</td>
</tr>
<tr>
<td>年化投资回报率</td>
<td id="annualRoiCell">22.0%</td>
</tr>
</tbody>
</table>
<p class="note">提示若月度净利润≤0则投资回收期视为“尚无法回收”请通过提升日均回收量或优化成本结构来改进模型。</p>
</section>
</div>
<script>
// 工具函数安全读取输入值若为空则返回0
function getValue(id) {
const value = parseFloat(document.getElementById(id).value);
return Number.isFinite(value) ? value : 0;
}
// 工具函数:格式化为货币展示
function formatCurrency(value) {
return `¥ ${value.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
}
// 工具函数:格式化数值,保留一位小数
function formatNumber(value) {
return value.toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 });
}
// 核心计算逻辑
function recalc() {
const dailyCardboard = getValue("dailyCardboard");
const dailyPet = getValue("dailyPet");
const days = getValue("daysPerMonth");
const buyCardboard = getValue("buyPriceCardboard");
const sellCardboard = getValue("sellPriceCardboard");
const buyPet = getValue("buyPricePet");
const sellPet = getValue("sellPricePet");
const siteFeePercent = getValue("siteFeePercent") / 100;
const logisticsCost = getValue("logisticsCost");
const maintenanceCost = getValue("maintenanceCost");
const otherCost = getValue("otherCost");
const equipmentCost = getValue("equipmentCost");
const deploymentCost = getValue("deploymentCost");
const monthlyCardboardKg = dailyCardboard * days;
const monthlyPetKg = dailyPet * days;
const monthlyTotalKg = monthlyCardboardKg + monthlyPetKg;
const payoutCardboard = monthlyCardboardKg * buyCardboard;
const payoutPet = monthlyPetKg * buyPet;
const payoutTotal = payoutCardboard + payoutPet;
const saleCardboard = monthlyCardboardKg * sellCardboard;
const salePet = monthlyPetKg * sellPet;
const saleTotal = saleCardboard + salePet;
const grossCardboard = saleCardboard - payoutCardboard;
const grossPet = salePet - payoutPet;
const grossTotal = grossCardboard + grossPet;
const siteFee = payoutTotal * siteFeePercent;
const fixedCostTotal = siteFee + logisticsCost + maintenanceCost + otherCost;
const monthlyNetProfit = grossTotal - fixedCostTotal;
const totalInvestment = equipmentCost + deploymentCost;
const annualNetProfit = monthlyNetProfit * 12;
const paybackMonths = monthlyNetProfit > 0 ? totalInvestment / monthlyNetProfit : Infinity;
const annualROI = monthlyNetProfit > 0 ? (annualNetProfit / totalInvestment) * 100 : 0;
// 更新表格及摘要展示
document.getElementById("monthlyCardboardKg").textContent = formatNumber(monthlyCardboardKg);
document.getElementById("monthlyPetKg").textContent = formatNumber(monthlyPetKg);
document.getElementById("monthlyTotalKg").textContent = formatNumber(monthlyTotalKg);
document.getElementById("payoutCardboard").textContent = formatCurrency(payoutCardboard);
document.getElementById("payoutPet").textContent = formatCurrency(payoutPet);
document.getElementById("payoutTotal").textContent = formatCurrency(payoutTotal);
document.getElementById("saleCardboard").textContent = formatCurrency(saleCardboard);
document.getElementById("salePet").textContent = formatCurrency(salePet);
document.getElementById("saleTotal").textContent = formatCurrency(saleTotal);
document.getElementById("grossCardboard").textContent = formatCurrency(grossCardboard);
document.getElementById("grossPet").textContent = formatCurrency(grossPet);
document.getElementById("grossTotal").textContent = formatCurrency(grossTotal);
document.getElementById("siteFee").textContent = formatCurrency(siteFee);
document.getElementById("logisticsCostCell").textContent = formatCurrency(logisticsCost);
document.getElementById("maintenanceCostCell").textContent = formatCurrency(maintenanceCost);
document.getElementById("otherCostCell").textContent = formatCurrency(otherCost);
document.getElementById("fixedCostTotal").innerHTML = `<strong>${formatCurrency(fixedCostTotal)}</strong>`;
document.getElementById("totalInvestment").textContent = formatCurrency(totalInvestment);
const netProfitLabel = formatCurrency(monthlyNetProfit);
document.getElementById("monthlyNetProfit").textContent = netProfitLabel;
document.getElementById("netProfitCell").textContent = netProfitLabel;
if (monthlyNetProfit > 0) {
const paybackText = `${paybackMonths.toFixed(1)} 个月`;
const annualRoiText = `${annualROI.toFixed(1)}%`;
document.getElementById("paybackPeriod").textContent = paybackText;
document.getElementById("annualROI").textContent = annualRoiText;
document.getElementById("paybackCell").textContent = paybackText;
document.getElementById("annualRoiCell").textContent = annualRoiText;
} else {
const warningText = "尚无法回收";
document.getElementById("paybackPeriod").textContent = warningText;
document.getElementById("paybackCell").textContent = warningText;
document.getElementById("annualROI").textContent = "0.0%";
document.getElementById("annualRoiCell").textContent = "0.0%";
}
}
// 监听所有输入框,实时刷新
document.querySelectorAll("input[type='number']").forEach((input) => {
input.addEventListener("input", recalc);
});
// 初始化计算一次,确保默认值正确呈现
recalc();
</script>
</body>
</html>