gaoluyang
昨天 0574578a03915dc58792e86e4abc75e00f15748f
天津-君歌化工
1.原型图
已添加3个文件
1433 ■■■■■ 文件已修改
doc/出厂检验原型.html 486 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/原材料检验原型.html 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/过程检验原型.html 491 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
doc/³ö³§¼ìÑéÔ­ÐÍ.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,486 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>出厂检验 - åŽŸåž‹å›¾</title>
<style>
  :root {
    --primary: #409eff;
    --success: #67c23a;
    --danger: #f56c6c;
    --warning: #e6a23c;
    --text: #303133;
    --text-regular: #606266;
    --text-secondary: #909399;
    --placeholder: #a8abb2;
    --border: #dcdfe6;
    --border-light: #ebeef5;
    --bg: #f5f7fa;
    --fill: #fafafa;
  }
  * { box-sizing: border-box; }
  body {
    margin: 0;
    padding: 24px 32px 60px;
    background: var(--bg);
    color: var(--text);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
                 "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
    font-size: 14px;
    line-height: 1.5;
  }
  h1 { font-size: 20px; margin: 0 0 4px; font-weight: 600; }
  .sub { color: var(--text-secondary); font-size: 13px; margin-bottom: 20px; }
  /* ---------- tabs ---------- */
  .tabs { display: flex; gap: 8px; margin-bottom: 18px; }
  .tab {
    padding: 7px 18px; border: 1px solid var(--border); background: #fff;
    border-radius: 4px; cursor: pointer; font-size: 14px; color: var(--text-regular);
    transition: all .15s;
  }
  .tab:hover { color: var(--primary); border-color: #c6e2ff; }
  .tab.active { background: var(--primary); border-color: var(--primary); color: #fff; }
  .view { display: none; }
  .view.active { display: block; }
  /* ---------- card / panel ---------- */
  .panel {
    background: #fff; border-radius: 4px; padding: 20px;
    box-shadow: 0 2px 12px 0 rgba(0,0,0,.06);
  }
  /* ---------- form controls (mock) ---------- */
  .label { display: block; color: var(--text-regular); margin-bottom: 6px; font-size: 14px; }
  .label .req { color: var(--danger); margin-right: 3px; }
  .ctrl {
    height: 32px; line-height: 30px; border: 1px solid var(--border);
    border-radius: 4px; padding: 0 11px; background: #fff; color: var(--text);
    position: relative; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  }
  .ctrl.ph { color: var(--placeholder); }
  .ctrl.sel { padding-right: 28px; }
  .ctrl.sel::after {
    content: ""; position: absolute; right: 11px; top: 50%; margin-top: -2px;
    border-left: 4px solid transparent; border-right: 4px solid transparent;
    border-top: 5px solid var(--placeholder);
  }
  .ctrl.date { padding-right: 30px; }
  .ctrl .cal { position: absolute; right: 9px; top: 7px; }
  .ctrl.disabled { background: var(--fill); color: var(--text-secondary); }
  .ctrl.tree::before {
    content: ""; position: absolute; left: 9px; top: 50%; margin-top: -2px;
    border-left: 4px solid var(--placeholder); border-top: 4px solid transparent;
    border-bottom: 4px solid transparent;
  }
  .ctrl.tree { padding-left: 22px; }
  /* search bar */
  .search-form {
    display: flex; flex-wrap: wrap; gap: 16px 22px; align-items: flex-end;
  }
  .search-form .field { min-width: 210px; }
  .search-form .field.narrow { min-width: 240px; }
  .btn {
    height: 32px; padding: 0 18px; border-radius: 4px; border: 1px solid var(--border);
    background: #fff; color: var(--text-regular); cursor: pointer; font-size: 14px;
  }
  .btn:hover { color: var(--primary); border-color: #c6e2ff; background: #ecf5ff; }
  .btn.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
  .btn.primary:hover { background: #66b1ff; border-color: #66b1ff; color: #fff; }
  .btn.danger { color: var(--danger); border-color: #fbc4c4; background: #fef0f0; }
  .btn.danger:hover { background: var(--danger); border-color: var(--danger); color: #fff; }
  .actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; }
  /* ---------- table ---------- */
  table { width: 100%; border-collapse: collapse; margin-top: 18px; font-size: 13px; }
  th {
    background: var(--fill); color: var(--text-regular); font-weight: 600;
    text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--border-light);
    white-space: nowrap;
  }
  td {
    padding: 11px 12px; border-bottom: 1px solid var(--border-light);
    color: var(--text); white-space: nowrap;
  }
  tbody tr:hover td { background: #f5f7fa; }
  .cb {
    width: 14px; height: 14px; border: 1px solid var(--border); border-radius: 2px;
    display: inline-block; vertical-align: middle; background: #fff;
  }
  .cb.checked { background: var(--primary); border-color: var(--primary); position: relative; }
  .cb.checked::after {
    content: ""; position: absolute; left: 4px; top: 0; width: 4px; height: 9px;
    border: 1px solid #fff; border-left: 0; border-top: 0; transform: rotate(45deg);
  }
  .link { color: var(--primary); cursor: pointer; }
  .link.disabled { color: #c0c4cc; cursor: not-allowed; }
  .ops { display: flex; gap: 12px; }
  .tag {
    display: inline-block; padding: 1px 9px; border-radius: 4px; font-size: 12px;
    line-height: 18px; border: 1px solid transparent;
  }
  .tag.success { color: var(--success); background: #f0f9eb; border-color: #e1f3d8; }
  .tag.danger  { color: var(--danger);  background: #fef0f0; border-color: #fde2e2; }
  .tag.info    { color: var(--text-secondary); background: #f4f4f5; border-color: #e9e9eb; }
  .pager {
    display: flex; justify-content: flex-end; align-items: center; gap: 10px;
    margin-top: 16px; color: var(--text-regular); font-size: 13px;
  }
  .pager .pg {
    min-width: 28px; height: 28px; line-height: 26px; text-align: center;
    border: 1px solid var(--border); border-radius: 4px; background: #fff; padding: 0 6px;
  }
  .pager .pg.active { background: var(--primary); border-color: var(--primary); color: #fff; }
  /* ---------- dialog mock ---------- */
  .dialog-wrap { display: flex; justify-content: center; padding: 10px 0; }
  .dialog {
    width: 78%; min-width: 900px; background: #fff; border-radius: 6px;
    box-shadow: 0 12px 32px 4px rgba(0,0,0,.1), 0 8px 20px rgba(0,0,0,.08);
    overflow: hidden;
  }
  .dialog-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 16px 20px; border-bottom: 1px solid var(--border-light);
  }
  .dialog-head h3 { margin: 0; font-size: 16px; font-weight: 600; }
  .dialog-head .x { color: var(--text-secondary); cursor: pointer; font-size: 18px; line-height: 1; }
  .dialog-body { padding: 22px 24px; }
  .dialog-foot {
    display: flex; justify-content: flex-end; gap: 10px;
    padding: 14px 20px; border-top: 1px solid var(--border-light);
  }
  .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 30px; }
  .hint { color: var(--text-secondary); font-size: 12px; margin-top: 5px; }
  .hint.co-link { color: var(--primary); }
  .note {
    margin-top: 22px; padding: 12px 16px; border-radius: 4px;
    background: #fdf6ec; border: 1px solid #faecd8; color: #b88230; font-size: 13px;
  }
  .note b { color: #a06b1f; }
  .note ul { margin: 6px 0 0; padding-left: 20px; }
  .note li { margin-bottom: 4px; }
  /* ---------- field mapping table ---------- */
  .map th, .map td { font-size: 13px; }
  .map .old { color: var(--text-secondary); text-decoration: line-through; }
  .map .new { color: var(--success); font-weight: 600; }
  .legend { display: flex; gap: 20px; margin-bottom: 6px; color: var(--text-secondary); font-size: 13px; }
  .legend i { font-style: normal; }
</style>
</head>
<body>
<h1>出厂检验 â€” åŽŸåž‹å›¾</h1>
<div class="sub">字段全量重构版 Â· åç§° / å›¾å· æ²¿ç”¨åŽŸè”é€‰é€»è¾‘ï¼Œå…¶ä½™å­—æ®µæ‰‹å·¥å¡«å†™</div>
<div class="tabs">
  <button class="tab active" data-view="v-list">① åˆ—表页</button>
  <button class="tab" data-view="v-dialog">② æ–°å¢ž / ç¼–辑弹窗</button>
  <button class="tab" data-view="v-map">③ å­—段对照</button>
</div>
<!-- ================= åˆ—表页 ================= -->
<div class="view active" id="v-list">
  <div class="panel">
    <div class="search-form">
      <div class="field">
        <label class="label">名称</label>
        <div class="ctrl ph">请输入名称搜索</div>
      </div>
      <div class="field narrow">
        <label class="label">检验日期</label>
        <div class="ctrl ph date">
          èµ·æ­¢æ—¥æœŸ
          <span class="cal">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#a8abb2" stroke-width="2">
              <rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/>
            </svg>
          </span>
        </div>
      </div>
      <div class="field" style="min-width:auto">
        <button class="btn primary">搜索</button>
      </div>
    </div>
    <div class="actions">
      <button class="btn primary">新增</button>
      <button class="btn">导出</button>
      <button class="btn danger">删除</button>
    </div>
    <table>
      <thead>
        <tr>
          <th style="width:40px"><span class="cb"></span></th>
          <th>检验日期</th>
          <th>名称</th>
          <th>图号</th>
          <th>材质</th>
          <th>数量</th>
          <th>抽检数</th>
          <th>判定</th>
          <th>提交状态</th>
          <th style="width:290px">操作</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><span class="cb checked"></span></td>
          <td>2026-09-16</td>
          <td>球阀</td>
          <td>TL-2024-001</td>
          <td>304</td>
          <td>100</td>
          <td>10</td>
          <td><span class="tag success">合格</span></td>
          <td>未提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
        <tr>
          <td><span class="cb"></span></td>
          <td>2026-09-15</td>
          <td>闸阀</td>
          <td>TL-2024-002</td>
          <td>316L</td>
          <td>200</td>
          <td>20</td>
          <td><span class="tag success">合格</span></td>
          <td>已提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
        <tr>
          <td><span class="cb"></span></td>
          <td>2026-09-14</td>
          <td>止回阀</td>
          <td>TL-2024-003</td>
          <td>碳钢</td>
          <td>50</td>
          <td>5</td>
          <td><span class="tag danger">不合格</span></td>
          <td>未提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
      </tbody>
    </table>
    <div class="pager">
      <span>共 3 æ¡</span>
      <span class="pg">前一页</span>
      <span class="pg active">1</span>
      <span class="pg">后一页</span>
    </div>
  </div>
</div>
<!-- ================= å¼¹çª— ================= -->
<div class="view" id="v-dialog">
  <div class="panel">
    <div class="legend">
      <span><i>宽 70%</i></span>
      <span><i>标签在顶部(label-position="top")</i></span>
      <span><i>两列布局</i></span>
      <span><i>带 * ä¸ºå¿…å¡«</i></span>
    </div>
    <div class="dialog-wrap">
      <div class="dialog">
        <div class="dialog-head">
          <h3>新增出厂检验</h3>
          <span class="x">✕</span>
        </div>
        <div class="dialog-body">
          <div class="grid">
            <div class="field">
              <label class="label"><span class="req">*</span>名称:</label>
              <div class="ctrl sel ph tree">请选择</div>
              <div class="hint co-link">树形选择 Â· ä¸ŽåŽŸã€Œäº§å“åç§°ã€é€»è¾‘ä¸€è‡´</div>
            </div>
            <div class="field">
              <label class="label"><span class="req">*</span>图号:</label>
              <div class="ctrl sel ph">请选择</div>
              <div class="hint co-link">随「名称」联动刷新,与原「规格型号」逻辑一致</div>
            </div>
            <div class="field">
              <label class="label">材质:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">验收依据:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">数量:</label>
              <div class="ctrl ph">0.00</div>
            </div>
            <div class="field">
              <label class="label">抽检数:</label>
              <div class="ctrl ph">0.00</div>
            </div>
            <div class="field">
              <label class="label">图纸关键部位尺寸:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">实测关键部位尺寸:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">检验日期:</label>
              <div class="ctrl ph date">
                è¯·é€‰æ‹©æ—¥æœŸ
                <span class="cal">
                  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#a8abb2" stroke-width="2">
                    <rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/>
                  </svg>
                </span>
              </div>
            </div>
            <div class="field">
              <label class="label">入库编号:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">所属设备名称:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">项目名称:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">判定:</label>
              <div class="ctrl sel ph">请选择</div>
              <div class="hint">合格 / ä¸åˆæ ¼</div>
            </div>
            <div class="field"></div>
          </div>
          <div class="note">
            <b>已删除的旧字段:</b>指标选择、单位、合格数量、不合格数量、检测单位、检测结果、检验员,
            ä»¥åŠä¸‹æ–¹æ•´å—「指标参数表格(指标 / å•位 / æ ‡å‡†å€¼ / å†…控值 / æ£€éªŒå€¼ï¼‰ã€ã€‚
            åŽŸã€Œäº§å“åç§°ã€æ”¹åä¸ºã€Œåç§°ã€ï¼ŒåŽŸã€Œè§„æ ¼åž‹å·ã€æ”¹åä¸ºã€Œå›¾å·ã€ï¼ŒåŽŸã€Œæ£€æµ‹æ—¥æœŸã€æ”¹åä¸ºã€Œæ£€éªŒæ—¥æœŸã€ã€‚
          </div>
        </div>
        <div class="dialog-foot">
          <button class="btn primary">确认</button>
          <button class="btn">取消</button>
        </div>
      </div>
    </div>
  </div>
</div>
<!-- ================= å­—段对照 ================= -->
<div class="view" id="v-map">
  <div class="panel">
    <table class="map">
      <thead>
        <tr>
          <th style="width:60px">序号</th>
          <th>新字段</th>
          <th style="width:110px">控件</th>
          <th style="width:110px">必填</th>
          <th>备注</th>
        </tr>
      </thead>
      <tbody>
        <tr><td>1</td><td class="new">名称</td><td>树形选择</td><td>是</td><td>原「产品名称」,选择逻辑不变</td></tr>
        <tr><td>2</td><td class="new">图号</td><td>下拉选择</td><td>是</td><td>原「规格型号」,选择逻辑不变,随名称联动</td></tr>
        <tr><td>3</td><td class="new">材质</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>4</td><td class="new">验收依据</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>5</td><td class="new">数量</td><td>数字输入</td><td>否</td><td>手填</td></tr>
        <tr><td>6</td><td class="new">抽检数</td><td>数字输入</td><td>否</td><td>手填</td></tr>
        <tr><td>7</td><td class="new">图纸关键部位尺寸</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>8</td><td class="new">实测关键部位尺寸</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>9</td><td class="new">检验日期</td><td>日期选择</td><td>否</td><td>手填(原「检测日期」改名)</td></tr>
        <tr><td>10</td><td class="new">入库编号</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>11</td><td class="new">所属设备名称</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>12</td><td class="new">项目名称</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>13</td><td class="new">判定</td><td>下拉选择</td><td>否</td><td>合格 / ä¸åˆæ ¼ï¼Œå¾…确认</td></tr>
        <tr><td colspan="5" style="background:#fafafa;height:8px;padding:0;border:0"></td></tr>
        <tr><td>—</td><td class="old">指标选择</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">单位</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">合格数量</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">不合格数量</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检测单位</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检测结果</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检验员</td><td>—</td><td>—</td><td>删除,「分配检验员」操作一并去掉</td></tr>
        <tr><td>—</td><td class="old">指标参数表格</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">销售单号 / ç”Ÿäº§å·¥å•号</td><td>—</td><td>—</td><td>删除,列表列与搜索条件一并去掉</td></tr>
      </tbody>
    </table>
    <div class="note">
      <b>已按最新要求调整:</b>
      <ul>
        <li>「判定」为下拉选择框(合格 / ä¸åˆæ ¼ï¼‰ã€‚</li>
        <li>原有权限判断全部去掉:不限已提交、不限检验员,「编辑 / æŸ¥çœ‹ / é™„ä»¶ / æäº¤ / ä¸‹è½½ã€å‡å¯ç”¨ï¼Œã€Œåˆ†é…æ£€éªŒå‘˜ã€æ“ä½œåˆ é™¤ã€‚</li>
        <li>删除的字段,列表列与搜索条件里也都去掉;搜索条件只剩「名称 + æ£€éªŒæ—¥æœŸã€ã€‚</li>
      </ul>
      <b>待确认:</b>
      <ul>
        <li>「图纸关键部位尺寸」「实测关键部位尺寸」名字较长、内容可能不止一行,是否需要改成整行宽度或文本域?原型按单行输入绘制。</li>
      </ul>
    </div>
  </div>
</div>
<script>
  document.querySelectorAll('.tab').forEach(function (btn) {
    btn.addEventListener('click', function () {
      document.querySelectorAll('.tab').forEach(function (b) { b.classList.remove('active'); });
      document.querySelectorAll('.view').forEach(function (v) { v.classList.remove('active'); });
      btn.classList.add('active');
      document.getElementById(btn.dataset.view).classList.add('active');
    });
  });
</script>
</body>
</html>
doc/Ô­²ÄÁϼìÑéÔ­ÐÍ.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,456 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>原材料检验 - åŽŸåž‹å›¾</title>
<style>
  :root {
    --primary: #409eff;
    --success: #67c23a;
    --danger: #f56c6c;
    --warning: #e6a23c;
    --text: #303133;
    --text-regular: #606266;
    --text-secondary: #909399;
    --placeholder: #a8abb2;
    --border: #dcdfe6;
    --border-light: #ebeef5;
    --bg: #f5f7fa;
    --fill: #fafafa;
  }
  * { box-sizing: border-box; }
  body {
    margin: 0;
    padding: 24px 32px 60px;
    background: var(--bg);
    color: var(--text);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
                 "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
    font-size: 14px;
    line-height: 1.5;
  }
  h1 { font-size: 20px; margin: 0 0 4px; font-weight: 600; }
  .sub { color: var(--text-secondary); font-size: 13px; margin-bottom: 20px; }
  /* ---------- tabs ---------- */
  .tabs { display: flex; gap: 8px; margin-bottom: 18px; }
  .tab {
    padding: 7px 18px; border: 1px solid var(--border); background: #fff;
    border-radius: 4px; cursor: pointer; font-size: 14px; color: var(--text-regular);
    transition: all .15s;
  }
  .tab:hover { color: var(--primary); border-color: #c6e2ff; }
  .tab.active { background: var(--primary); border-color: var(--primary); color: #fff; }
  .view { display: none; }
  .view.active { display: block; }
  /* ---------- card / panel ---------- */
  .panel {
    background: #fff; border-radius: 4px; padding: 20px;
    box-shadow: 0 2px 12px 0 rgba(0,0,0,.06);
  }
  /* ---------- form controls (mock) ---------- */
  .label { display: block; color: var(--text-regular); margin-bottom: 6px; font-size: 14px; }
  .label .req { color: var(--danger); margin-right: 3px; }
  .ctrl {
    height: 32px; line-height: 30px; border: 1px solid var(--border);
    border-radius: 4px; padding: 0 11px; background: #fff; color: var(--text);
    position: relative; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  }
  .ctrl.ph { color: var(--placeholder); }
  .ctrl.sel { padding-right: 28px; }
  .ctrl.sel::after {
    content: ""; position: absolute; right: 11px; top: 50%; margin-top: -2px;
    border-left: 4px solid transparent; border-right: 4px solid transparent;
    border-top: 5px solid var(--placeholder);
  }
  .ctrl.date { padding-right: 30px; }
  .ctrl .cal { position: absolute; right: 9px; top: 7px; }
  .ctrl.disabled { background: var(--fill); color: var(--text-secondary); }
  .ctrl.tree::before {
    content: ""; position: absolute; left: 9px; top: 50%; margin-top: -2px;
    border-left: 4px solid var(--placeholder); border-top: 4px solid transparent;
    border-bottom: 4px solid transparent;
  }
  .ctrl.tree { padding-left: 22px; }
  /* search bar */
  .search-form {
    display: flex; flex-wrap: wrap; gap: 16px 22px; align-items: flex-end;
  }
  .search-form .field { min-width: 210px; }
  .search-form .field.narrow { min-width: 240px; }
  .btn {
    height: 32px; padding: 0 18px; border-radius: 4px; border: 1px solid var(--border);
    background: #fff; color: var(--text-regular); cursor: pointer; font-size: 14px;
  }
  .btn:hover { color: var(--primary); border-color: #c6e2ff; background: #ecf5ff; }
  .btn.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
  .btn.primary:hover { background: #66b1ff; border-color: #66b1ff; color: #fff; }
  .btn.danger { color: var(--danger); border-color: #fbc4c4; background: #fef0f0; }
  .btn.danger:hover { background: var(--danger); border-color: var(--danger); color: #fff; }
  .actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; }
  /* ---------- table ---------- */
  table { width: 100%; border-collapse: collapse; margin-top: 18px; font-size: 13px; }
  th {
    background: var(--fill); color: var(--text-regular); font-weight: 600;
    text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--border-light);
    white-space: nowrap;
  }
  td {
    padding: 11px 12px; border-bottom: 1px solid var(--border-light);
    color: var(--text); white-space: nowrap;
  }
  tbody tr:hover td { background: #f5f7fa; }
  .cb {
    width: 14px; height: 14px; border: 1px solid var(--border); border-radius: 2px;
    display: inline-block; vertical-align: middle; background: #fff;
  }
  .cb.checked { background: var(--primary); border-color: var(--primary); position: relative; }
  .cb.checked::after {
    content: ""; position: absolute; left: 4px; top: 0; width: 4px; height: 9px;
    border: 1px solid #fff; border-left: 0; border-top: 0; transform: rotate(45deg);
  }
  .link { color: var(--primary); cursor: pointer; }
  .link.disabled { color: #c0c4cc; cursor: not-allowed; }
  .ops { display: flex; gap: 12px; }
  .tag {
    display: inline-block; padding: 1px 9px; border-radius: 4px; font-size: 12px;
    line-height: 18px; border: 1px solid transparent;
  }
  .tag.success { color: var(--success); background: #f0f9eb; border-color: #e1f3d8; }
  .tag.danger  { color: var(--danger);  background: #fef0f0; border-color: #fde2e2; }
  .tag.info    { color: var(--text-secondary); background: #f4f4f5; border-color: #e9e9eb; }
  .pager {
    display: flex; justify-content: flex-end; align-items: center; gap: 10px;
    margin-top: 16px; color: var(--text-regular); font-size: 13px;
  }
  .pager .pg {
    min-width: 28px; height: 28px; line-height: 26px; text-align: center;
    border: 1px solid var(--border); border-radius: 4px; background: #fff; padding: 0 6px;
  }
  .pager .pg.active { background: var(--primary); border-color: var(--primary); color: #fff; }
  /* ---------- dialog mock ---------- */
  .dialog-wrap { display: flex; justify-content: center; padding: 10px 0; }
  .dialog {
    width: 78%; min-width: 900px; background: #fff; border-radius: 6px;
    box-shadow: 0 12px 32px 4px rgba(0,0,0,.1), 0 8px 20px rgba(0,0,0,.08);
    overflow: hidden;
  }
  .dialog-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 16px 20px; border-bottom: 1px solid var(--border-light);
  }
  .dialog-head h3 { margin: 0; font-size: 16px; font-weight: 600; }
  .dialog-head .x { color: var(--text-secondary); cursor: pointer; font-size: 18px; line-height: 1; }
  .dialog-body { padding: 22px 24px; }
  .dialog-foot {
    display: flex; justify-content: flex-end; gap: 10px;
    padding: 14px 20px; border-top: 1px solid var(--border-light);
  }
  .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 30px; }
  .hint { color: var(--text-secondary); font-size: 12px; margin-top: 5px; }
  .hint.co-link { color: var(--primary); }
  .note {
    margin-top: 22px; padding: 12px 16px; border-radius: 4px;
    background: #fdf6ec; border: 1px solid #faecd8; color: #b88230; font-size: 13px;
  }
  .note b { color: #a06b1f; }
  .note ul { margin: 6px 0 0; padding-left: 20px; }
  .note li { margin-bottom: 4px; }
  /* ---------- field mapping table ---------- */
  .map th, .map td { font-size: 13px; }
  .map .old { color: var(--text-secondary); text-decoration: line-through; }
  .map .new { color: var(--success); font-weight: 600; }
  .legend { display: flex; gap: 20px; margin-bottom: 6px; color: var(--text-secondary); font-size: 13px; }
  .legend i { font-style: normal; }
</style>
</head>
<body>
<h1>原材料检验 â€” åŽŸåž‹å›¾</h1>
<div class="sub">字段全量重构版 Â· ç‰©æ–™åç§°æ²¿ç”¨åŽŸã€Œäº§å“åç§°ã€è”é€‰é€»è¾‘ï¼Œå…¶ä½™å­—æ®µæ‰‹å·¥å¡«å†™</div>
<div class="tabs">
  <button class="tab active" data-view="v-list">① åˆ—表页</button>
  <button class="tab" data-view="v-dialog">② æ–°å¢ž / ç¼–辑弹窗</button>
  <button class="tab" data-view="v-map">③ å­—段对照</button>
</div>
<!-- ================= åˆ—表页 ================= -->
<div class="view active" id="v-list">
  <div class="panel">
    <div class="search-form">
      <div class="field">
        <label class="label">物料名称</label>
        <div class="ctrl ph">请输入物料名称搜索</div>
      </div>
      <div class="field narrow">
        <label class="label">检验日期</label>
        <div class="ctrl ph date">
          èµ·æ­¢æ—¥æœŸ
          <span class="cal">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#a8abb2" stroke-width="2">
              <rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/>
            </svg>
          </span>
        </div>
      </div>
      <div class="field" style="min-width:auto">
        <button class="btn primary">搜索</button>
      </div>
    </div>
    <div class="actions">
      <button class="btn primary">新增</button>
      <button class="btn">导出</button>
      <button class="btn danger">删除</button>
    </div>
    <table>
      <thead>
        <tr>
          <th style="width:40px"><span class="cb"></span></th>
          <th>检验日期</th>
          <th>项目</th>
          <th>物料名称</th>
          <th>检验依据</th>
          <th>数量</th>
          <th>抽检数量</th>
          <th>判定</th>
          <th>提交状态</th>
          <th style="width:260px">操作</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><span class="cb checked"></span></td>
          <td>2026-09-16</td>
          <td>中石化二期</td>
          <td>不锈钢板材</td>
          <td>GB/T 3280</td>
          <td>100</td>
          <td>10</td>
          <td><span class="tag success">合格</span></td>
          <td>未提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
        <tr>
          <td><span class="cb"></span></td>
          <td>2026-09-15</td>
          <td>中石化二期</td>
          <td>无缝钢管</td>
          <td>GB/T 8163</td>
          <td>200</td>
          <td>20</td>
          <td><span class="tag danger">不合格</span></td>
          <td>已提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
        <tr>
          <td><span class="cb"></span></td>
          <td>2026-09-14</td>
          <td>恒力炼化</td>
          <td>碳钢法兰</td>
          <td>GB/T 9119</td>
          <td>50</td>
          <td>5</td>
          <td><span class="tag success">合格</span></td>
          <td>未提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
      </tbody>
    </table>
    <div class="pager">
      <span>共 3 æ¡</span>
      <span class="pg">前一页</span>
      <span class="pg active">1</span>
      <span class="pg">后一页</span>
    </div>
  </div>
</div>
<!-- ================= å¼¹çª— ================= -->
<div class="view" id="v-dialog">
  <div class="panel">
    <div class="legend">
      <span><i>宽 70%</i></span>
      <span><i>标签在顶部(label-position="top")</i></span>
      <span><i>两列布局</i></span>
      <span><i>带 * ä¸ºå¿…å¡«</i></span>
    </div>
    <div class="dialog-wrap">
      <div class="dialog">
        <div class="dialog-head">
          <h3>新增原材料检验</h3>
          <span class="x">✕</span>
        </div>
        <div class="dialog-body">
          <div class="grid">
            <div class="field">
              <label class="label">项目:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label"><span class="req">*</span>物料名称:</label>
              <div class="ctrl sel ph tree">请选择</div>
              <div class="hint co-link">树形选择 Â· ä¸ŽåŽŸã€Œäº§å“åç§°ã€é€»è¾‘ä¸€è‡´</div>
            </div>
            <div class="field">
              <label class="label">检验依据:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">数量:</label>
              <div class="ctrl ph">0.00</div>
            </div>
            <div class="field">
              <label class="label">抽检数量:</label>
              <div class="ctrl ph">0.00</div>
            </div>
            <div class="field">
              <label class="label">检验日期:</label>
              <div class="ctrl ph date">
                è¯·é€‰æ‹©æ—¥æœŸ
                <span class="cal">
                  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#a8abb2" stroke-width="2">
                    <rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/>
                  </svg>
                </span>
              </div>
            </div>
            <div class="field">
              <label class="label">异常备注:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">判定:</label>
              <div class="ctrl sel ph">请选择</div>
              <div class="hint">合格 / ä¸åˆæ ¼</div>
            </div>
          </div>
          <div class="note">
            <b>已删除的旧字段:</b>供应商、规格型号、指标选择、单位、合格数量、不合格数量、检测单位、检测结果、检验员,
            ä»¥åŠä¸‹æ–¹æ•´å—「指标参数表格(指标 / å•位 / æ ‡å‡†å€¼ / å†…控值 / æ£€éªŒå€¼ï¼‰ã€ã€‚
            åŽŸã€Œäº§å“åç§°ã€æ”¹åä¸ºã€Œç‰©æ–™åç§°ã€ï¼ŒåŽŸã€Œæ£€æµ‹æ—¥æœŸã€æ”¹åä¸ºã€Œæ£€éªŒæ—¥æœŸã€ã€‚
          </div>
        </div>
        <div class="dialog-foot">
          <button class="btn primary">确认</button>
          <button class="btn">取消</button>
        </div>
      </div>
    </div>
  </div>
</div>
<!-- ================= å­—段对照 ================= -->
<div class="view" id="v-map">
  <div class="panel">
    <table class="map">
      <thead>
        <tr>
          <th style="width:60px">序号</th>
          <th>新字段</th>
          <th style="width:110px">控件</th>
          <th style="width:110px">必填</th>
          <th>备注</th>
        </tr>
      </thead>
      <tbody>
        <tr><td>1</td><td class="new">项目</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>2</td><td class="new">物料名称</td><td>树形选择</td><td>是</td><td>原「产品名称」,选择逻辑不变</td></tr>
        <tr><td>3</td><td class="new">检验依据</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>4</td><td class="new">数量</td><td>数字输入</td><td>否</td><td>手填</td></tr>
        <tr><td>5</td><td class="new">抽检数量</td><td>数字输入</td><td>否</td><td>手填</td></tr>
        <tr><td>6</td><td class="new">检验日期</td><td>日期选择</td><td>否</td><td>手填(原「检测日期」改名)</td></tr>
        <tr><td>7</td><td class="new">异常备注</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>8</td><td class="new">判定</td><td>下拉选择</td><td>否</td><td>合格 / ä¸åˆæ ¼</td></tr>
        <tr><td colspan="5" style="background:#fafafa;height:8px;padding:0;border:0"></td></tr>
        <tr><td>—</td><td class="old">供应商</td><td>—</td><td>—</td><td>删除,搜索条件一并去掉</td></tr>
        <tr><td>—</td><td class="old">规格型号</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">指标选择</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">单位</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">合格数量</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">不合格数量</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检测单位</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检测结果</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检验员</td><td>—</td><td>—</td><td>删除,「分配检验员」操作一并去掉</td></tr>
        <tr><td>—</td><td class="old">指标参数表格</td><td>—</td><td>—</td><td>删除</td></tr>
      </tbody>
    </table>
    <div class="note">
      <b>已按最新要求调整:</b>
      <ul>
        <li>「判定」为下拉选择框(合格 / ä¸åˆæ ¼ï¼‰ã€‚</li>
        <li>原有权限判断与置灰逻辑全部去掉:不限已提交、不限检验员,数量也不再受采购台账联动置灰;「编辑 / æŸ¥çœ‹ / é™„ä»¶ / æäº¤ / ä¸‹è½½ã€å‡å¯ç”¨ï¼Œã€Œåˆ†é…æ£€éªŒå‘˜ã€æ“ä½œåˆ é™¤ã€‚</li>
        <li>删除的字段,列表列与搜索条件里也都去掉;搜索条件只剩「物料名称 + æ£€éªŒæ—¥æœŸã€ã€‚</li>
        <li>列表列:检验日期、项目、物料名称、检验依据、数量、抽检数量、判定、提交状态、操作。「异常备注」是长文本,不放进列表列,只在弹窗里填。</li>
      </ul>
      <b>待确认:</b>
      <ul>
        <li>「物料名称」是否就是原「产品名称」那套树形选择?原型按此绘制(前两次重构也是这个对应关系)。</li>
        <li>「异常备注」内容可能不止一行,是否需要改成整行宽度或文本域?</li>
      </ul>
    </div>
  </div>
</div>
<script>
  document.querySelectorAll('.tab').forEach(function (btn) {
    btn.addEventListener('click', function () {
      document.querySelectorAll('.tab').forEach(function (b) { b.classList.remove('active'); });
      document.querySelectorAll('.view').forEach(function (v) { v.classList.remove('active'); });
      btn.classList.add('active');
      document.getElementById(btn.dataset.view).classList.add('active');
    });
  });
</script>
</body>
</html>
doc/¹ý³Ì¼ìÑéÔ­ÐÍ.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,491 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>过程检验 - åŽŸåž‹å›¾</title>
<style>
  :root {
    --primary: #409eff;
    --success: #67c23a;
    --danger: #f56c6c;
    --warning: #e6a23c;
    --text: #303133;
    --text-regular: #606266;
    --text-secondary: #909399;
    --placeholder: #a8abb2;
    --border: #dcdfe6;
    --border-light: #ebeef5;
    --bg: #f5f7fa;
    --fill: #fafafa;
  }
  * { box-sizing: border-box; }
  body {
    margin: 0;
    padding: 24px 32px 60px;
    background: var(--bg);
    color: var(--text);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
                 "Hiragino Sans GB", "Microsoft YaHei", Arial, sans-serif;
    font-size: 14px;
    line-height: 1.5;
  }
  h1 { font-size: 20px; margin: 0 0 4px; font-weight: 600; }
  .sub { color: var(--text-secondary); font-size: 13px; margin-bottom: 20px; }
  /* ---------- tabs ---------- */
  .tabs { display: flex; gap: 8px; margin-bottom: 18px; }
  .tab {
    padding: 7px 18px; border: 1px solid var(--border); background: #fff;
    border-radius: 4px; cursor: pointer; font-size: 14px; color: var(--text-regular);
    transition: all .15s;
  }
  .tab:hover { color: var(--primary); border-color: #c6e2ff; }
  .tab.active { background: var(--primary); border-color: var(--primary); color: #fff; }
  .view { display: none; }
  .view.active { display: block; }
  /* ---------- card / panel ---------- */
  .panel {
    background: #fff; border-radius: 4px; padding: 20px;
    box-shadow: 0 2px 12px 0 rgba(0,0,0,.06);
  }
  /* ---------- form controls (mock) ---------- */
  .label { display: block; color: var(--text-regular); margin-bottom: 6px; font-size: 14px; }
  .label .req { color: var(--danger); margin-right: 3px; }
  .ctrl {
    height: 32px; line-height: 30px; border: 1px solid var(--border);
    border-radius: 4px; padding: 0 11px; background: #fff; color: var(--text);
    position: relative; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  }
  .ctrl.ph { color: var(--placeholder); }
  .ctrl.sel { padding-right: 28px; }
  .ctrl.sel::after {
    content: ""; position: absolute; right: 11px; top: 50%; margin-top: -2px;
    border-left: 4px solid transparent; border-right: 4px solid transparent;
    border-top: 5px solid var(--placeholder);
  }
  .ctrl.date { padding-right: 30px; }
  .ctrl .cal { position: absolute; right: 9px; top: 7px; }
  .ctrl.disabled { background: var(--fill); color: var(--text-secondary); }
  .ctrl.tree::before {
    content: ""; position: absolute; left: 9px; top: 50%; margin-top: -2px;
    border-left: 4px solid var(--placeholder); border-top: 4px solid transparent;
    border-bottom: 4px solid transparent;
  }
  .ctrl.tree { padding-left: 22px; }
  /* search bar */
  .search-form {
    display: flex; flex-wrap: wrap; gap: 16px 22px; align-items: flex-end;
  }
  .search-form .field { min-width: 210px; }
  .search-form .field.narrow { min-width: 240px; }
  .btn {
    height: 32px; padding: 0 18px; border-radius: 4px; border: 1px solid var(--border);
    background: #fff; color: var(--text-regular); cursor: pointer; font-size: 14px;
  }
  .btn:hover { color: var(--primary); border-color: #c6e2ff; background: #ecf5ff; }
  .btn.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
  .btn.primary:hover { background: #66b1ff; border-color: #66b1ff; color: #fff; }
  .btn.danger { color: var(--danger); border-color: #fbc4c4; background: #fef0f0; }
  .btn.danger:hover { background: var(--danger); border-color: var(--danger); color: #fff; }
  .actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; }
  /* ---------- table ---------- */
  table { width: 100%; border-collapse: collapse; margin-top: 18px; font-size: 13px; }
  th {
    background: var(--fill); color: var(--text-regular); font-weight: 600;
    text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--border-light);
    white-space: nowrap;
  }
  td {
    padding: 11px 12px; border-bottom: 1px solid var(--border-light);
    color: var(--text); white-space: nowrap;
  }
  tbody tr:hover td { background: #f5f7fa; }
  .cb {
    width: 14px; height: 14px; border: 1px solid var(--border); border-radius: 2px;
    display: inline-block; vertical-align: middle; background: #fff;
  }
  .cb.checked { background: var(--primary); border-color: var(--primary); position: relative; }
  .cb.checked::after {
    content: ""; position: absolute; left: 4px; top: 0; width: 4px; height: 9px;
    border: 1px solid #fff; border-left: 0; border-top: 0; transform: rotate(45deg);
  }
  .link { color: var(--primary); cursor: pointer; }
  .link.disabled { color: #c0c4cc; cursor: not-allowed; }
  .ops { display: flex; gap: 12px; }
  .tag {
    display: inline-block; padding: 1px 9px; border-radius: 4px; font-size: 12px;
    line-height: 18px; border: 1px solid transparent;
  }
  .tag.success { color: var(--success); background: #f0f9eb; border-color: #e1f3d8; }
  .tag.danger  { color: var(--danger);  background: #fef0f0; border-color: #fde2e2; }
  .tag.info    { color: var(--text-secondary); background: #f4f4f5; border-color: #e9e9eb; }
  .pager {
    display: flex; justify-content: flex-end; align-items: center; gap: 10px;
    margin-top: 16px; color: var(--text-regular); font-size: 13px;
  }
  .pager .pg {
    min-width: 28px; height: 28px; line-height: 26px; text-align: center;
    border: 1px solid var(--border); border-radius: 4px; background: #fff; padding: 0 6px;
  }
  .pager .pg.active { background: var(--primary); border-color: var(--primary); color: #fff; }
  /* ---------- dialog mock ---------- */
  .dialog-wrap { display: flex; justify-content: center; padding: 10px 0; }
  .dialog {
    width: 78%; min-width: 900px; background: #fff; border-radius: 6px;
    box-shadow: 0 12px 32px 4px rgba(0,0,0,.1), 0 8px 20px rgba(0,0,0,.08);
    overflow: hidden;
  }
  .dialog-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 16px 20px; border-bottom: 1px solid var(--border-light);
  }
  .dialog-head h3 { margin: 0; font-size: 16px; font-weight: 600; }
  .dialog-head .x { color: var(--text-secondary); cursor: pointer; font-size: 18px; line-height: 1; }
  .dialog-body { padding: 22px 24px; }
  .dialog-foot {
    display: flex; justify-content: flex-end; gap: 10px;
    padding: 14px 20px; border-top: 1px solid var(--border-light);
  }
  .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 30px; }
  .hint { color: var(--text-secondary); font-size: 12px; margin-top: 5px; }
  .hint.co-link { color: var(--primary); }
  .note {
    margin-top: 22px; padding: 12px 16px; border-radius: 4px;
    background: #fdf6ec; border: 1px solid #faecd8; color: #b88230; font-size: 13px;
  }
  .note b { color: #a06b1f; }
  .note ul { margin: 6px 0 0; padding-left: 20px; }
  .note li { margin-bottom: 4px; }
  /* ---------- field mapping table ---------- */
  .map th, .map td { font-size: 13px; }
  .map .old { color: var(--text-secondary); text-decoration: line-through; }
  .map .new { color: var(--success); font-weight: 600; }
  .legend { display: flex; gap: 20px; margin-bottom: 6px; color: var(--text-secondary); font-size: 13px; }
  .legend i { font-style: normal; }
</style>
</head>
<body>
<h1>过程检验 â€” åŽŸåž‹å›¾</h1>
<div class="sub">字段全量重构版 Â· åç§° / è§„格型号 æ²¿ç”¨åŽŸè”é€‰é€»è¾‘ï¼Œå…¶ä½™å­—æ®µæ‰‹å·¥å¡«å†™</div>
<div class="tabs">
  <button class="tab active" data-view="v-list">① åˆ—表页</button>
  <button class="tab" data-view="v-dialog">② æ–°å¢ž / ç¼–辑弹窗</button>
  <button class="tab" data-view="v-map">③ å­—段对照</button>
</div>
<!-- ================= åˆ—表页 ================= -->
<div class="view active" id="v-list">
  <div class="panel">
    <div class="search-form">
      <div class="field">
        <label class="label">名称</label>
        <div class="ctrl ph">请输入名称搜索</div>
      </div>
      <div class="field narrow">
        <label class="label">检验日期</label>
        <div class="ctrl ph date">
          èµ·æ­¢æ—¥æœŸ
          <span class="cal">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#a8abb2" stroke-width="2">
              <rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/>
            </svg>
          </span>
        </div>
      </div>
      <div class="field" style="min-width:auto">
        <button class="btn primary">搜索</button>
      </div>
    </div>
    <div class="actions">
      <button class="btn primary">新增</button>
      <button class="btn">导出</button>
      <button class="btn danger">删除</button>
    </div>
    <table>
      <thead>
        <tr>
          <th style="width:40px"><span class="cb"></span></th>
          <th>检验日期</th>
          <th>名称</th>
          <th>规格型号</th>
          <th>材质</th>
          <th>数量</th>
          <th>抽检数</th>
          <th>判定</th>
          <th>提交状态</th>
          <th style="width:290px">操作</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><span class="cb checked"></span></td>
          <td>2026-09-16</td>
          <td>阀体</td>
          <td>DN50 PN16</td>
          <td>304</td>
          <td>100</td>
          <td>10</td>
          <td><span class="tag success">合格</span></td>
          <td>未提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
        <tr>
          <td><span class="cb"></span></td>
          <td>2026-09-15</td>
          <td>阀盖</td>
          <td>DN80 PN25</td>
          <td>316L</td>
          <td>200</td>
          <td>20</td>
          <td><span class="tag success">合格</span></td>
          <td>已提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
        <tr>
          <td><span class="cb"></span></td>
          <td>2026-09-14</td>
          <td>阀杆</td>
          <td>DN100 PN16</td>
          <td>碳钢</td>
          <td>50</td>
          <td>5</td>
          <td><span class="tag danger">不合格</span></td>
          <td>未提交</td>
          <td>
            <div class="ops">
              <span class="link">编辑</span>
              <span class="link">查看</span>
              <span class="link">附件</span>
              <span class="link">提交</span>
              <span class="link">下载</span>
            </div>
          </td>
        </tr>
      </tbody>
    </table>
    <div class="pager">
      <span>共 3 æ¡</span>
      <span class="pg">前一页</span>
      <span class="pg active">1</span>
      <span class="pg">后一页</span>
    </div>
  </div>
</div>
<!-- ================= å¼¹çª— ================= -->
<div class="view" id="v-dialog">
  <div class="panel">
    <div class="legend">
      <span><i>宽 70%</i></span>
      <span><i>标签在顶部(label-position="top")</i></span>
      <span><i>两列布局</i></span>
      <span><i>带 * ä¸ºå¿…å¡«</i></span>
    </div>
    <div class="dialog-wrap">
      <div class="dialog">
        <div class="dialog-head">
          <h3>新增过程检验</h3>
          <span class="x">✕</span>
        </div>
        <div class="dialog-body">
          <div class="grid">
            <div class="field">
              <label class="label"><span class="req">*</span>名称:</label>
              <div class="ctrl sel ph tree">请选择</div>
              <div class="hint co-link">树形选择 Â· ä¸ŽåŽŸã€Œäº§å“åç§°ã€é€»è¾‘ä¸€è‡´</div>
            </div>
            <div class="field">
              <label class="label"><span class="req">*</span>规格型号:</label>
              <div class="ctrl sel ph">请选择</div>
              <div class="hint co-link">随「名称」联动刷新,逻辑不变</div>
            </div>
            <div class="field">
              <label class="label">材质:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">验收依据:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">数量:</label>
              <div class="ctrl ph">0.00</div>
            </div>
            <div class="field">
              <label class="label">抽检数:</label>
              <div class="ctrl ph">0.00</div>
            </div>
            <div class="field">
              <label class="label">主要技术参数:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">实际技术参数:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">说明书:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">检验日期:</label>
              <div class="ctrl ph date">
                è¯·é€‰æ‹©æ—¥æœŸ
                <span class="cal">
                  <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#a8abb2" stroke-width="2">
                    <rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/>
                  </svg>
                </span>
              </div>
            </div>
            <div class="field">
              <label class="label">入库编号:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">所属设备名称:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">项目名称:</label>
              <div class="ctrl ph">请输入</div>
            </div>
            <div class="field">
              <label class="label">判定:</label>
              <div class="ctrl sel ph">请选择</div>
              <div class="hint">合格 / ä¸åˆæ ¼</div>
            </div>
          </div>
          <div class="note">
            <b>已删除的旧字段:</b>工序、指标选择、单位、合格数量、不合格数量、检测单位、检测结果、检验员,
            ä»¥åŠä¸‹æ–¹æ•´å—「指标参数表格(指标 / å•位 / æ ‡å‡†å€¼ / å†…控值 / æ£€éªŒå€¼ï¼‰ã€ã€‚
            åŽŸã€Œäº§å“åç§°ã€æ”¹åä¸ºã€Œåç§°ã€ï¼ŒåŽŸã€Œæ£€æµ‹æ—¥æœŸã€æ”¹åä¸ºã€Œæ£€éªŒæ—¥æœŸã€ã€‚
          </div>
        </div>
        <div class="dialog-foot">
          <button class="btn primary">确认</button>
          <button class="btn">取消</button>
        </div>
      </div>
    </div>
  </div>
</div>
<!-- ================= å­—段对照 ================= -->
<div class="view" id="v-map">
  <div class="panel">
    <table class="map">
      <thead>
        <tr>
          <th style="width:60px">序号</th>
          <th>新字段</th>
          <th style="width:110px">控件</th>
          <th style="width:110px">必填</th>
          <th>备注</th>
        </tr>
      </thead>
      <tbody>
        <tr><td>1</td><td class="new">名称</td><td>树形选择</td><td>是</td><td>原「产品名称」,选择逻辑不变</td></tr>
        <tr><td>2</td><td class="new">规格型号</td><td>下拉选择</td><td>是</td><td>选择逻辑不变,随名称联动</td></tr>
        <tr><td>3</td><td class="new">材质</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>4</td><td class="new">验收依据</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>5</td><td class="new">数量</td><td>数字输入</td><td>否</td><td>手填</td></tr>
        <tr><td>6</td><td class="new">抽检数</td><td>数字输入</td><td>否</td><td>手填</td></tr>
        <tr><td>7</td><td class="new">主要技术参数</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>8</td><td class="new">实际技术参数</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>9</td><td class="new">说明书</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>10</td><td class="new">检验日期</td><td>日期选择</td><td>否</td><td>手填(原「检测日期」改名)</td></tr>
        <tr><td>11</td><td class="new">入库编号</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>12</td><td class="new">所属设备名称</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>13</td><td class="new">项目名称</td><td>文本输入</td><td>否</td><td>手填</td></tr>
        <tr><td>14</td><td class="new">判定</td><td>下拉选择</td><td>否</td><td>合格 / ä¸åˆæ ¼ï¼Œå¾…确认</td></tr>
        <tr><td colspan="5" style="background:#fafafa;height:8px;padding:0;border:0"></td></tr>
        <tr><td>—</td><td class="old">工序</td><td>—</td><td>—</td><td>按新字段清单已移除,待确认</td></tr>
        <tr><td>—</td><td class="old">指标选择</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">单位</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">合格数量</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">不合格数量</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检测单位</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检测结果</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">检验员</td><td>—</td><td>—</td><td>删除,「分配检验员」操作一并去掉</td></tr>
        <tr><td>—</td><td class="old">指标参数表格</td><td>—</td><td>—</td><td>删除</td></tr>
        <tr><td>—</td><td class="old">生产工单号</td><td>—</td><td>—</td><td>删除,列表列与搜索条件一并去掉</td></tr>
      </tbody>
    </table>
    <div class="note">
      <b>已按最新要求调整:</b>
      <ul>
        <li>「判定」为下拉选择框(合格 / ä¸åˆæ ¼ï¼‰ã€‚</li>
        <li>原有权限判断全部去掉:不限已提交、不限检验员,「编辑 / æŸ¥çœ‹ / é™„ä»¶ / æäº¤ / ä¸‹è½½ã€å‡å¯ç”¨ï¼Œã€Œåˆ†é…æ£€éªŒå‘˜ã€æ“ä½œåˆ é™¤ã€‚</li>
        <li>删除的字段,列表列与搜索条件里也都去掉;搜索条件只剩「名称 + æ£€éªŒæ—¥æœŸã€ã€‚</li>
      </ul>
      <b>待确认:</b>
      <ul>
        <li><b>「工序」是否保留?</b>过程检验靠工序定位检验环节,且原来「指标选择」的可选项就是按 äº§å“ + å·¥åº æŸ¥å‡ºæ¥çš„。新清单里没有它,原型按移除绘制。</li>
      </ul>
    </div>
  </div>
</div>
<script>
  document.querySelectorAll('.tab').forEach(function (btn) {
    btn.addEventListener('click', function () {
      document.querySelectorAll('.tab').forEach(function (b) { b.classList.remove('active'); });
      document.querySelectorAll('.view').forEach(function (v) { v.classList.remove('active'); });
      btn.classList.add('active');
      document.getElementById(btn.dataset.view).classList.add('active');
    });
  });
</script>
</body>
</html>