修复计算
This commit is contained in:
@@ -159,7 +159,7 @@
|
|||||||
<div class="summary-card">
|
<div class="summary-card">
|
||||||
<h2>投资回收期</h2>
|
<h2>投资回收期</h2>
|
||||||
<div id="paybackPeriod" class="summary-value">54.5 个月</div>
|
<div id="paybackPeriod" class="summary-value">54.5 个月</div>
|
||||||
<p class="note">= 单站总投资 / 月净利润</p>
|
<p class="note">= 总投资 / 月净利润</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="summary-card">
|
<div class="summary-card">
|
||||||
<h2>年化 ROI</h2>
|
<h2>年化 ROI</h2>
|
||||||
@@ -183,6 +183,10 @@
|
|||||||
月计费天数 (天)
|
月计费天数 (天)
|
||||||
<input id="daysPerMonth" type="number" min="1" step="1" value="30" />
|
<input id="daysPerMonth" type="number" min="1" step="1" value="30" />
|
||||||
</label>
|
</label>
|
||||||
|
<label>
|
||||||
|
运营站点数量 (个)
|
||||||
|
<input id="siteCount" type="number" min="1" step="1" value="1" />
|
||||||
|
</label>
|
||||||
<label>
|
<label>
|
||||||
废纸板回收价 ¥/公斤 (给用户)
|
废纸板回收价 ¥/公斤 (给用户)
|
||||||
<input id="buyPriceCardboard" type="number" min="0" step="0.01" value="0.8" />
|
<input id="buyPriceCardboard" type="number" min="0" step="0.01" value="0.8" />
|
||||||
@@ -206,8 +210,8 @@
|
|||||||
<h3>运营及投入假设</h3>
|
<h3>运营及投入假设</h3>
|
||||||
<div class="field-grid">
|
<div class="field-grid">
|
||||||
<label>
|
<label>
|
||||||
场地合作分成 (占给站长回收金 %)
|
场地合作分成 (占销售总收入 %)
|
||||||
<input id="siteFeePercent" type="number" min="0" step="0.1" value="10" />
|
<input id="siteFeePercent" type="number" min="0" step="0.1" value="6.8" />
|
||||||
</label>
|
</label>
|
||||||
<label>
|
<label>
|
||||||
月物流清运成本 (¥)
|
月物流清运成本 (¥)
|
||||||
@@ -311,7 +315,7 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td>单站总投资 (Capex)</td>
|
<td>总投资 (Capex)</td>
|
||||||
<td id="totalInvestment">¥ 1,800.00</td>
|
<td id="totalInvestment">¥ 1,800.00</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -355,6 +359,7 @@
|
|||||||
const dailyCardboard = getValue("dailyCardboard");
|
const dailyCardboard = getValue("dailyCardboard");
|
||||||
const dailyPet = getValue("dailyPet");
|
const dailyPet = getValue("dailyPet");
|
||||||
const days = getValue("daysPerMonth");
|
const days = getValue("daysPerMonth");
|
||||||
|
const siteCount = Math.max(getValue("siteCount"), 0);
|
||||||
|
|
||||||
const buyCardboard = getValue("buyPriceCardboard");
|
const buyCardboard = getValue("buyPriceCardboard");
|
||||||
const sellCardboard = getValue("sellPriceCardboard");
|
const sellCardboard = getValue("sellPriceCardboard");
|
||||||
@@ -368,8 +373,8 @@
|
|||||||
const equipmentCost = getValue("equipmentCost");
|
const equipmentCost = getValue("equipmentCost");
|
||||||
const deploymentCost = getValue("deploymentCost");
|
const deploymentCost = getValue("deploymentCost");
|
||||||
|
|
||||||
const monthlyCardboardKg = dailyCardboard * days;
|
const monthlyCardboardKg = dailyCardboard * days * siteCount;
|
||||||
const monthlyPetKg = dailyPet * days;
|
const monthlyPetKg = dailyPet * days * siteCount;
|
||||||
const monthlyTotalKg = monthlyCardboardKg + monthlyPetKg;
|
const monthlyTotalKg = monthlyCardboardKg + monthlyPetKg;
|
||||||
|
|
||||||
const payoutCardboard = monthlyCardboardKg * buyCardboard;
|
const payoutCardboard = monthlyCardboardKg * buyCardboard;
|
||||||
@@ -384,11 +389,15 @@
|
|||||||
const grossPet = salePet - payoutPet;
|
const grossPet = salePet - payoutPet;
|
||||||
const grossTotal = grossCardboard + grossPet;
|
const grossTotal = grossCardboard + grossPet;
|
||||||
|
|
||||||
const siteFee = payoutTotal * siteFeePercent;
|
const logisticsCostTotal = logisticsCost * siteCount;
|
||||||
const fixedCostTotal = siteFee + logisticsCost + maintenanceCost + otherCost;
|
const maintenanceCostTotal = maintenanceCost * siteCount;
|
||||||
|
const otherCostTotal = otherCost * siteCount;
|
||||||
|
const siteFee = saleTotal * siteFeePercent;
|
||||||
|
const fixedCostTotal = siteFee + logisticsCostTotal + maintenanceCostTotal + otherCostTotal;
|
||||||
const monthlyNetProfit = grossTotal - fixedCostTotal;
|
const monthlyNetProfit = grossTotal - fixedCostTotal;
|
||||||
|
|
||||||
const totalInvestment = equipmentCost + deploymentCost;
|
const totalInvestmentPerSite = equipmentCost + deploymentCost;
|
||||||
|
const totalInvestment = totalInvestmentPerSite * siteCount;
|
||||||
const annualNetProfit = monthlyNetProfit * 12;
|
const annualNetProfit = monthlyNetProfit * 12;
|
||||||
|
|
||||||
const paybackMonths = monthlyNetProfit > 0 ? totalInvestment / monthlyNetProfit : Infinity;
|
const paybackMonths = monthlyNetProfit > 0 ? totalInvestment / monthlyNetProfit : Infinity;
|
||||||
@@ -412,9 +421,9 @@
|
|||||||
document.getElementById("grossTotal").textContent = formatCurrency(grossTotal);
|
document.getElementById("grossTotal").textContent = formatCurrency(grossTotal);
|
||||||
|
|
||||||
document.getElementById("siteFee").textContent = formatCurrency(siteFee);
|
document.getElementById("siteFee").textContent = formatCurrency(siteFee);
|
||||||
document.getElementById("logisticsCostCell").textContent = formatCurrency(logisticsCost);
|
document.getElementById("logisticsCostCell").textContent = formatCurrency(logisticsCostTotal);
|
||||||
document.getElementById("maintenanceCostCell").textContent = formatCurrency(maintenanceCost);
|
document.getElementById("maintenanceCostCell").textContent = formatCurrency(maintenanceCostTotal);
|
||||||
document.getElementById("otherCostCell").textContent = formatCurrency(otherCost);
|
document.getElementById("otherCostCell").textContent = formatCurrency(otherCostTotal);
|
||||||
document.getElementById("fixedCostTotal").innerHTML = `<strong>${formatCurrency(fixedCostTotal)}</strong>`;
|
document.getElementById("fixedCostTotal").innerHTML = `<strong>${formatCurrency(fixedCostTotal)}</strong>`;
|
||||||
|
|
||||||
document.getElementById("totalInvestment").textContent = formatCurrency(totalInvestment);
|
document.getElementById("totalInvestment").textContent = formatCurrency(totalInvestment);
|
||||||
|
|||||||
Reference in New Issue
Block a user