新增 0006 迁移与 calculation 模块,实现起算日设置、公司对期初 revision 链、 覆盖断档重算、无业务说明审核,以及完整/降级余额 API;管理端结账与期初页接入真实接口。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
1069 lines
61 KiB
HTML
1069 lines
61 KiB
HTML
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<meta name="description" content="金牛集团总账管理端" />
|
||
<title>总账管理端 · 金牛集团</title>
|
||
<link rel="stylesheet" href="design-system.css?v=4" />
|
||
</head>
|
||
<body data-portal="admin">
|
||
<a class="skip-link" href="#main-content">跳到主要内容</a>
|
||
<div class="shell">
|
||
<aside class="sidebar" id="sidebar" aria-label="总账管理导航">
|
||
<div class="side-brand">
|
||
<div class="brand-name">金牛实业 · 资金往来</div>
|
||
<div class="brand-sub">HENAN JINNIU INDUSTRIAL GROUP</div>
|
||
<span class="side-role">总账管理端</span>
|
||
</div>
|
||
<nav class="side-nav">
|
||
<div class="nav-group">日常</div>
|
||
<a class="active" data-view="dashboard" href="#dashboard"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><rect x="3" y="3" width="8" height="8" rx="1.5"/><rect x="13" y="3" width="8" height="5" rx="1.5"/><rect x="13" y="10" width="8" height="11" rx="1.5"/><rect x="3" y="13" width="8" height="8" rx="1.5"/></svg><span class="nav-label">管理总览</span></a>
|
||
<a data-view="pair" href="#pair"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><path d="M7 8h13l-3.5-3.5M17 16H4l3.5 3.5"/></svg><span class="nav-label">往来查询</span></a>
|
||
<a data-view="audit" href="#audit"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><path d="M9 11.5l2 2 4-4.5"/><rect x="4" y="3" width="16" height="18" rx="2"/></svg><span class="nav-label">审核中心</span><span class="nav-badge">6</span></a>
|
||
<a data-view="flows" href="#flows"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><path d="M4 6h16M4 12h16M4 18h10"/></svg><span class="nav-label">流水管理</span></a>
|
||
<div class="nav-group">基础与结账</div>
|
||
<a data-view="companies" href="#companies"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><path d="M4 21V8l8-5 8 5v13"/><path d="M9 21v-6h6v6"/></svg><span class="nav-label">公司与账号</span></a>
|
||
<a data-view="settings" href="#settings"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="12" cy="12" r="8.5"/><path d="M12 7v5l3.5 2"/></svg><span class="nav-label">结账与期初</span></a>
|
||
<a data-view="reminders" href="#reminders"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><path d="M6 9a6 6 0 1 1 12 0c0 5 2 6 2 6H4s2-1 2-6"/><path d="M10 19a2 2 0 0 0 4 0"/></svg><span class="nav-label">提醒管理</span></a>
|
||
</nav>
|
||
<div class="side-foot">
|
||
<div class="user-row">
|
||
<span class="avatar">管</span>
|
||
<div>
|
||
<div class="user-name">系统管理员</div>
|
||
<div class="user-meta">集团总账会计</div>
|
||
</div>
|
||
<button class="logout" type="button">退出</button>
|
||
</div>
|
||
</div>
|
||
</aside>
|
||
|
||
<div class="main">
|
||
<div class="topbar">
|
||
<span class="crumb">总账管理端 / <b id="currentViewName">管理总览</b></span>
|
||
<div class="topbar-right">
|
||
<span class="tag">账期 2026-07</span>
|
||
<span class="tag">统计截止 2026-08-20</span>
|
||
<button class="btn btn-sm" data-view-link="settings">结账检查</button>
|
||
</div>
|
||
</div>
|
||
|
||
<main class="content" id="main-content">
|
||
<section class="app-view is-active" data-page="dashboard">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1>管理总览</h1>
|
||
<p class="page-sub">2026-01-01 至 2026-08-20,集团 6 家成员公司相互往来累计发生 8.11 亿元、392 笔明细。页面上任意数字与公司均可逐级穿透,直至银行原始流水。</p>
|
||
</div>
|
||
<div class="page-actions">
|
||
<button class="btn" data-view-link="pair">往来查询</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-4">
|
||
<div class="card stat-card">
|
||
<div class="stat-label">往来借方总额 · 年初至今</div>
|
||
<div class="stat-value">42,040.30<span class="unit">万元</span></div>
|
||
<div class="stat-foot">6 家公司合计 · 明细 392 笔</div>
|
||
</div>
|
||
<div class="card stat-card">
|
||
<div class="stat-label">往来贷方总额 · 年初至今</div>
|
||
<div class="stat-value">39,040.30<span class="unit">万元</span></div>
|
||
<div class="stat-foot">6 家公司合计 · 与借方同源互证</div>
|
||
</div>
|
||
<div class="card stat-card warn">
|
||
<div class="stat-label">借贷轧差 · 未匹配</div>
|
||
<div class="stat-value">3,000.00<span class="unit">万元</span></div>
|
||
<div class="stat-foot">由单边流水与待确认往来形成,可在往来查询核对</div>
|
||
</div>
|
||
<div class="card stat-card">
|
||
<div class="stat-label">7 月账期确认进度</div>
|
||
<div class="stat-value">50<span class="unit">%</span></div>
|
||
<div class="progress" style="margin-top: 10px;"><span style="width: 50%;"></span></div>
|
||
<div class="stat-foot" style="margin-top: 8px;">3 家已完成 · 2 家在途 · 1 家未提交</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-3-2" style="margin-top: 14px;">
|
||
<div class="stack">
|
||
<div class="card" id="companyTotals">
|
||
<div class="card-head">
|
||
<span class="card-title">各公司往来合计<span class="sub">2026-01-01 至 2026-08-20 · 单位:万元 · 点击任意行查看该公司往来明细</span></span>
|
||
<input class="input" id="company-search" aria-label="搜索公司" placeholder="搜索公司…" style="width: 170px;" />
|
||
</div>
|
||
<div class="table-wrap" style="border: 0;">
|
||
<table class="ds-table">
|
||
<thead>
|
||
<tr><th>公司</th><th class="num-col">借方合计</th><th class="num-col">贷方合计</th><th class="num-col">明细笔数</th><th class="num-col">期末净往来</th><th>7 月状态</th></tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr class="clickable" data-view-link="pair">
|
||
<td class="cell-main">金牛煤业<span class="cell-sub">河南金牛煤业有限公司</span></td>
|
||
<td class="num-col">18,420.50</td>
|
||
<td class="num-col">12,386.00</td>
|
||
<td class="num-col">128</td>
|
||
<td class="num-col amt-in">+6,034.50</td>
|
||
<td><span class="pill pill-success">已完成</span></td>
|
||
</tr>
|
||
<tr class="clickable" data-view-link="pair">
|
||
<td class="cell-main">金牛物流<span class="cell-sub">河南金牛物流有限公司</span></td>
|
||
<td class="num-col">6,208.75</td>
|
||
<td class="num-col">7,914.30</td>
|
||
<td class="num-col">74</td>
|
||
<td class="num-col amt-out">-1,705.55</td>
|
||
<td><span class="pill pill-success">已完成</span></td>
|
||
</tr>
|
||
<tr class="clickable" data-view-link="pair">
|
||
<td class="cell-main">金牛贸易<span class="cell-sub">河南金牛贸易有限公司</span></td>
|
||
<td class="num-col">9,850.00</td>
|
||
<td class="num-col">9,102.40</td>
|
||
<td class="num-col">86</td>
|
||
<td class="num-col amt-in">+747.60</td>
|
||
<td><span class="pill pill-success">已完成</span></td>
|
||
</tr>
|
||
<tr class="clickable" data-view-link="pair">
|
||
<td class="cell-main">金牛置业<span class="cell-sub">河南金牛置业有限公司</span></td>
|
||
<td class="num-col">3,960.20</td>
|
||
<td class="num-col">5,730.00</td>
|
||
<td class="num-col">52</td>
|
||
<td class="num-col amt-out">-1,769.80</td>
|
||
<td><span class="pill pill-warn">流水待补</span></td>
|
||
</tr>
|
||
<tr class="clickable" data-view-link="pair">
|
||
<td class="cell-main">金牛新能源<span class="cell-sub">河南金牛新能源有限公司</span></td>
|
||
<td class="num-col">2,130.00</td>
|
||
<td class="num-col">2,886.00</td>
|
||
<td class="num-col">31</td>
|
||
<td class="num-col amt-out">-756.00</td>
|
||
<td><span class="pill pill-warn">确认中</span></td>
|
||
</tr>
|
||
<tr class="clickable" data-view-link="pair">
|
||
<td class="cell-main">金牛农业<span class="cell-sub">河南金牛农业科技发展有限公司</span></td>
|
||
<td class="num-col">1,470.85</td>
|
||
<td class="num-col">1,021.60</td>
|
||
<td class="num-col">21</td>
|
||
<td class="num-col amt-in">+449.25</td>
|
||
<td><span class="pill pill-danger">未提交</span></td>
|
||
</tr>
|
||
</tbody>
|
||
<tfoot>
|
||
<tr>
|
||
<td>合计 · 6 家</td>
|
||
<td class="num-col">42,040.30</td>
|
||
<td class="num-col">39,040.30</td>
|
||
<td class="num-col">392</td>
|
||
<td class="num-col">+3,000.00</td>
|
||
<td>—</td>
|
||
</tr>
|
||
</tfoot>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">公司对查<span class="sub">选择两家公司,直达它们之间的往来明细</span></span>
|
||
</div>
|
||
<div class="row" style="align-items: flex-end; flex-wrap: wrap;">
|
||
<div class="field" style="flex: 1 1 190px; margin-bottom: 0;">
|
||
<label for="ql-self">本方公司</label>
|
||
<select class="select" id="ql-self">
|
||
<option>河南金牛煤业有限公司</option>
|
||
<option>河南金牛物流有限公司</option>
|
||
<option>河南金牛贸易有限公司</option>
|
||
<option>河南金牛置业有限公司</option>
|
||
<option>河南金牛新能源有限公司</option>
|
||
<option selected>河南金牛农业科技发展有限公司</option>
|
||
</select>
|
||
</div>
|
||
<span class="meta" style="padding: 0 4px 9px; flex: none;">↔</span>
|
||
<div class="field" style="flex: 1 1 190px; margin-bottom: 0;">
|
||
<label for="ql-peer">对方公司</label>
|
||
<select class="select" id="ql-peer">
|
||
<option selected>河南金牛煤业有限公司</option>
|
||
<option>河南金牛物流有限公司</option>
|
||
<option>河南金牛贸易有限公司</option>
|
||
<option>河南金牛置业有限公司</option>
|
||
<option>河南金牛新能源有限公司</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="detail-box row-between" style="margin-top: 12px;">
|
||
<div>
|
||
<div style="font-weight: 650;">金牛农业 → 应收 386.24 万元</div>
|
||
<div class="meta" style="margin-top: 2px;">14 笔(借 9 / 贷 5)· 最早未结 2026-03-12</div>
|
||
</div>
|
||
<button class="btn btn-sm" data-view-link="pair">查看逐笔往来</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="stack">
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">待办队列<span class="sub">12 项待处理 · 下方为影响结账的前 4 项,从第 1 项开始</span></span>
|
||
<button class="btn btn-sm btn-ghost" data-view-link="audit">审核中心 →</button>
|
||
</div>
|
||
<div class="list-row" data-detail="admin-gap">
|
||
<span class="pill pill-danger">高</span>
|
||
<div class="lr-main">
|
||
<div class="lr-title">金牛置业 · 中行尾号 8821 账户 7 月流水断档 11 天</div>
|
||
<div class="lr-sub">07-06 至 07-16 无流水,影响与金牛煤业 320 万元往来的归集</div>
|
||
</div>
|
||
<button class="btn btn-sm" data-view-link="audit">去审核</button>
|
||
</div>
|
||
<div class="list-row" data-detail="admin-unsubmitted">
|
||
<span class="pill pill-danger">高</span>
|
||
<div class="lr-main">
|
||
<div class="lr-title">金牛农业 7 月全部账户未提交流水</div>
|
||
<div class="lr-sub">已发 2 次系统提醒,最近一次 08-18,仍未响应</div>
|
||
</div>
|
||
<button class="btn btn-sm" data-view-link="reminders">再提醒</button>
|
||
</div>
|
||
<div class="list-row" data-detail="admin-unilateral">
|
||
<span class="pill pill-warn">中</span>
|
||
<div class="lr-main">
|
||
<div class="lr-title">金牛新能源 ↔ 金牛贸易 3 笔单边流水待对方证据</div>
|
||
<div class="lr-sub">合计 486 万元,需新能源侧选择对方银行流水佐证</div>
|
||
</div>
|
||
<button class="btn btn-sm" data-view-link="audit">去审核</button>
|
||
</div>
|
||
<div class="list-row" data-detail="admin-subject">
|
||
<span class="pill pill-warn">中</span>
|
||
<div class="lr-main">
|
||
<div class="lr-title">5 笔手工记录待确认往来科目</div>
|
||
<div class="lr-sub">应收 / 其他应收待判定,涉及煤业、物流、贸易</div>
|
||
</div>
|
||
<button class="btn btn-sm" data-view-link="audit">去审核</button>
|
||
</div>
|
||
<div class="table-foot">
|
||
<span>其余 8 项为低风险与已挂起事项</span>
|
||
<button class="btn btn-sm btn-ghost" data-view-link="audit" style="color: var(--fg); font-weight: 550;">进入审核中心 →</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">账期与结账<span class="sub">每月 5 日结账 · 全局起算日 2026-01-01</span></span>
|
||
</div>
|
||
<dl class="kv">
|
||
<dt>当前账期</dt><dd>2026-07 · 进行中</dd>
|
||
<dt>结账日</dt><dd style="color: color-mix(in oklch, var(--warn) 78%, black); font-weight: 650;">2026-08-29(顺延)· 距今 9 天</dd>
|
||
<dt>上一账期</dt><dd>2026-06 · 已于 07-03 结账</dd>
|
||
</dl>
|
||
<button class="btn" data-view-link="settings" style="width: 100%; margin-top: 14px;">进入结账检查</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="app-view" data-page="pair">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1>往来查询</h1>
|
||
<p class="page-sub">按公司组合查询起算日 2026-01-01 起至统计截止日的逐笔往来余额,支持穿透至银行原始流水链路。</p>
|
||
</div>
|
||
</div>
|
||
|
||
<form class="filters" data-pair-form novalidate>
|
||
<div class="field">
|
||
<label for="pairFrom">本方公司</label>
|
||
<select class="select" name="from" id="pairFrom"></select>
|
||
</div>
|
||
<button class="btn" type="button" data-swap aria-label="交换公司" title="交换公司" style="align-self: flex-end;">
|
||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" style="width: 15px; height: 15px;"><path d="M7 8h13l-3.5-3.5M17 16H4l3.5 3.5"/></svg>
|
||
</button>
|
||
<div class="field">
|
||
<label for="pairTo">对方公司</label>
|
||
<select class="select" name="to" id="pairTo"></select>
|
||
<span class="hint error" id="pairError" style="display: none;">本方公司与对方公司不能为同一家</span>
|
||
</div>
|
||
<div class="field">
|
||
<label for="pairEnd">统计截止日</label>
|
||
<input class="input" name="end" id="pairEnd" type="date" value="2026-07-31" />
|
||
</div>
|
||
<button type="submit" class="btn btn-primary">
|
||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" style="width: 15px; height: 15px;"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.8-3.8"/></svg>
|
||
查询
|
||
</button>
|
||
</form>
|
||
|
||
<div class="notice warn" id="pairNotice" style="display: none; margin-bottom: 14px;">
|
||
<div>
|
||
<div class="n-title">该公司组合暂无归集数据</div>
|
||
<div class="n-body">所选组合在正式环境中将按相同口径实时归集,当前仅内置演示数据组合。</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="pairReport">
|
||
<div class="row-between" style="margin-bottom: 12px;">
|
||
<span class="card-title"><span data-pair-from>—</span> ↔ <span data-pair-to>—</span> · 往来余额</span>
|
||
<span class="meta" id="pairPeriod">统计口径 2026.01.01—2026.07.31</span>
|
||
</div>
|
||
|
||
<div class="grid grid-4">
|
||
<div class="card stat-card">
|
||
<div class="stat-label"><span class="stat-dot info"></span>期初余额(2026-01-01)</div>
|
||
<div class="stat-value" id="pairOpening">0.00</div>
|
||
<div class="stat-foot">起算日前结转</div>
|
||
</div>
|
||
<div class="card stat-card">
|
||
<div class="stat-label"><span class="stat-dot success"></span>本期借方发生</div>
|
||
<div class="stat-value" id="pairDebit">0.00</div>
|
||
<div class="stat-foot">应收增加 + 应付偿付</div>
|
||
</div>
|
||
<div class="card stat-card">
|
||
<div class="stat-label"><span class="stat-dot warn"></span>本期贷方发生</div>
|
||
<div class="stat-value" id="pairCredit">0.00</div>
|
||
<div class="stat-foot">收回款项 + 应付计提</div>
|
||
</div>
|
||
<div class="card stat-card">
|
||
<div class="stat-label"><span class="stat-dot success"></span>期末结果</div>
|
||
<div class="stat-value" id="pairFinal">—</div>
|
||
<div class="stat-foot"><span id="pairReviewStatus">含 1 笔待审核</span></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card" style="margin-top: 14px;">
|
||
<div class="tabs" id="subjectTabs">
|
||
<button type="button" class="active" data-subject-filter="all" aria-pressed="true">全部往来<span class="tab-count" data-subject-total="all">0</span></button>
|
||
<button type="button" data-subject-filter="应收" aria-pressed="false">应收<span class="tab-count" data-subject-total="应收">0</span></button>
|
||
<button type="button" data-subject-filter="其他应收" aria-pressed="false">其他应收<span class="tab-count" data-subject-total="其他应收">0</span></button>
|
||
<button type="button" data-subject-filter="应付" aria-pressed="false">应付<span class="tab-count" data-subject-total="应付">0</span></button>
|
||
<button type="button" data-subject-filter="其他应付" aria-pressed="false">其他应付<span class="tab-count" data-subject-total="其他应付">0</span></button>
|
||
</div>
|
||
<div class="table-wrap" style="border: 0;">
|
||
<table class="ds-table">
|
||
<thead>
|
||
<tr>
|
||
<th>交易日期</th>
|
||
<th>方向</th>
|
||
<th>科目</th>
|
||
<th>本方账户</th>
|
||
<th>对方账户</th>
|
||
<th class="wrap">摘要</th>
|
||
<th>匹配</th>
|
||
<th class="num-col">金额(万元)</th>
|
||
<th>操作</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="pairTransactions"></tbody>
|
||
</table>
|
||
</div>
|
||
<div class="table-foot" style="margin: 0 -20px -18px; border-radius: 0 0 12px 12px;">
|
||
<span id="pairFoot">点击「穿透」查看银行原始流水链路</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="app-view" data-page="audit">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1>审核中心</h1>
|
||
<p class="page-sub">集中处理流水断档、单边匹配、科目确认等待审事项。审核结论将同步至结账检查与各公司往来台账。</p>
|
||
</div>
|
||
<div class="page-actions">
|
||
<a class="btn" data-view-link="reminders">提醒管理</a>
|
||
<a class="btn btn-primary" data-view-link="settings">查看结账影响</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="notice warn">
|
||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" style="width: 18px; height: 18px; flex: none; margin-top: 1px;"><path d="M12 4 3 19h18L12 4z"/><path d="M12 10v4"/><circle cx="12" cy="16.6" r="0.4"/></svg>
|
||
<div>
|
||
<div class="n-title">当前 <span id="pending-count">0</span> 项待审核</div>
|
||
<div class="n-body">全部待审事项须在顺延后的结账日前处理完毕,逾期将阻断 7 月结账。</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div style="display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-top: 18px;">
|
||
<div class="tabs" id="auditTabs" style="margin-bottom: 0; flex: 1 1 260px; min-width: 0;">
|
||
<button class="active" data-audit-filter="all" data-label="全部" aria-pressed="true">全部<span class="tab-count">0</span></button>
|
||
<button data-audit-filter="断档" data-label="流水断档" aria-pressed="false">流水断档<span class="tab-count">0</span></button>
|
||
<button data-audit-filter="单边" data-label="单边匹配" aria-pressed="false">单边匹配<span class="tab-count">0</span></button>
|
||
<button data-audit-filter="科目" data-label="科目确认" aria-pressed="false">科目确认<span class="tab-count">0</span></button>
|
||
<button data-audit-filter="起算" data-label="起算区间校准" aria-pressed="false">起算区间校准<span class="tab-count">0</span></button>
|
||
<button data-audit-filter="账户" data-label="银行账户登记" aria-pressed="false">银行账户登记<span class="tab-count">0</span></button>
|
||
<button data-audit-filter="手工" data-label="公司手工记录" aria-pressed="false">公司手工记录<span class="tab-count">0</span></button>
|
||
</div>
|
||
<div class="field" style="min-width: 180px;">
|
||
<label for="auditCompany">公司</label>
|
||
<select class="select" id="auditCompany"><option>全部公司</option></select>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="table-wrap" style="margin-top: 14px;">
|
||
<table class="ds-table audit-table">
|
||
<thead>
|
||
<tr>
|
||
<th>风险等级</th>
|
||
<th>公司 / 事项</th>
|
||
<th>类型</th>
|
||
<th>期间</th>
|
||
<th class="wrap">影响</th>
|
||
<th>状态</th>
|
||
<th>操作</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="auditRows">
|
||
<tr data-audit-type="断档" data-company="金牛置业">
|
||
<td><span class="pill pill-danger">高</span></td>
|
||
<td><span class="cell-main">金牛置业 · 中行尾号 8821</span><span class="cell-sub">07-06 至 07-16 无流水</span></td>
|
||
<td>流水断档</td>
|
||
<td>2026-07</td>
|
||
<td class="wrap">11 天无流水,与金牛煤业 320 万煤炭采购款往来无法归集,阻断 7 月结账</td>
|
||
<td><span class="pill pill-info">待审核</span></td>
|
||
<td><div class="row" style="gap:6px;"><button type="button" class="btn btn-sm btn-primary" data-audit-action="approve">通过</button><button type="button" class="btn btn-sm btn-danger" data-audit-action="reject">驳回</button></div></td>
|
||
</tr>
|
||
<tr data-audit-type="单边" data-company="金牛新能源">
|
||
<td><span class="pill pill-warn">中</span></td>
|
||
<td><span class="cell-main">金牛新能源 ↔ 金牛贸易</span><span class="cell-sub">3 笔单边合计 486 万</span></td>
|
||
<td>单边匹配</td>
|
||
<td>2026-07</td>
|
||
<td class="wrap">单边支付无对方对应流水,往来差异挂账,待对方选择流水佐证</td>
|
||
<td><span class="pill pill-info">待审核</span></td>
|
||
<td><div class="row" style="gap:6px;"><button type="button" class="btn btn-sm btn-primary" data-audit-action="approve">通过</button><button type="button" class="btn btn-sm btn-danger" data-audit-action="reject">驳回</button></div></td>
|
||
</tr>
|
||
<tr data-audit-type="科目" data-company="金牛煤业">
|
||
<td><span class="pill pill-warn">中</span></td>
|
||
<td><span class="cell-main">金牛煤业 · 手工记录</span><span class="cell-sub">场地押金 42 万</span></td>
|
||
<td>科目确认</td>
|
||
<td>2026-07</td>
|
||
<td class="wrap">「应收 / 其他应收」科目待判定,影响科目汇总口径</td>
|
||
<td><span class="pill pill-info">待审核</span></td>
|
||
<td><div class="row" style="gap:6px;"><button type="button" class="btn btn-sm btn-primary" data-audit-action="approve">通过</button><button type="button" class="btn btn-sm btn-danger" data-audit-action="reject">驳回</button></div></td>
|
||
</tr>
|
||
<tr data-audit-type="起算" data-company="金牛物流">
|
||
<td><span class="pill pill-danger">高</span></td>
|
||
<td><span class="cell-main">金牛物流 · 工行基本户</span><span class="cell-sub">期初与上年结转差 28.6 万</span></td>
|
||
<td>起算区间校准</td>
|
||
<td>2026-01 起算</td>
|
||
<td class="wrap">期初余额与上年结转不衔接,全年累计数失真,需校准起算区间</td>
|
||
<td><span class="pill pill-info">待审核</span></td>
|
||
<td><div class="row" style="gap:6px;"><button type="button" class="btn btn-sm btn-primary" data-audit-action="approve">通过</button><button type="button" class="btn btn-sm btn-danger" data-audit-action="reject">驳回</button></div></td>
|
||
</tr>
|
||
<tr data-audit-type="手工" data-company="金牛贸易">
|
||
<td><span class="pill pill-warn">中</span></td>
|
||
<td><span class="cell-main">金牛贸易 · 手工补录</span><span class="cell-sub">现金缴存 64 万</span></td>
|
||
<td>公司手工记录</td>
|
||
<td>2026-07</td>
|
||
<td class="wrap">无银行回单附件,需人工核实后方可入账</td>
|
||
<td><span class="pill pill-info">待审核</span></td>
|
||
<td><div class="row" style="gap:6px;"><button type="button" class="btn btn-sm btn-primary" data-audit-action="approve">通过</button><button type="button" class="btn btn-sm btn-danger" data-audit-action="reject">驳回</button></div></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div class="table-foot">
|
||
<span id="auditFoot">共 0 项 · 待审核 0 项</span>
|
||
<span>审核人:系统管理员 · 操作实时写入审核日志</span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="app-view" data-page="flows">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1>流水管理</h1>
|
||
<p class="page-sub">六家成员公司上报的银行原始流水总表,含归集状态。点击任意一行可穿透查看原始流水要素与归集链路。</p>
|
||
</div>
|
||
<div class="page-actions">
|
||
<button class="btn btn-primary" id="exportFlows">
|
||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" style="width: 15px; height: 15px;"><path d="M12 4v11m0 0l-4-4m4 4l4-4"/><path d="M4 17v2.5A1.5 1.5 0 0 0 5.5 21h13a1.5 1.5 0 0 0 1.5-1.5V17"/></svg>
|
||
导出 CSV
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="filters">
|
||
<div class="field">
|
||
<label for="flowCompany">公司</label>
|
||
<select class="select" id="flowCompany"><option>全部公司</option></select>
|
||
</div>
|
||
<div class="field">
|
||
<label for="flowBank">银行</label>
|
||
<select class="select" id="flowBank"><option>全部银行</option><option>中行</option><option>工行</option><option>建行</option><option>农行</option><option>交行</option></select>
|
||
</div>
|
||
<div class="field">
|
||
<label for="flowAccount">账户</label>
|
||
<select class="select" id="flowAccount"><option>全部账户</option><option>3305</option><option>9916</option><option>7710</option><option>5562</option><option>2208</option><option>8821</option><option>6649</option></select>
|
||
</div>
|
||
<div class="field">
|
||
<label for="flowStart">日期起</label>
|
||
<input class="input" id="flowStart" type="date" value="2026-07-01" />
|
||
</div>
|
||
<div class="field">
|
||
<label for="flowEnd">日期止</label>
|
||
<input class="input" id="flowEnd" type="date" value="2026-07-31" />
|
||
</div>
|
||
<div class="field" style="min-width: 200px;">
|
||
<label for="flowKeyword">关键词</label>
|
||
<input class="input" id="flowKeyword" type="text" placeholder="摘要 / 对方 / 流水号" />
|
||
</div>
|
||
<button class="btn" id="applyFlowFilters">查询</button>
|
||
<button class="btn btn-ghost" id="resetFlowFilters">重置</button>
|
||
</div>
|
||
|
||
<div class="table-wrap">
|
||
<table class="ds-table" id="flowTable">
|
||
<thead>
|
||
<tr>
|
||
<th>日期</th>
|
||
<th>公司</th>
|
||
<th>银行账户</th>
|
||
<th>方向</th>
|
||
<th class="wrap">对方</th>
|
||
<th class="wrap">摘要</th>
|
||
<th>银行流水号</th>
|
||
<th>归集状态</th>
|
||
<th class="num-col">金额</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody></tbody>
|
||
</table>
|
||
<div class="table-foot">
|
||
<span id="flowCount">共 0 笔</span>
|
||
<span class="meta">数据范围:2026-01-01 起算 · 每月 5 日结账(7 月顺延至 08-29)</span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="app-view" data-page="companies">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1>公司与账号</h1>
|
||
<p class="page-sub">集团成员公司的档案、银行账户与登录账号管理。公司新登记的银行账户须经审核中心确认后方可参与流水归集。</p>
|
||
</div>
|
||
<div class="page-actions">
|
||
<button class="btn btn-primary" id="openCompanyDialog">新增公司</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="notice info" id="notice-pending-account" style="margin-bottom: 14px; display: none;">
|
||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" style="width: 16px; height: 16px; flex: none; margin-top: 2px; color: var(--info);"><circle cx="12" cy="12" r="8.5"/><path d="M12 8v5M12 16h.01"/></svg>
|
||
<div style="flex: 1; min-width: 0;">
|
||
<div class="n-title"><span id="pending-account-count">0</span> 个新账户登记待审核</div>
|
||
<div class="n-body" id="pending-account-body">成员公司提交的新银行账户登记,等待审核通过后纳入账期流水归集范围。</div>
|
||
</div>
|
||
<a class="btn btn-sm" data-view-link="audit" style="flex: none;">去审核</a>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">成员公司<span class="sub">数据截至 2026-08-20</span></span>
|
||
</div>
|
||
<div class="table-wrap" style="border: 0;">
|
||
<table class="ds-table" id="companyTable">
|
||
<thead>
|
||
<tr>
|
||
<th>公司名称</th>
|
||
<th class="num-col">银行账户数</th>
|
||
<th>登录账号</th>
|
||
<th>出纳</th>
|
||
<th>启用状态</th>
|
||
<th>操作</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody></tbody>
|
||
</table>
|
||
</div>
|
||
<div class="table-foot" style="border: 1px solid var(--border); border-radius: 0 0 var(--radius-lg) var(--radius-lg);">
|
||
<span id="companyFoot">共 0 家公司</span>
|
||
<span class="meta">登录账号初始密码由集团总账统一发放</span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="app-view" data-page="settings">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1>结账与期初</h1>
|
||
<p class="page-sub">维护全局结账参数与各公司期初往来余额,并在月度检查全部通过后执行结账。</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">账期时间轴<span class="sub">全局起算日 2026-01-01 起,每月 5 日结账</span></span>
|
||
</div>
|
||
<div class="timeline">
|
||
<div class="tl-cell closed"><div class="tl-month">2026-01</div><div class="tl-state">已结账</div></div>
|
||
<div class="tl-cell closed"><div class="tl-month">2026-02</div><div class="tl-state">已结账</div></div>
|
||
<div class="tl-cell closed"><div class="tl-month">2026-03</div><div class="tl-state">已结账</div></div>
|
||
<div class="tl-cell closed"><div class="tl-month">2026-04</div><div class="tl-state">已结账</div></div>
|
||
<div class="tl-cell closed"><div class="tl-month">2026-05</div><div class="tl-state">已结账</div></div>
|
||
<div class="tl-cell closed"><div class="tl-month">2026-06</div><div class="tl-state">已结账</div></div>
|
||
<div class="tl-cell current" id="tl-current"><div class="tl-month">2026-07</div><div class="tl-state" id="tl-current-state">进行中</div></div>
|
||
<div class="tl-cell open"><div class="tl-month">2026-08</div><div class="tl-state">归集中</div></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-1-2" style="margin-top: 14px;">
|
||
<div class="stack">
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">结账设置<span class="sub">对全部成员公司生效</span></span>
|
||
</div>
|
||
<form id="systemSettings" novalidate>
|
||
<div class="field" style="margin-bottom: 14px;">
|
||
<label for="cs-start">全局起算日</label>
|
||
<input class="input num-input" type="date" name="startDate" id="cs-start" />
|
||
<span class="hint" id="cs-start-hint">期初余额以此日前一日的期末数为准</span>
|
||
<span class="pill pill-muted" id="cs-start-locked" style="display: none; margin-top: 8px;">已锁定</span>
|
||
</div>
|
||
<div class="field" style="margin-bottom: 14px;">
|
||
<label for="cs-day">每月结账日</label>
|
||
<input class="input num-input" type="number" name="closingDay" id="cs-day" min="1" max="28" value="5" />
|
||
<span class="hint">每月几号执行上月结账 · 2026-07 因故顺延至 08-29</span>
|
||
</div>
|
||
<div class="field" style="margin-bottom: 16px;">
|
||
<label>自动提醒</label>
|
||
<div class="row" style="flex-wrap: wrap;">
|
||
<label style="display: inline-flex; align-items: center; gap: 8px; cursor: pointer;">
|
||
<input type="checkbox" id="cs-remind" checked style="position: absolute; opacity: 0; width: 0; height: 0;" />
|
||
<span id="cs-switch-track" style="width: 36px; height: 20px; border-radius: 999px; background: var(--accent); position: relative; flex: none; transition: background .15s ease;">
|
||
<span id="cs-switch-thumb" style="position: absolute; top: 2px; left: 18px; width: 16px; height: 16px; border-radius: 50%; background: var(--surface); transition: left .15s ease;"></span>
|
||
</span>
|
||
<span style="font-size: 13px;">结账日前自动提醒各公司出纳</span>
|
||
</label>
|
||
<select class="select" id="cs-remind-days" style="width: 110px;">
|
||
<option value="1">提前 1 天</option>
|
||
<option value="3" selected>提前 3 天</option>
|
||
<option value="5">提前 5 天</option>
|
||
</select>
|
||
</div>
|
||
<span class="hint">提醒对象为当月尚未提交流水的公司联系人</span>
|
||
</div>
|
||
<div class="row">
|
||
<button class="btn btn-primary" type="submit">保存设置</button>
|
||
<span class="meta" id="cs-save-tip" style="display: none; color: var(--success);">已保存 · 立即生效</span>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">期初余额管理<span class="sub" id="openingSubtitle">公司间往来期初数</span></span>
|
||
<button class="btn btn-sm" id="openOpeningDialog">新增</button>
|
||
</div>
|
||
<div class="notice info" id="openingSummary" style="margin: 0 0 14px; display: none;"></div>
|
||
<div class="table-wrap" style="border: 0;">
|
||
<table class="ds-table">
|
||
<thead>
|
||
<tr><th>本方公司</th><th>对方公司</th><th>方向</th><th class="num-col">金额</th><th>录入人</th><th>录入时间</th><th>状态</th><th></th></tr>
|
||
</thead>
|
||
<tbody id="openingRows"></tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">变更记录<span class="sub">起算日与期初余额改动留痕</span></span>
|
||
</div>
|
||
<div class="table-wrap" style="border: 0;">
|
||
<table class="ds-table">
|
||
<thead>
|
||
<tr><th>时间</th><th>操作人</th><th>对象</th><th>变更</th><th>原因</th></tr>
|
||
</thead>
|
||
<tbody id="calculationChangeRows"><tr><td colspan="5" class="empty">暂无变更记录</td></tr></tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card" id="closingPanel">
|
||
<div class="card-head">
|
||
<span class="card-title">月度结账<span class="sub" id="closingDescription">2026 年 7 月 · 当前未达到结账条件</span></span>
|
||
<span class="pill pill-danger" id="closingStatus">已阻断</span>
|
||
</div>
|
||
<div class="closing-check-list">
|
||
<div class="list-row">
|
||
<span class="pill pill-success" data-closing-check>公司流水提交</span>
|
||
<div class="lr-main"><div class="lr-title">流水提交</div><div class="lr-sub" data-closing-sub>5 / 6 家已完成</div></div>
|
||
<div class="lr-side"><span class="pill pill-warn" data-closing-state>待处理</span></div>
|
||
</div>
|
||
<div class="list-row">
|
||
<span class="pill pill-success" data-closing-check>账户连续性</span>
|
||
<div class="lr-main"><div class="lr-title">账户连续</div><div class="lr-sub" data-closing-sub>2 个账户存在断档</div></div>
|
||
<div class="lr-side"><span class="pill pill-danger" data-closing-state>阻断</span></div>
|
||
</div>
|
||
<div class="list-row">
|
||
<span class="pill pill-success" data-closing-check>审核事项</span>
|
||
<div class="lr-main"><div class="lr-title">审核完成</div><div class="lr-sub" data-closing-sub>0 项尚未处理</div></div>
|
||
<div class="lr-side"><span class="pill pill-danger" data-closing-state>阻断</span></div>
|
||
</div>
|
||
<div class="list-row">
|
||
<span class="pill pill-success" data-closing-check>期初余额</span>
|
||
<div class="lr-main"><div class="lr-title">期初锁定</div><div class="lr-sub" data-closing-sub>已锁定 2026.01.01</div></div>
|
||
<div class="lr-side"><span class="pill pill-success" data-closing-state>已通过</span></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="notice danger" id="block-notice" style="margin-top: 16px; display: none;">
|
||
<div>
|
||
<div class="n-title">存在阻断项,暂不能执行 2026-07 月度结账</div>
|
||
<div class="n-body" id="block-notice-body">请先处理待审核事项与账户断档。</div>
|
||
</div>
|
||
</div>
|
||
<div class="notice info" id="closed-notice" style="margin-top: 16px; display: none;">
|
||
<div>
|
||
<div class="n-title">2026-07 已结账</div>
|
||
<div class="n-body" id="closed-notice-body">结账后各公司 7 月往来数据已锁定,期初数将结转至 2026-08 账期。</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row" style="margin-top: 16px; justify-content: flex-end; flex-wrap: wrap;">
|
||
<span class="meta" id="closingHistory" style="margin-right: auto;">最近结账:2026 年 6 月 · 系统管理员 · 2026.07.05 18:10</span>
|
||
<button class="btn" id="runClosingCheck">重新检查</button>
|
||
<button class="btn btn-primary" id="executeClosing" disabled title="请先处理全部阻断事项">执行 2026-07 月度结账</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="app-view" data-page="reminders">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1>提醒管理</h1>
|
||
<p class="page-sub">向成员公司发送处理提醒,并跟踪系统提醒与人工提醒的触达与处理状态。</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="grid grid-1-2">
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">发送处理提醒<span class="sub">将以人工提醒形式送达所选公司出纳与财务负责人</span></span>
|
||
</div>
|
||
<form id="reminderForm" novalidate>
|
||
<div class="field" style="margin-bottom: 14px;">
|
||
<label>接收公司(可多选)</label>
|
||
<div class="row" id="reminderCompanyList" style="flex-wrap: wrap; gap: 8px 16px;"></div>
|
||
<span class="hint error" id="company-error" style="display: none;">请至少选择一家接收公司</span>
|
||
</div>
|
||
<div class="field" style="margin-bottom: 14px;">
|
||
<label for="reminder-type">提醒类型</label>
|
||
<select class="select" id="reminder-type">
|
||
<option selected>流水未提交</option>
|
||
<option>单边待确认</option>
|
||
<option>科目待确认</option>
|
||
<option>账户登记</option>
|
||
<option>其他</option>
|
||
</select>
|
||
</div>
|
||
<div class="field" style="margin-bottom: 14px;">
|
||
<label for="reminder-content">提醒内容</label>
|
||
<textarea class="textarea" id="reminder-content">请于截止日期前完成 2026 年 7 月银行流水上传与待确认事项处理。</textarea>
|
||
<span class="hint error" id="content-error" style="display: none;">提醒内容不能为空</span>
|
||
</div>
|
||
<div class="field" style="margin-bottom: 18px;">
|
||
<label for="reminder-deadline">截止日期</label>
|
||
<input class="input" type="date" id="reminder-deadline" value="2026-08-29" min="2026-08-20" />
|
||
</div>
|
||
<button type="submit" class="btn btn-primary" id="send-btn" style="width: 100%;">发送提醒</button>
|
||
<p class="hint" id="send-hint" style="margin-top: 10px; display: none;"></p>
|
||
</form>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-head">
|
||
<span class="card-title">提醒历史<span class="sub">含系统自动触发与人工发送的全部提醒记录</span></span>
|
||
</div>
|
||
<div class="tabs" id="reminder-tabs">
|
||
<button type="button" class="active" data-filter="all">全部<span class="tab-count" id="count-all">0</span></button>
|
||
<button type="button" data-filter="system">系统提醒<span class="tab-count" id="count-system">0</span></button>
|
||
<button type="button" data-filter="manual">人工提醒<span class="tab-count" id="count-manual">0</span></button>
|
||
</div>
|
||
<div class="table-wrap" style="border: 0;">
|
||
<table class="ds-table">
|
||
<thead>
|
||
<tr>
|
||
<th>公司</th>
|
||
<th>类型</th>
|
||
<th class="wrap">内容摘要</th>
|
||
<th>发送时间</th>
|
||
<th>截止日期</th>
|
||
<th>处理状态</th>
|
||
<th>操作</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="reminder-tbody"></tbody>
|
||
</table>
|
||
</div>
|
||
<div class="table-foot">
|
||
<span id="table-foot-count">共 0 条提醒记录</span>
|
||
<span id="table-foot-state">未读 0 · 处理中 0 · 已完成 0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 新增公司弹窗 -->
|
||
<div class="modal-backdrop" id="companyDialog">
|
||
<div class="modal">
|
||
<div class="modal-head">
|
||
<span class="modal-title">新增成员公司</span>
|
||
<button type="button" class="modal-close" data-close="companyDialog" aria-label="关闭">×</button>
|
||
</div>
|
||
<p class="modal-sub">登记后系统将生成公司端登录账号,初始密码由集团总账统一发放。</p>
|
||
<form id="companyForm" novalidate>
|
||
<div class="field" style="margin-bottom: 12px;">
|
||
<label for="f-name">公司全称</label>
|
||
<input class="input" id="f-name" name="companyName" type="text" placeholder="如:河南金牛XX有限公司" required />
|
||
</div>
|
||
<div class="field" style="margin-bottom: 12px;">
|
||
<label for="f-code">统一社会信用代码</label>
|
||
<input class="input num-input" id="f-code" name="creditCode" type="text" maxlength="18" placeholder="18 位,如 91410100MA9K2X417A" />
|
||
</div>
|
||
<label class="row" style="gap: 6px; font-size: 13px; margin-bottom: 12px; cursor: pointer;">
|
||
<input type="checkbox" name="createUser" checked style="width: auto;" />同时创建公司账号
|
||
</label>
|
||
<div class="grid grid-2">
|
||
<div class="field">
|
||
<label for="f-login">登录账号</label>
|
||
<input class="input" id="f-login" name="loginName" type="text" required />
|
||
</div>
|
||
<div class="field">
|
||
<label for="f-cashier">出纳人员</label>
|
||
<input class="input" id="f-cashier" name="cashier" type="text" required />
|
||
</div>
|
||
</div>
|
||
<p class="hint" style="margin-top: 10px;">创建后生成随机初始密码,仅显示一次,首次登录必须修改。</p>
|
||
<div class="modal-actions">
|
||
<button type="button" class="btn" data-close="companyDialog">取消</button>
|
||
<button type="submit" class="btn btn-primary">创建公司与账号</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 公司详情弹窗 -->
|
||
<div class="modal-backdrop" id="modal-detail">
|
||
<div class="modal wide">
|
||
<div class="modal-head">
|
||
<span class="modal-title" id="d-title">公司详情</span>
|
||
<button type="button" class="modal-close" data-close="modal-detail" aria-label="关闭">×</button>
|
||
</div>
|
||
<p class="modal-sub" id="d-sub"></p>
|
||
<div class="detail-box" style="margin-bottom: 14px;">
|
||
<dl class="kv" id="d-kv"></dl>
|
||
</div>
|
||
<div class="card-head" style="margin-bottom: 10px;">
|
||
<span class="card-title">登录账号</span>
|
||
</div>
|
||
<div class="detail-box">
|
||
<div class="row-between">
|
||
<div>
|
||
<div class="num" id="d-login-account" style="font-weight: 650;"></div>
|
||
<div class="meta" id="d-login-meta" style="margin-top: 3px;"></div>
|
||
</div>
|
||
<button class="btn btn-sm" id="btn-reset-pwd">重置密码</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 新增期初余额弹窗 -->
|
||
<div class="modal-backdrop" id="openingDialog">
|
||
<div class="modal">
|
||
<div class="modal-head">
|
||
<span class="modal-title">新增期初余额</span>
|
||
<button type="button" class="modal-close" data-close-opening aria-label="关闭">×</button>
|
||
</div>
|
||
<p class="modal-sub">按本方视角记录公司间期初方向,提交后进入复核。</p>
|
||
<form id="openingForm" novalidate>
|
||
<div class="grid grid-2">
|
||
<div class="field">
|
||
<label for="ob-from">本方公司</label>
|
||
<select class="select" name="from" id="ob-from" required></select>
|
||
</div>
|
||
<div class="field">
|
||
<label for="ob-to">对方公司</label>
|
||
<select class="select" name="to" id="ob-to" required></select>
|
||
</div>
|
||
<div class="field">
|
||
<label for="ob-amount">金额</label>
|
||
<input class="input num-input" name="amount" id="ob-amount" type="number" min="0" step="0.01" required />
|
||
</div>
|
||
<div class="field">
|
||
<label for="ob-reason">录入原因</label>
|
||
<input class="input" name="reason" id="ob-reason" required placeholder="必填,将写入变更记录" />
|
||
</div>
|
||
</div>
|
||
<p class="hint" style="margin-top: 10px;">正数表示本方对对方为应收;提交后进入待确认,确认后才计入公司端余额。</p>
|
||
<div class="modal-actions">
|
||
<button type="button" class="btn" data-close-opening>取消</button>
|
||
<button type="submit" class="btn btn-primary">提交复核</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 审核通过弹窗 -->
|
||
<div class="modal-backdrop" id="modal-approve">
|
||
<div class="modal">
|
||
<div class="modal-head">
|
||
<span class="modal-title">确认通过</span>
|
||
<button type="button" class="modal-close" data-close="modal-approve">×</button>
|
||
</div>
|
||
<p class="modal-sub">通过后该事项将标记为「已通过」并写入审核日志,不可撤销。</p>
|
||
<div class="detail-box">
|
||
<dl class="kv">
|
||
<dt>公司 / 事项</dt><dd id="approve-company">—</dd>
|
||
<dt>期间</dt><dd id="approve-period">—</dd>
|
||
<dt>类型</dt><dd id="approve-type">—</dd>
|
||
<dt>审核依据</dt><dd id="approve-basis" style="font-family: var(--font-body);">—</dd>
|
||
</dl>
|
||
</div>
|
||
<div class="modal-actions">
|
||
<button type="button" class="btn" data-close="modal-approve">取消</button>
|
||
<button type="button" class="btn btn-primary" id="approve-confirm">确认通过</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 审核驳回弹窗 -->
|
||
<div class="modal-backdrop" id="modal-reject">
|
||
<div class="modal">
|
||
<div class="modal-head">
|
||
<span class="modal-title">驳回事项</span>
|
||
<button type="button" class="modal-close" data-close="modal-reject">×</button>
|
||
</div>
|
||
<p class="modal-sub">驳回后系统将自动向该公司发送整改通知,请填写明确的驳回原因。</p>
|
||
<div class="field">
|
||
<label for="reject-reason">驳回原因</label>
|
||
<textarea class="textarea" id="reject-reason" placeholder="例如:补传的银行回单金额与流水不一致,请重新核对后再提交。"></textarea>
|
||
<span class="hint error" id="reject-hint" style="display: none;">请填写驳回原因(不少于 5 个字)</span>
|
||
</div>
|
||
<div class="modal-actions">
|
||
<button type="button" class="btn" data-close="modal-reject">取消</button>
|
||
<button type="button" class="btn btn-danger" id="reject-confirm">确认驳回</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 结账确认弹窗 -->
|
||
<div class="modal-backdrop" id="closingDialog">
|
||
<div class="modal">
|
||
<div class="modal-head">
|
||
<span class="modal-title">确认执行 2026-07 月度结账</span>
|
||
<button type="button" class="modal-close" data-close-closing aria-label="关闭">×</button>
|
||
</div>
|
||
<p class="modal-sub">结账后成员公司的 7 月流水与往来确认将锁定,不可再修改。</p>
|
||
<form id="closingForm" novalidate>
|
||
<div class="detail-box">
|
||
<dl class="kv">
|
||
<dt>结账账期</dt><dd>2026-07</dd>
|
||
<dt>检查通过</dt><dd>全部前置检查已通过</dd>
|
||
<dt>期末归集</dt><dd>往来净额将结转至 2026-08 期初</dd>
|
||
</dl>
|
||
</div>
|
||
<label class="row" style="gap: 6px; font-size: 13px; margin-top: 14px; cursor: pointer;">
|
||
<input type="checkbox" name="confirm" required style="width: auto;" />我已复核 2026 年 7 月结账结果
|
||
</label>
|
||
<div class="modal-actions">
|
||
<button type="button" class="btn" data-close-closing>再想想</button>
|
||
<button type="submit" class="btn btn-primary">确认结账</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 往来穿透弹窗 -->
|
||
<div class="modal-backdrop" id="traceModal">
|
||
<div class="modal wide">
|
||
<div class="modal-head">
|
||
<span class="modal-title">往来穿透 · 银行原始流水链路</span>
|
||
<button type="button" class="modal-close" id="traceClose" aria-label="关闭">×</button>
|
||
</div>
|
||
<p class="modal-sub" id="traceSub">—</p>
|
||
<div class="detail-box">
|
||
<dl class="kv">
|
||
<dt>本方银行流水号</dt><dd id="kvOwnTx">—</dd>
|
||
<dt>本方账户</dt><dd id="kvOwnAcct">—</dd>
|
||
<dt>对方公司</dt><dd id="kvPeerCo">—</dd>
|
||
<dt>对方账户</dt><dd id="kvPeerAcct">—</dd>
|
||
<dt>交易时间</dt><dd id="kvTime">—</dd>
|
||
<dt>金额</dt><dd id="kvAmt">—</dd>
|
||
<dt>归集批次号</dt><dd id="kvBatch">—</dd>
|
||
<dt>对方证据流水号</dt><dd id="kvEvidence">—</dd>
|
||
</dl>
|
||
</div>
|
||
<div class="modal-actions">
|
||
<button type="button" class="btn" id="traceOk">关闭</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 流水穿透详情弹窗 -->
|
||
<div class="modal-backdrop" id="tx-modal">
|
||
<div class="modal wide">
|
||
<div class="modal-head">
|
||
<span class="modal-title">流水穿透详情</span>
|
||
<button type="button" class="modal-close" id="tx-modal-close" aria-label="关闭">×</button>
|
||
</div>
|
||
<p class="modal-sub" id="tx-modal-sub"></p>
|
||
<div class="detail-box">
|
||
<div class="card-title" style="margin-bottom: 10px;">原始流水</div>
|
||
<dl class="kv">
|
||
<dt>银行流水号</dt><dd id="d-serial"></dd>
|
||
<dt>银行</dt><dd id="d-bank"></dd>
|
||
<dt>账户</dt><dd id="d-account"></dd>
|
||
<dt>交易时间</dt><dd id="d-time"></dd>
|
||
<dt>对方户名</dt><dd id="d-peer"></dd>
|
||
<dt>对方账号</dt><dd id="d-peer-acct"></dd>
|
||
<dt>金额</dt><dd id="d-amount"></dd>
|
||
</dl>
|
||
</div>
|
||
<div class="detail-box" style="margin-top: 12px;">
|
||
<div class="card-title" style="margin-bottom: 10px;">归集链路</div>
|
||
<dl class="kv">
|
||
<dt>归集状态</dt><dd id="d-status"></dd>
|
||
<dt>归集往来</dt><dd id="d-pair"></dd>
|
||
<dt>本方科目</dt><dd id="d-subject"></dd>
|
||
<dt>归集批次</dt><dd id="d-batch"></dd>
|
||
<dt>说明</dt><dd id="d-note" style="font-family: var(--font-body);"></dd>
|
||
</dl>
|
||
</div>
|
||
<div class="modal-actions">
|
||
<button type="button" class="btn" id="tx-modal-ok">关闭</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 提醒历史弹窗 -->
|
||
<div class="modal-backdrop" id="history-modal">
|
||
<div class="modal">
|
||
<div class="modal-head">
|
||
<span class="modal-title" id="history-title">提醒历史</span>
|
||
<button type="button" class="modal-close" id="history-close" aria-label="关闭">×</button>
|
||
</div>
|
||
<p class="modal-sub" id="history-sub"></p>
|
||
<div id="history-list"></div>
|
||
<div class="modal-actions">
|
||
<button type="button" class="btn" id="history-ok">关闭</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="toast-region" id="toastRegion" aria-live="polite"></div>
|
||
<script src="app.js?v=4"></script>
|
||
<script>
|
||
(function () {
|
||
var input = document.getElementById("company-search");
|
||
if (!input) return;
|
||
input.addEventListener("input", function () {
|
||
var q = this.value.trim();
|
||
var rows = document.querySelectorAll("#companyTotals tbody tr");
|
||
rows.forEach(function (tr) {
|
||
tr.style.display = (!q || tr.textContent.indexOf(q) > -1) ? "" : "none";
|
||
});
|
||
});
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html>
|