Files
freedakandDevin f307e877c9 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>
2026-09-13 09:07:23 +08:00

121 lines
5.6 KiB
HTML
Raw Permalink 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.
<!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>