feat: OPC 社区运营公共服务平台 Demo v1.3

一人公司/超级个体产业社区公共服务基础设施 Demo,包含:
- 18 个角色页面(运营商/OPC/企业/个人/学员/培训机构/服务机构/政府/审计/金融)
- 暖橙活力主题 UI(渐变毛玻璃 + 暖色侧栏)
- 五步运营闭环(选方向→育人才→建平台→立SOP→聚产业)
- 华强北硬件供应链接入
- 蜂群式交付 + 产业集聚效应展示
- 需求文档(REQ-001~118 全覆盖)

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
2026-09-13 09:07:23 +08:00
co-authored by Devin
commit f307e877c9
30 changed files with 11397 additions and 0 deletions
+120
View File
@@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>审计机构视图 · OPC 公共服务平台 Demo</title>
<link rel="stylesheet" href="assets/style.css">
</head>
<body data-page="audit">
<header class="topnav" id="topnav"></header>
<div class="container">
<div class="notice" style="margin-bottom:16px">
REQ-093:本视图为审计/评估机构授权只读视图,仅可查看委托范围内的绩效与资金台账,机构与个人明细未授权不可见。
</div>
<div class="page-title">审计工作台</div>
<div class="page-sub" id="au-sub"></div>
<!-- 授权范围 -->
<div class="card">
<h3>授权范围 <span class="req">REQ-093 · 按委托书限定</span></h3>
<table id="au-scope"></table>
</div>
<!-- 资金台账核对 -->
<div class="section">
<h2>资金台账核对 <span class="req">REQ-090/093</span></h2>
<div class="card"><table id="au-ledger"></table></div>
</div>
<!-- 抽样底稿 -->
<div class="section">
<div class="two-col">
<div class="card">
<h3>抽样核查底稿 <span class="req">SMP_ 统一编号</span></h3>
<table id="au-smp"></table>
</div>
<div class="card">
<h3>审计动作</h3>
<ul class="list" id="au-actions">
<li><span>导出审计底稿包</span><button class="btn sm" onclick="toast('底稿包导出中:含台账快照、抽样记录、核对结论(演示)')">导出</button></li>
<li><span>向运营商发起函证</span><button class="btn sm ghost" onclick="confirmReq()">申请</button></li>
<li><span>登记核查异议</span><button class="btn sm ghost" onclick="objection()">登记</button></li>
<li><span>查看平台操作日志(授权段)</span><button class="btn sm ghost" onclick="toast('已调取 09-01~09-11 政府侧操作日志 3 条、拨付留痕 2 条(演示)')">调取</button></li>
</ul>
<p class="muted" style="margin-top:10px">所有调阅与导出动作本身亦留痕,接受监管复核。</p>
</div>
</div>
</div>
</div>
<div class="footer">OPC 公共服务平台 Demo · 审计机构视图</div>
<script src="assets/app.js"></script>
<script src="assets/store.js"></script>
<script>
function renderPage(DB) {
const A = DB.audit;
const role = currentRole();
const isOperator = role === 'operator';
document.getElementById('au-sub').textContent = isOperator
? `${A.org} · ${A.engagement} · 运营商协调视角(配合审计核查与函证回复) · 数据截至 2026-09-11`
: `${A.org} · ${A.engagement} · 数据截至 2026-09-11`;
// 运营商协调视角:隐藏审计专属操作(发起函证、登记异议、导出底稿),只保留查看日志
if (isOperator) {
document.getElementById('au-actions').innerHTML = `
<li><span>查看平台操作日志(授权段)</span><button class="btn sm ghost" onclick="toast('已调取 09-01~09-11 政府侧操作日志 3 条、拨付留痕 2 条(演示)')">调取</button></li>
<li><span>回复审计函证</span><button class="btn sm ghost" onclick="toast('暂无待回复函证(演示)')">查看</button></li>
`;
}
document.getElementById('au-scope').innerHTML =
`<tr><th>数据域</th><th>范围</th><th>权限</th></tr>` +
A.scope.map(s => `<tr><td>${s[0]}</td><td>${s[1]}</td><td>${s[2] === '只读' ? '<span class="badge ok">只读</span>' : '<span class="badge gray">未授权</span>'}</td></tr>`).join('');
document.getElementById('au-ledger').innerHTML =
`<tr><th>台账编码</th><th>事项</th><th>金额</th><th>核对凭证</th><th>状态</th></tr>` +
A.ledgers.map(l => `<tr><td>${l.code}</td><td>${l.item}</td><td>${l.amount}</td><td>${l.evidence}</td><td>${B(l.status)}</td></tr>`).join('');
document.getElementById('au-smp').innerHTML =
`<tr><th>底稿号</th><th>核查对象</th><th>核查点</th><th>结论</th></tr>` +
A.samplings.map((s, i) => `<tr><td>${s.code}</td><td>${s.target}</td><td>${s.check}</td><td>${B(s.result)}${
s.result[0].includes('待补') ? ` <button class="btn sm ghost" onclick="supp(${i})">催补</button>` : ''
}</td></tr>`).join('');
}
function supp(i) {
const s = DB.audit.samplings[i];
confirmDlg('催补凭证', `就 ${s.code}(${s.target})向运营商发起补充凭证函证?`, '发送函证', () => {
s.result = ['函证已发出', 'info'];
renderPage(DB);
toast('函证已发出并留痕,待运营商回复');
});
}
function confirmReq() {
openModal({
title: '函证申请',
body: `<div class="field"><label>函证事项</label><select><option>拨付凭证真实性</option><option>订单验收记录</option><option>券核销与订单关联</option></select></div>
<div class="field"><label>说明</label><textarea placeholder="函证内容与回复期限"></textarea></div>`,
actions: [
{ label: '取消', cls: 'ghost' },
{ label: '发送', onClick: m => { m.remove(); toast('函证申请已提交,运营商需在 5 个工作日内回复'); } },
],
});
}
function objection() {
openModal({
title: '登记核查异议',
body: `<div class="field"><label>关联台账/底稿</label><input placeholder="如 FUND_0003 / SMP_20260901"></div>
<div class="field"><label>异议内容</label><textarea placeholder="差异描述与依据"></textarea></div>`,
actions: [
{ label: '取消', cls: 'ghost' },
{ label: '登记', cls: 'danger', onClick: m => { m.remove(); toast('异议已登记,进入三方核对流程', 'warn'); } },
],
});
}
</script>
</body>
</html>