Files
TakeoutSaaS.Prototypes/pages/fin-settlement.html
MSuMshk c74889932e feat: 完成财务中心模块并适配不碰资金商业模式
- 新增6个财务页面:财务概览、交易流水、到账查询、成本管理、发票管理、经营报表
- 移除提现管理,结算管理简化为到账查询(T+1渠道到账记录)
- 交易流水去掉手续费/实收/提现,优化快捷日期、备注列、汇总行
- 成本管理去掉平台费用列
- 侧边栏和pageMap同步更新
2026-02-12 16:49:37 +08:00

298 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 到账查询 — fin-settlement.html -->
<style>
/* ---- page-private: fst- prefix ---- */
.fst-stats {
display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px;
}
.fst-stat-card {
background: #fff; border-radius: var(--g-radius); padding: 18px 20px;
border: 1px solid var(--g-border); box-shadow: var(--g-shadow-sm);
transition: box-shadow var(--g-transition);
}
.fst-stat-card:hover { box-shadow: var(--g-shadow-md); transform: translateY(-1px); }
.fst-stat-label { font-size: 13px; color: var(--g-text-muted); margin-bottom: 6px; display: flex; align-items: center; gap: 6px; }
.fst-stat-label i { width: 16px; height: 16px; }
.fst-stat-val { font-size: 24px; font-weight: 700; color: var(--g-text); }
/* 账户信息条 */
.fst-account-bar {
display: flex; align-items: center; gap: 16px; padding: 14px 20px; margin-bottom: 16px;
background: #fff; border-radius: var(--g-radius); border: 1px solid var(--g-border);
box-shadow: var(--g-shadow-sm); font-size: 13px; color: var(--g-text-secondary);
}
.fst-account-bar i { width: 18px; height: 18px; color: var(--primary); flex-shrink: 0; }
.fst-account-bar strong { color: var(--g-text); font-weight: 600; }
.fst-account-sep { width: 1px; height: 20px; background: var(--g-border); }
.fst-toolbar {
background: #fff; border-radius: var(--g-radius); padding: 14px 18px;
display: flex; align-items: center; gap: 10px; margin-bottom: 16px;
box-shadow: var(--g-shadow-sm); border: 1px solid var(--g-border);
}
.fst-toolbar .g-input,
.fst-toolbar .g-select { height: 32px; font-size: 13px; }
.fst-date-sep { color: var(--g-text-muted); font-size: 13px; line-height: 32px; }
.fst-table-card {
background: #fff; border-radius: var(--g-radius); border: 1px solid var(--g-border);
overflow: hidden; margin-bottom: 16px;
}
.fst-table-card .g-table th { white-space: nowrap; }
.fst-table-card .g-table td { vertical-align: middle; font-size: 13px; }
.fst-amount { font-weight: 600; white-space: nowrap; }
/* 展开明细行 */
.fst-detail-row { display: none; }
.fst-detail-row.open { display: table-row; }
.fst-detail-row td { padding: 0 !important; background: #f8f9fb; }
.fst-detail-wrap { padding: 14px 20px 14px 40px; }
.fst-detail-title { font-size: 13px; font-weight: 600; color: var(--g-text); margin-bottom: 10px; padding-left: 10px; border-left: 3px solid var(--primary); }
.fst-mini-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.fst-mini-table th {
text-align: left; padding: 8px 10px; font-weight: 500;
color: var(--g-text-muted); background: #fff; border-bottom: 1px solid var(--g-border);
}
.fst-mini-table td { padding: 8px 10px; border-bottom: 1px solid #f3f4f6; color: var(--g-text); }
.fst-mini-table tr:last-child td { border-bottom: none; }
.fst-channel-icon { display: inline-flex; align-items: center; gap: 6px; }
.fst-channel-dot { width: 8px; height: 8px; border-radius: 50%; }
</style>
<!-- 统计卡片 -->
<div class="fst-stats">
<div class="fst-stat-card">
<div class="fst-stat-label"><i data-lucide="circle-check"></i>今日到账</div>
<div class="fst-stat-val" style="color:var(--g-success);">&yen;4,670</div>
</div>
<div class="fst-stat-card">
<div class="fst-stat-label"><i data-lucide="calendar-minus"></i>昨日到账</div>
<div class="fst-stat-val">&yen;4,940</div>
</div>
<div class="fst-stat-card">
<div class="fst-stat-label"><i data-lucide="calendar-check"></i>本月累计到账</div>
<div class="fst-stat-val">&yen;42,800</div>
</div>
<div class="fst-stat-card">
<div class="fst-stat-label"><i data-lucide="receipt"></i>本月交易笔数</div>
<div class="fst-stat-val">1,286</div>
</div>
</div>
<!-- 结算账户信息 -->
<div class="fst-account-bar">
<i data-lucide="landmark"></i>
<span>结算账户:<strong>招商银行 ****1234</strong></span>
<span class="fst-account-sep"></span>
<span>微信商户号:<strong>15xxxxxxxx</strong></span>
<span class="fst-account-sep"></span>
<span>支付宝PID<strong>2088xxxxxxxxxxxx</strong></span>
<span class="fst-account-sep"></span>
<span>结算周期:<strong>T+1 自动到账</strong></span>
</div>
<!-- 筛选工具栏 -->
<div class="fst-toolbar">
<input type="date" class="g-input" style="width:145px;" value="2026-02-01">
<span class="fst-date-sep">~</span>
<input type="date" class="g-input" style="width:145px;" value="2026-02-12">
<select class="g-select" style="width:130px;">
<option>全部渠道</option>
<option>微信支付</option>
<option>支付宝</option>
</select>
<div style="flex:1;"></div>
<button class="g-btn g-btn-sm"><i data-lucide="download" style="width:14px;height:14px;margin-right:4px;vertical-align:-2px;"></i>导出</button>
</div>
<!-- 到账记录表格 -->
<div class="fst-table-card">
<table class="g-table">
<thead>
<tr>
<th style="width:36px;"></th>
<th>到账日期</th>
<th>支付渠道</th>
<th>交易笔数</th>
<th style="text-align:right;">到账金额</th>
</tr>
</thead>
<tbody>
<!-- 1 -->
<tr>
<td><i data-lucide="chevron-right" style="width:14px;height:14px;cursor:pointer;color:var(--g-text-muted);transition:var(--g-transition);" onclick="toggleFstDetail(this,'fst-d1')"></i></td>
<td>2026-02-12</td>
<td><span class="fst-channel-icon"><span class="fst-channel-dot" style="background:#07c160;"></span>微信支付</span></td>
<td>86</td>
<td style="text-align:right;" class="fst-amount">&yen;3,420.00</td>
</tr>
<tr class="fst-detail-row" id="fst-d1">
<td colspan="5">
<div class="fst-detail-wrap">
<div class="fst-detail-title">交易明细(部分)</div>
<table class="fst-mini-table">
<thead><tr><th>订单号</th><th>金额</th><th>时间</th></tr></thead>
<tbody>
<tr><td>ORD20260212001</td><td>¥58.00</td><td>12:35</td></tr>
<tr><td>ORD20260212005</td><td>¥126.00</td><td>11:22</td></tr>
<tr><td>ORD20260212011</td><td>¥42.50</td><td>10:08</td></tr>
<tr><td>ORD20260212015</td><td>¥89.00</td><td>09:15</td></tr>
</tbody>
</table>
</div>
</td>
</tr>
<!-- 2 -->
<tr>
<td><i data-lucide="chevron-right" style="width:14px;height:14px;cursor:pointer;color:var(--g-text-muted);transition:var(--g-transition);" onclick="toggleFstDetail(this,'fst-d2')"></i></td>
<td>2026-02-12</td>
<td><span class="fst-channel-icon"><span class="fst-channel-dot" style="background:#1677ff;"></span>支付宝</span></td>
<td>32</td>
<td style="text-align:right;" class="fst-amount">&yen;1,250.00</td>
</tr>
<tr class="fst-detail-row" id="fst-d2">
<td colspan="5">
<div class="fst-detail-wrap">
<div class="fst-detail-title">交易明细(部分)</div>
<table class="fst-mini-table">
<thead><tr><th>订单号</th><th>金额</th><th>时间</th></tr></thead>
<tbody>
<tr><td>ORD20260212003</td><td>¥126.00</td><td>11:22</td></tr>
<tr><td>ORD20260212009</td><td>¥68.00</td><td>10:30</td></tr>
<tr><td>ORD20260212014</td><td>¥35.50</td><td>09:45</td></tr>
</tbody>
</table>
</div>
</td>
</tr>
<!-- 3 -->
<tr>
<td><i data-lucide="chevron-right" style="width:14px;height:14px;cursor:pointer;color:var(--g-text-muted);transition:var(--g-transition);" onclick="toggleFstDetail(this,'fst-d3')"></i></td>
<td>2026-02-11</td>
<td><span class="fst-channel-icon"><span class="fst-channel-dot" style="background:#07c160;"></span>微信支付</span></td>
<td>92</td>
<td style="text-align:right;" class="fst-amount">&yen;3,860.00</td>
</tr>
<tr class="fst-detail-row" id="fst-d3">
<td colspan="5">
<div class="fst-detail-wrap">
<div class="fst-detail-title">交易明细(部分)</div>
<table class="fst-mini-table">
<thead><tr><th>订单号</th><th>金额</th><th>时间</th></tr></thead>
<tbody>
<tr><td>ORD20260211042</td><td>¥89.00</td><td>20:15</td></tr>
<tr><td>ORD20260211038</td><td>¥56.00</td><td>19:30</td></tr>
<tr><td>ORD20260211035</td><td>¥72.00</td><td>18:45</td></tr>
<tr><td>ORD20260211031</td><td>¥38.50</td><td>17:20</td></tr>
</tbody>
</table>
</div>
</td>
</tr>
<!-- 4 -->
<tr>
<td><i data-lucide="chevron-right" style="width:14px;height:14px;cursor:pointer;color:var(--g-text-muted);transition:var(--g-transition);" onclick="toggleFstDetail(this,'fst-d4')"></i></td>
<td>2026-02-11</td>
<td><span class="fst-channel-icon"><span class="fst-channel-dot" style="background:#1677ff;"></span>支付宝</span></td>
<td>28</td>
<td style="text-align:right;" class="fst-amount">&yen;1,080.00</td>
</tr>
<tr class="fst-detail-row" id="fst-d4">
<td colspan="5">
<div class="fst-detail-wrap">
<div class="fst-detail-title">交易明细(部分)</div>
<table class="fst-mini-table">
<thead><tr><th>订单号</th><th>金额</th><th>时间</th></tr></thead>
<tbody>
<tr><td>ORD20260211040</td><td>¥45.00</td><td>19:50</td></tr>
<tr><td>ORD20260211036</td><td>¥62.00</td><td>18:10</td></tr>
<tr><td>ORD20260211033</td><td>¥33.00</td><td>16:40</td></tr>
</tbody>
</table>
</div>
</td>
</tr>
<!-- 5 -->
<tr>
<td><i data-lucide="chevron-right" style="width:14px;height:14px;cursor:pointer;color:var(--g-text-muted);transition:var(--g-transition);" onclick="toggleFstDetail(this,'fst-d5')"></i></td>
<td>2026-02-10</td>
<td><span class="fst-channel-icon"><span class="fst-channel-dot" style="background:#07c160;"></span>微信支付</span></td>
<td>78</td>
<td style="text-align:right;" class="fst-amount">&yen;3,150.00</td>
</tr>
<tr class="fst-detail-row" id="fst-d5">
<td colspan="5">
<div class="fst-detail-wrap">
<div class="fst-detail-title">交易明细(部分)</div>
<table class="fst-mini-table">
<thead><tr><th>订单号</th><th>金额</th><th>时间</th></tr></thead>
<tbody>
<tr><td>ORD20260210028</td><td>¥52.00</td><td>20:30</td></tr>
<tr><td>ORD20260210025</td><td>¥41.50</td><td>19:15</td></tr>
<tr><td>ORD20260210022</td><td>¥67.00</td><td>18:00</td></tr>
</tbody>
</table>
</div>
</td>
</tr>
<!-- 6 -->
<tr>
<td><i data-lucide="chevron-right" style="width:14px;height:14px;cursor:pointer;color:var(--g-text-muted);transition:var(--g-transition);" onclick="toggleFstDetail(this,'fst-d6')"></i></td>
<td>2026-02-10</td>
<td><span class="fst-channel-icon"><span class="fst-channel-dot" style="background:#1677ff;"></span>支付宝</span></td>
<td>25</td>
<td style="text-align:right;" class="fst-amount">&yen;960.00</td>
</tr>
<tr class="fst-detail-row" id="fst-d6">
<td colspan="5">
<div class="fst-detail-wrap">
<div class="fst-detail-title">交易明细(部分)</div>
<table class="fst-mini-table">
<thead><tr><th>订单号</th><th>金额</th><th>时间</th></tr></thead>
<tbody>
<tr><td>ORD20260210026</td><td>¥48.00</td><td>19:40</td></tr>
<tr><td>ORD20260210023</td><td>¥55.00</td><td>17:55</td></tr>
</tbody>
</table>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- 分页 -->
<div class="g-pagination">
<span>共 68 条</span>
<select style="height:28px;padding:0 6px;border:1px solid #e5e7eb;border-radius:4px;font-size:12px;margin-right:4px;">
<option>20条/页</option>
<option>50条/页</option>
<option>100条/页</option>
</select>
<button class="g-page-btn" disabled>&lt;</button>
<button class="g-page-btn active">1</button>
<button class="g-page-btn">2</button>
<button class="g-page-btn">3</button>
<button class="g-page-btn">4</button>
<button class="g-page-btn">&gt;</button>
</div>
<script>
function toggleFstDetail(iconEl, rowId) {
var row = document.getElementById(rowId);
var isOpen = row.classList.contains('open');
row.classList.toggle('open');
var parentTr = row.previousElementSibling;
var icon = parentTr.querySelector('td:first-child i');
if (icon) {
icon.style.transform = isOpen ? 'rotate(0deg)' : 'rotate(90deg)';
}
}
if (typeof lucide !== 'undefined') { lucide.createIcons(); }
</script>