This repository has been archived on 2026-09-13. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
BPOS-TMP-REPO/docs/SS02-ACT-WORK-05-html/ACT-WORK-05-执行工单-01-评估输入与资料补齐确认.html
T
xcsandClaude Fable 5 bd86dd6088 docs(w05): 差异评估的目标件五份 HTML + 三份说明 + 实施计划;三张图
活动包 views/target-style.ts / report.ts 与两份 W05 文档都指着 docs/SS02-ACT-WORK-05-html ——
模版「逐字节搬自目标件」的那份目标件此前没入库。docs/img/cy 三张 png 现无引用,随批入库。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0167qWjeyBwvfdGovd7FWbCu
2026-08-27 11:44:35 +08:00

297 lines
23 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.
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>执行工单 1 · 评估输入与资料补齐确认 · SS02 ACT-WORK-05 差异评估</title>
<style>
:root{
--ink:#1f2329; --ink-2:#41464e; --ink-3:#646a73; --ink-4:#8f959e;
--line:#dee0e3; --line-soft:#e8eaed; --soft:#f8f9fb;
--brand:#3370ff; --brand-deep:#245bdb; --brand-soft:#e1eaff; --brand-wash:#f0f4ff;
--human:#a9711e; --human-soft:#f6ecd8; --human-line:#e6d3a8;
--ok:#278717; --ok-soft:#e8f8e4; --danger:#d83931; --danger-soft:#feeae9;
--mono:"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#eef1f6;color:var(--ink);font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
.page{margin:0;padding:0}
.card{background:#fff;overflow:hidden;border:0;border-radius:0;box-shadow:none}
.card-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:2px solid var(--ink);background:linear-gradient(120deg,#fffaf1 0%,#fff 55%,#fbf6ea 100%)}
.badge{flex:none;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:var(--human);color:#fff;font-weight:800;font-size:13px;box-shadow:0 6px 16px rgba(169,113,30,.25)}
.tit{flex:1;min-width:0}
.tit .kick{font-size:11px;letter-spacing:.08em;color:var(--ink-4);font-weight:700}
.tit h1{margin:2px 0 0;font-size:19px;font-weight:800;line-height:1.3}
.tit .sub{font-size:12px;color:var(--ink-3);margin-top:3px}
.side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}
.tag{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px;color:var(--human);background:var(--human-soft);border:1px solid var(--human-line)}
.step{font-size:12px;color:var(--ink-3)}
.deadline{font-size:12px;color:var(--ink-3)}
.deadline b{color:var(--danger)}
.card-bd{padding:20px 22px}
.zone{font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--ink-4);margin:0 0 8px}
.zone b{color:var(--ink-3)}
.note{border:1px solid var(--line);border-left:3px solid var(--human);border-radius:8px;background:var(--soft);padding:14px 16px;margin-bottom:16px}
.note p{margin:0;font-size:13px;color:var(--ink-2)}
.note b{color:var(--ink)}
.note .done{color:var(--ok);font-weight:700}
.note .need{color:var(--human);font-weight:700}
.jc-editgate{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 10px;padding:9px 12px;border-radius:9px;background:var(--soft);border:1px solid var(--line-soft);font-size:12px;color:var(--ink-3)}
.jc-editgate-t{flex:1 1 auto;min-width:0}
.jc-editgate-t b{color:var(--ink-2);font-weight:700}
.jc-egbtn{flex:none;display:inline-flex;align-items:center;gap:5px;cursor:pointer;border:1px solid var(--line);border-radius:7px;padding:6px 13px;font:inherit;font-size:12px;font-weight:700;color:var(--ink-2);background:#fff;transition:border-color .16s,color .16s,background .16s}
.jc-egbtn:hover{border-color:var(--brand);color:var(--brand)}
.jc-egbtn.save{color:#fff;background:var(--human);border-color:var(--human)}
.jc-egbtn.save:hover{filter:brightness(1.06);color:#fff}
.jc-editgate .eg-cancel,.jc-editgate .eg-save{display:none}
.jc-editgate.on{background:var(--human-soft);border-color:var(--human-line);color:#7c4a12}
.jc-editgate.on .eg-open{display:none}
.jc-editgate.on .eg-cancel,.jc-editgate.on .eg-save{display:inline-flex}
.tbl-wrap{border:1px solid var(--line-soft);border-radius:10px;overflow:hidden}
table{width:100%;border-collapse:collapse;font-size:12.5px}
th{text-align:left;background:var(--soft);font-size:11px;letter-spacing:.03em;font-weight:800;color:var(--ink-3);padding:9px 10px;border-bottom:1px solid var(--line)}
th.req::after{content:" *";color:var(--danger);font-size:11px}
td{padding:8px 10px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
tr:last-child td{border-bottom:0}
td.rn{position:relative;width:38px;white-space:nowrap;font-family:var(--mono);font-size:11px;color:var(--ink-4);text-align:center}
.jc-vcell{display:block;font-size:12.5px;color:var(--ink);line-height:1.5;overflow-wrap:anywhere}
.jc-vcell.mono{font-family:var(--mono);font-size:11.5px;color:var(--ink-2)}
.jc-cell{display:none;width:100%;min-width:60px;border:1px solid var(--line);border-radius:6px;padding:6px 8px;font:inherit;font-size:12.5px;color:var(--ink);background:#fff}
.jc-cell.mono{font-family:var(--mono);font-size:11.5px}
.jc-cell:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-wash);outline:none}
table.on td>.jc-vcell{display:none}
table.on td>.jc-cell{display:block}
td.rn .jc-rowdel{display:none;width:22px;height:22px;margin:0 auto;cursor:pointer;border:1px solid var(--line);border-radius:6px;padding:0;font:inherit;font-size:14px;line-height:1;color:var(--ink-3);background:#fff}
td.rn .jc-rowdel:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}
table.on td.rn .jc-rn-num{display:none}
table.on td.rn .jc-rowdel{display:block}
.jc-addrow{display:none;margin:8px 0 0;padding:8px 12px;border-radius:9px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
.jc-addrow.show{display:flex;align-items:center;gap:8px}
.jc-addrow button{cursor:pointer;border:1px solid var(--brand-soft);border-radius:7px;padding:5px 12px;font:inherit;font-size:12px;font-weight:700;color:var(--brand-deep);background:var(--brand-wash)}
.jc-addrow button:hover{background:var(--brand-soft)}
.jc-addrow em{font-style:normal;font-size:11.5px;color:var(--ink-4)}
.flow{margin-top:16px;padding:9px 12px;border-radius:8px;background:var(--soft);border:1px dashed var(--line);font-size:12px;color:var(--ink-3)}
.flow b{color:var(--ink)}
.card-foot{padding:13px 22px;border-top:1px solid var(--line-soft);font-size:11.5px;color:var(--ink-4);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
@media(max-width:600px){.card-head{flex-wrap:wrap}.side{align-items:flex-start}}
/* 补充:评估输入清单状态标识(仅追加,不改动基件样式) */
.mono{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
.st{display:inline-block;font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;border:1px solid transparent;white-space:nowrap}
.st.bound{color:var(--ink-3);background:#eef1f6;border-color:var(--line)}
.st.ok{color:var(--ok);background:var(--ok-soft);border-color:#c9ecc2}
.st.miss{color:var(--human);background:var(--human-soft);border-color:var(--human-line)}
.st.def{color:var(--brand-deep);background:var(--brand-wash);border-color:var(--brand-soft)}
tr.ro td{background:var(--soft)}
table.on td>.jc-vcell.ro{display:block}
</style>
</head>
<body>
<div class="page">
<div class="card">
<header class="card-head">
<div class="badge">执行</div>
<div class="tit">
<div class="kick">SS02 · ACT-WORK-05 差异评估 · 执行工单 1/1</div>
<h1>评估输入与资料补齐确认</h1>
<div class="sub">收件人:<span data-slot="meta.task.owner">PW · 王工</span> · 关联任务:<span data-slot="meta.task.id">TASK-BT02-20260818-007</span></div>
</div>
<div class="side">
<span class="tag">执行工单</span>
<span class="step" data-slot="meta.phase">步骤 1/5 · 建立评估上下文</span>
<span class="deadline">最迟交回:<b data-slot="card.deadline">1 个工作日</b></span>
</div>
</header>
<div class="card-bd">
<p class="zone"><b>【做什么】</b>—— 启动 4 项已绑定,其余信息在工单里补齐</p>
<div class="note">
<p><span class="done">AI 已完成</span>:系统已按启动传入的 <b>4 项</b>完成绑定——客户 customer_id、客户需求 request_description(新建 P-01 · 版本 V1)、原 PN、候选 PN(数组,逐个评估)——并生成输入快照(input_snapshot_ref)。本轮评估对象:<b>LM2596S-5.0(TI)→ 3 个候选(XL2596S-5.0 / LM2596S-ADJ / 国产 DCDC)Pin-to-Pin 跨品牌替代</b>(BT-02 场景)。</p>
<p><span class="need">需要你补齐</span>:启动时未收的信息(应用场景、BOM 位——<b>不回表单,直接在下表补</b>);系统已带出默认值(替代类型 Pin-to-Pin、规则版本 R-2026.07、负责人/期限),可确认可改。本单缺口只覆盖「<b>有而不全</b>」;「<b>完全没有</b>」(PN 不在库)由系统派数据工单创建整条记录,不在本单。datasheet 在数据工单里上传(选填),启动与本单都不收。点「编辑」在下表「补充内容」列填入;<b>加一行 = 补充 AI 未列出的资料项</b>,<b>删一行 = 该输入项不适用</b>。未补齐的缺口项将按 <b>UNKNOWN</b> 进入差异评估。</p>
</div>
<p class="zone"><b>【交回什么】</b>—— 评估输入清单(已绑定项只读核对,缺口项补齐,*为必填)</p>
<div class="jc-editgate" id="editgate">
<span class="jc-editgate-t"><b data-slot="sd.input_gap_count">3 项资料存在缺口或待确认</b>(应用场景 / BOM 位 / 使能阈值),另有 3 项默认值已带出可改;「已绑定」行启动时冻结,不可改</span>
<button class="jc-egbtn eg-open" type="button">编辑</button>
<button class="jc-egbtn eg-cancel" type="button">取消</button>
<button class="jc-egbtn eg-save" type="button">保存</button>
</div>
<div class="tbl-wrap">
<table id="tbl">
<thead>
<tr>
<th style="width:38px">#</th>
<th data-h="输入项">输入项</th>
<th data-h="来源">来源</th>
<th data-h="状态">状态</th>
<th data-h="绑定值/缺口说明">绑定值 / 缺口说明</th>
<th class="req" data-h="补充内容">补充内容</th>
</tr>
</thead>
<tbody data-rows="in.evaluation_inputs">
<tr class="ro">
<td class="rn"><span class="jc-rn-num">1</span></td>
<td data-field="input_item"><span class="jc-vcell ro">客户 customer_id</span></td>
<td data-field="source_ledger"><span class="jc-vcell ro mono">L-02</span></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st bound">已绑定</span></span></td>
<td data-field="detail"><span class="jc-vcell ro mono">CUS-2025-0007</span></td>
<td data-field="supplement"><span class="jc-vcell ro">—</span></td>
</tr>
<tr class="ro">
<td class="rn"><span class="jc-rn-num">2</span></td>
<td data-field="input_item"><span class="jc-vcell ro">客户需求 request_description</span></td>
<td data-field="source_ledger"><span class="jc-vcell ro mono">P-01</span></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st bound">已绑定</span></span></td>
<td data-field="detail"><span class="jc-vcell ro">REQ-20260826-001 · V1(启动时新建:工业电源 12V→5V,替代 LM2596S-5.0)</span></td>
<td data-field="supplement"><span class="jc-vcell ro">—</span></td>
</tr>
<tr class="ro">
<td class="rn"><span class="jc-rn-num">3</span></td>
<td data-field="input_item"><span class="jc-vcell ro">原内部料号 original_internal_pn</span></td>
<td data-field="source_ledger"><span class="jc-vcell ro mono">P-08</span></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st bound">已绑定</span></span></td>
<td data-field="detail"><span class="jc-vcell ro mono">LM2596S-5.0(TI)</span></td>
<td data-field="supplement"><span class="jc-vcell ro">—</span></td>
</tr>
<tr class="ro">
<td class="rn"><span class="jc-rn-num">4</span></td>
<td data-field="input_item"><span class="jc-vcell ro">候选内部料号 ① candidate_internal_pn[]</span></td>
<td data-field="source_ledger"><span class="jc-vcell ro mono">P-08</span></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st bound">已绑定</span></span></td>
<td data-field="detail"><span class="jc-vcell ro mono">XL2596S-5.0(XLSEMI)</span></td>
<td data-field="supplement"><span class="jc-vcell ro">—</span></td>
</tr>
<tr class="ro">
<td class="rn"><span class="jc-rn-num">5</span></td>
<td data-field="input_item"><span class="jc-vcell ro">候选内部料号 ② candidate_internal_pn[]</span></td>
<td data-field="source_ledger"><span class="jc-vcell ro mono">P-08</span></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st bound">已绑定</span></span></td>
<td data-field="detail"><span class="jc-vcell ro mono">LM2596S-ADJ(TI 同族可调版)</span></td>
<td data-field="supplement"><span class="jc-vcell ro">—</span></td>
</tr>
<tr class="ro">
<td class="rn"><span class="jc-rn-num">6</span></td>
<td data-field="input_item"><span class="jc-vcell ro">候选内部料号 ③ candidate_internal_pn[]</span></td>
<td data-field="source_ledger"><span class="jc-vcell ro mono">P-08</span></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st bound">已绑定</span></span></td>
<td data-field="detail"><span class="jc-vcell ro">国产 DCDC(32V 输入上限 · 占位型号)</span></td>
<td data-field="supplement"><span class="jc-vcell ro">—</span></td>
</tr>
<tr>
<td class="rn"><span class="jc-rn-num">7</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
<td data-field="input_item"><span class="jc-vcell">应用场景 application_scenario</span><input class="jc-cell" value="应用场景 application_scenario"></td>
<td data-field="source_ledger"><span class="jc-vcell mono">P-01</span><input class="jc-cell mono" value="P-01"></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st miss">待补*</span></span></td>
<td data-field="detail"><span class="jc-vcell">启动时未收,需向客户确认</span><input class="jc-cell" value="启动时未收,需向客户确认"></td>
<td data-field="supplement"><span class="jc-vcell">12V→5V、工业温域、40V 输入上限(示例已补)</span><input class="jc-cell" value="12V→5V、工业温域、40V 输入上限(示例已补)"></td>
</tr>
<tr>
<td class="rn"><span class="jc-rn-num">8</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
<td data-field="input_item"><span class="jc-vcell">BOM 位 bom_position</span><input class="jc-cell" value="BOM 位 bom_position"></td>
<td data-field="source_ledger"><span class="jc-vcell mono">P-09</span><input class="jc-cell mono" value="P-09"></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st miss">待补*</span></span></td>
<td data-field="detail"><span class="jc-vcell">启动时未收</span><input class="jc-cell" value="启动时未收"></td>
<td data-field="supplement"><span class="jc-vcell">U3 电源位(示例已补)</span><input class="jc-cell" value="U3 电源位(示例已补)"></td>
</tr>
<tr>
<td class="rn"><span class="jc-rn-num">9</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
<td data-field="input_item"><span class="jc-vcell">替代类型 substitution_type</span><input class="jc-cell" value="替代类型 substitution_type"></td>
<td data-field="source_ledger"><span class="jc-vcell">—</span><input class="jc-cell" value="—"></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st def">默认·可改</span></span></td>
<td data-field="detail"><span class="jc-vcell">默认 Pin-to-Pin</span><input class="jc-cell" value="默认 Pin-to-Pin"></td>
<td data-field="supplement"><span class="jc-vcell">—</span><input class="jc-cell" value="—"></td>
</tr>
<tr>
<td class="rn"><span class="jc-rn-num">10</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
<td data-field="input_item"><span class="jc-vcell">规则版本 rule_version</span><input class="jc-cell" value="规则版本 rule_version"></td>
<td data-field="source_ledger"><span class="jc-vcell mono">GOV</span><input class="jc-cell mono" value="GOV"></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st def">默认·可改</span></span></td>
<td data-field="detail"><span class="jc-vcell mono">默认当前发布版 R-2026.07(as_of 锁定,随结论落账)</span><input class="jc-cell mono" value="默认当前发布版 R-2026.07(as_of 锁定,随结论落账)"></td>
<td data-field="supplement"><span class="jc-vcell">—</span><input class="jc-cell" value="—"></td>
</tr>
<tr>
<td class="rn"><span class="jc-rn-num">11</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
<td data-field="input_item"><span class="jc-vcell">负责人 / 期限 owner · deadline</span><input class="jc-cell" value="负责人 / 期限 owner · deadline"></td>
<td data-field="source_ledger"><span class="jc-vcell">—</span><input class="jc-cell" value="—"></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st def">默认·可改</span></span></td>
<td data-field="detail"><span class="jc-vcell">PW · 王工 / 审核 FAE · 李工 · 1 个工作日(按客户线默认)</span><input class="jc-cell" value="PW · 王工 / 审核 FAE · 李工 · 1 个工作日(按客户线默认)"></td>
<td data-field="supplement"><span class="jc-vcell">—</span><input class="jc-cell" value="—"></td>
</tr>
<tr>
<td class="rn"><span class="jc-rn-num">12</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
<td data-field="input_item"><span class="jc-vcell">候选 PN 使能阈值</span><input class="jc-cell" value="候选 PN 使能阈值"></td>
<td data-field="source_ledger"><span class="jc-vcell mono">P-08</span><input class="jc-cell mono" value="P-08"></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st miss">待确认·需补</span></span></td>
<td data-field="detail"><span class="jc-vcell">原厂未披露(有而不全)</span><input class="jc-cell" value="原厂未披露(有而不全)"></td>
<td data-field="supplement"><span class="jc-vcell mono">关联验证任务 VAL-2026-0188</span><input class="jc-cell mono" value="关联验证任务 VAL-2026-0188"></td>
</tr>
<tr>
<td class="rn"><span class="jc-rn-num">13</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
<td data-field="input_item"><span class="jc-vcell">原 PN 资料版本</span><input class="jc-cell" value="原 PN 资料版本"></td>
<td data-field="source_ledger"><span class="jc-vcell mono">P-10</span><input class="jc-cell mono" value="P-10"></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st ok">齐备</span></span></td>
<td data-field="detail"><span class="jc-vcell">Rev H(2023-09)已核验</span><input class="jc-cell" value="Rev H(2023-09)已核验"></td>
<td data-field="supplement"><span class="jc-vcell">—</span><input class="jc-cell" value="—"></td>
</tr>
<tr>
<td class="rn"><span class="jc-rn-num">14</span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>
<td data-field="input_item"><span class="jc-vcell">外部来源清单</span><input class="jc-cell" value="外部来源清单"></td>
<td data-field="source_ledger"><span class="jc-vcell mono">EXT-02</span><input class="jc-cell mono" value="EXT-02"></td>
<td data-field="status"><span class="jc-vcell ro"><span class="st ok">齐备</span></span></td>
<td data-field="detail"><span class="jc-vcell">—</span><input class="jc-cell" value="—"></td>
<td data-field="supplement"><span class="jc-vcell">—</span><input class="jc-cell" value="—"></td>
</tr>
</tbody>
</table>
</div>
<div class="jc-addrow" id="addrow">
<button type="button">+ 加一行(补充资料项)</button>
<em>新加行的「补充内容」为必填;「绑定值 / 缺口说明」栏写清这项资料是什么、AI 为什么拿不到</em>
</div>
<div class="flow"><b>审批 / 提交:</b>本工单只承载内容;「提交」请在对话区的【执行卡】中进行。<b>提交后去向:</b>补齐后进入步骤 2 · AI 读取与标准化,仍缺失的项将按 UNKNOWN 进入差异评估。<b>注意:</b>启动参数如有误,需退回触发方修订后重新触发,本单不可改。</div>
</div>
<footer class="card-foot">
<span>SS02 · ACT-WORK-05 差异评估 · 执行工单 1/1 · 评估输入与资料补齐确认</span>
<span style="font-family:'SF Mono',Menlo,Consolas,monospace">工单类型:执行 · <span data-slot="card.id">WO-ACT-WORK-05-01</span></span>
</footer>
</div>
</div>
<script>
(function(){
var gate = document.getElementById('editgate');
var tbl = document.getElementById('tbl');
var addrow = document.getElementById('addrow');
var tbody = tbl.querySelector('tbody');
function setEdit(on){ gate.classList.toggle('on',on); tbl.classList.toggle('on',on); addrow.classList.toggle('show',on); }
gate.querySelector('.eg-open').addEventListener('click', function(){ setEdit(true); });
gate.querySelector('.eg-cancel').addEventListener('click', function(){
tbody.querySelectorAll('tr').forEach(function(tr){ tr.querySelectorAll('td').forEach(function(td){ var v=td.querySelector('.jc-vcell'),c=td.querySelector('.jc-cell'); if(v&&c){c.value=v.textContent;} }); });
setEdit(false);
});
gate.querySelector('.eg-save').addEventListener('click', function(){
tbody.querySelectorAll('tr').forEach(function(tr){ tr.querySelectorAll('td').forEach(function(td){ var v=td.querySelector('.jc-vcell'),c=td.querySelector('.jc-cell'); if(v&&c){v.textContent=c.value;} }); });
renumber(); setEdit(false);
});
addrow.querySelector('button').addEventListener('click', function(){
var tr=document.createElement('tr');
tr.innerHTML='<td class="rn"><span class="jc-rn-num"></span><button class="jc-rowdel" type="button" title="删除此行">×</button></td>'+'<td><span class="jc-vcell"></span><input class="jc-cell" placeholder="输入项"></td>'+'<td><span class="jc-vcell mono"></span><input class="jc-cell mono" placeholder="来源"></td>'+'<td><span class="jc-vcell ro"><span class="st miss">新增·待补</span></span></td>'+'<td><span class="jc-vcell"></span><input class="jc-cell" placeholder="资料说明 / AI 为什么拿不到"></td>'+'<td><span class="jc-vcell"></span><input class="jc-cell" placeholder="补充内容(必填)"></td>';
tbody.appendChild(tr); renumber();
});
tbody.addEventListener('click', function(e){ if(e.target.classList.contains('jc-rowdel')){ e.target.closest('tr').remove(); renumber(); } });
function renumber(){ tbody.querySelectorAll('tr').forEach(function(tr,i){ tr.querySelector('.jc-rn-num').textContent=i+1; }); }
})();
</script>
</body>
</html>