diff --git a/.claude/memory/project_progress.md b/.claude/memory/project_progress.md
index ab16842..16b143d 100644
--- a/.claude/memory/project_progress.md
+++ b/.claude/memory/project_progress.md
@@ -130,7 +130,7 @@ Web 管理端和员工端 APP 的其余模块(系统管理、运动管理、
- 2026-09-07:净菜类型拆分独立管理(commit 891678d)——①`din-ingredient.html`/`din-ingredient-add.html` 净菜类型按**规格行级**维护「可食部(%)」字段(位于规格别名后,新增规格时随行出现,新增/编辑/详情三页同步);②食材列表操作区「食材分类管理」按钮后新增「净菜管理」入口;③新建 `din-clean-veg-mgmt.html` 净菜管理二级页:统计卡片 + 食材名称(下拉搜索)/食材编码/净菜类型(净菜俗名/净菜标准名/规格俗名三源关键字)/切配形状筛选 + 异步导出按钮组(导出列表数据+查看导出任务,样式对齐全仓列表页惯例)+ 列表组级列 rowspan 合并、可食部/规格别名/切配规格/刀工按规格逐行拆分(组内虚线分隔、规格列区纵向分隔线)+ 先选食材回显已有净菜类型再新增/编辑的维护弹窗;SITE_MAP 与营养模块 CHANGELOG 同步。(相关决策:[[decisions.md#净菜类型数据模型与净菜管理页展示模式]])
- 2026-09-07:全仓截图脚本与截图质量修复(commit 7f18470)——assistant/expert/health-monitor 截图脚本失效页面引用改回现存文件名并清理孤儿截图;weight-main-v2 初始化改为解析 `?type=` 参数,修复设计总览六种目标状态截图雷同问题,重拍 weight-main/bluetooth-scale 共 10 张;补拍 PRD 引用但从未生成的视频进行中截图;体重管理 PRD 修复两处截图断链。
-- 2026-09-04:医疗点PAD端首版原型(commit 15ca37b)——新建 `other-module/medical-pad/` 20 页(1280×800 横屏,抽屉交互页内实现),SITE_MAP 与项目背景尺寸规范同步,新增模块 CHANGELOG;同提交:全站演示数据脱敏(示例人名王建国→石维国、周明远→曲志明,机构长庆油田→CQ油田,覆盖约 30 页)、现场体检签到码改条形码/二维码双选项卡切换、新增健康长寿系统升级改造详细规划 V8 文档。(相关规范:[[feedback_medical_pad_migration.md]])
+- 2026-09-04:医疗点PAD端首版原型(commit 15ca37b)——新建 `other-module/medical-pad/` 20 页(1280×800 横屏,抽屉交互页内实现),SITE_MAP 与项目背景尺寸规范同步,新增模块 CHANGELOG;同提交:全站演示数据脱敏(示例人名王建国→石维国、周明远→曲志明,机构CQ能源→CQ油田,覆盖约 30 页)、现场体检签到码改条形码/二维码双选项卡切换、新增健康长寿系统升级改造详细规划 V8 文档。(相关规范:[[feedback_medical_pad_migration.md]])
- 2026-09-04:体重管理员工端设计总览重构(commit 29a09e9)——总览页按目标承诺与签署/体重主页/每日打卡/历史记录/建议与报告/蓝牙设备六大主线重排,页面清单全面切换到 weight-main-v2/goal-management-v2 等 v2 新版页面,新增 playwright 统一截图脚本 `screenshot-weight.mjs` 并重新生成全部截图。
- 2026-09-03~09-04:健康体检员工端与管理端多轮完善(commit 118d143、05e157e)——员工端:选项目页费用横幅重做为体检额度卡片(额度使用进度条+必检/选检/可用额度三格,年度额度 1600,新增心脏彩超与胃幽门螺杆菌两项选检),"我的预约"更名重做为"现场体检",胃肠镜预约结果页成功/失败两态演示;管理端:体检报告模板更名体检导入模板管理、模板额度配置更名群体额度配置、大病人员信息新增弹窗(员工搜索下拉+信息卡片)、指标异常通知固定列+发送通知/短信、单位/胃肠镜预约统计改单位级别 TAB。
- 2026-09-02~09-03:健康体检预约流程与检中页面完善(commit a443c61、0d1c770、37ae054、3a838d0、2213106)——员工端"我的预约"合并单页+新增指标纵向对比与消息中心;胃肠镜医院预选征集/已提交页、检前首页预选通知条、选日期页预约状态条与可约窗口限制(常规近30天/胃肠镜7~30天)、预约结果页成功/失败演示与取消预约二次确认;管理端新增大病人员信息/指标异常通知/已选项目员工信息页,胃肠镜体检计划管理新增/编辑/详情抽屉(承检医院多选+机构树选人),组合模板/例外配置/医院费用/单位费用统一详情弹窗与编辑抽屉,检中页更名员工预约体检跟踪、统一员工编号筛选与列、体检编号更名体检编码。
diff --git a/index.html b/index.html
index 97876d2..278e2a6 100644
--- a/index.html
+++ b/index.html
@@ -271,6 +271,10 @@ const SITE_MAP = [
{ file:'post-disease-info.html', label:'病种信息配置' },
{ file:'post-conclusion-disease.html', label:'体检结论关联病种' },
{ file:'post-auto-select-disease.html', label:'员工病种信息' },
+ { file:'post-imc-user.html', label:'用户体检信息' },
+ { file:'post-imc-class.html', label:'用户影像文件分类' },
+ { file:'post-imc-info.html', label:'用户影像文件详细' },
+ { file:'post-imc-log.html', label:'文件处理日志' },
{ file:'agent-device.html', label:'前置机管理 · 常规体检前置服务' },
{ file:'exception-dirty.html', label:'系统脏数据' },
{ file:'exception-result.html', label:'结果异常' }
diff --git a/screenshot-weight.mjs b/screenshot-weight.mjs
deleted file mode 100644
index d76dd05..0000000
--- a/screenshot-weight.mjs
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- * 体重管理模块统一截图脚本
- * 规则(参考健康监测 screenshot-final.mjs):
- * - phone-shell 尺寸 390 宽
- * - 'fixed':弹窗/浮层类截图,严格 390×844,弹窗叠在当前页面之上
- * - 'auto' :纯页面截图,短页面最低 844,长页面按真实内容展开
- * 用法:node screenshot-weight.mjs [输出名子串过滤...]
- */
-import { chromium } from 'playwright';
-import { fileURLToPath } from 'url';
-import path from 'path';
-
-const __dirname = path.dirname(fileURLToPath(import.meta.url));
-const docDir = path.join(__dirname, 'employee-app', 'weight-management', 'doc');
-const root = path.join(__dirname, 'employee-app', 'weight-management');
-
-const tasks = [
- // ========== 目标承诺与签署 ==========
- { html: 'goal-management-v2.html', out: 'goal-management', mode: 'auto' },
- { html: 'goal-management-v2.html', out: 'goal-management-personal', mode: 'auto', eval: "switchType('personal')" },
- { html: 'goal-management-v2.html', out: 'goal-management-activity', mode: 'fixed', eval: 'openActivitySheet()' },
- { html: 'goal-management-v2.html', out: 'goal-management-confirm', mode: 'fixed', eval: "openActivitySheet();var i=document.querySelector('#actSheet .sheet-item');i.click();confirmActivity();closeActivitySheet();submitGoal()" },
- { html: 'goal-management-v2.html', out: 'goal-management-confirm-personal', mode: 'fixed', eval: "switchType('personal');submitGoal()" },
- { html: 'goal-detail-v2.html', out: 'goal-detail', mode: 'auto', query: '?type=activity&state=review' },
- { html: 'goal-detail-v2.html', out: 'goal-detail-approved', mode: 'auto', query: '?type=activity&state=approved' },
- { html: 'goal-detail-v2.html', out: 'goal-detail-rejected', mode: 'auto', query: '?type=activity&state=rejected' },
- { html: 'goal-detail-v2.html', out: 'goal-detail-signed', mode: 'auto', query: '?type=activity&state=signed' },
- { html: 'goal-detail-v2.html', out: 'goal-detail-ended', mode: 'auto', query: '?type=activity&state=ended' },
- { html: 'goal-detail-v2.html', out: 'goal-detail-personal', mode: 'auto', query: '?type=personal' },
- { html: 'goal-detail-v2.html', out: 'goal-detail-edit', mode: 'fixed', query: '?type=personal', eval: 'openEditGoalModal()' },
- { html: 'goal-detail-v2.html', out: 'goal-detail-menu', mode: 'fixed', query: '?type=activity&state=signed', eval: "document.getElementById('navMore').click()" },
- { html: 'promise-signing.html', out: 'promise-signing', mode: 'auto', landscape: true },
- { html: 'promise-signing.html', out: 'promise-signing-giveup', mode: 'fixed', landscape: true, eval: 'openGiveup()' },
- { html: 'my-promise.html', out: 'my-promise', mode: 'auto' },
- { html: 'goal-history-v2.html', out: 'goal-history', mode: 'auto' },
- { html: 'goal-history-v2.html', out: 'goal-history-personal', mode: 'auto', eval: "switchTab('personal')" },
- { html: 'activity-detail.html', out: 'activity-detail', mode: 'auto' },
- { html: 'basic-info.html', out: 'basic-info', mode: 'auto' },
- { html: 'basic-info.html', out: 'basic-info-height', mode: 'fixed', eval: 'openHeightSheet()' },
- { html: 'basic-info.html', out: 'basic-info-activity', mode: 'fixed', eval: 'openSheet()' },
-
- // ========== 体重管理主页 ==========
- { html: 'weight-main-v2.html', out: 'weight-main', mode: 'auto', query: '?type=hasact-signed' },
- { html: 'weight-main-v2.html', out: 'weight-main-review', mode: 'auto', query: '?type=hasact-review' },
- { html: 'weight-main-v2.html', out: 'weight-main-approved', mode: 'auto', query: '?type=hasact-approved' },
- { html: 'weight-main-v2.html', out: 'weight-main-rejected', mode: 'auto', query: '?type=hasact-rejected' },
- { html: 'weight-main-v2.html', out: 'weight-main-personal', mode: 'auto', query: '?type=personal' },
- { html: 'weight-main-v2.html', out: 'weight-main-none', mode: 'auto', query: '?type=none' },
- { html: 'weight-main-v2.html', out: 'weight-main-record', mode: 'fixed', query: '?type=hasact-signed', eval: 'openRecordSheet()' },
- { html: 'weight-main-v2.html', out: 'weight-main-record-success', mode: 'fixed', query: '?type=hasact-signed', eval: "openRecordSheet();submitRecord()" },
-
- // ========== 每日打卡(吃/动/体重) ==========
- { html: 'eat-checkin-v2.html', out: 'eat-checkin', mode: 'auto' },
- { html: 'eat-checkin-v2.html', out: 'eat-checkin-lunch', mode: 'auto', query: '?meal=lunch' },
- { html: 'eat-checkin-v2.html', out: 'eat-checkin-recorded', mode: 'auto', eval: "selectCategory('recorded')" },
- { html: 'eat-checkin-v2.html', out: 'eat-checkin-bag', mode: 'fixed', eval: 'openBagPanel()' },
- { html: 'eat-checkin-v2.html', out: 'eat-checkin-gram', mode: 'fixed', eval: "var d;Object.keys(foodData).some(function(k){return foodData[k].items.some(function(it){if(it.name){d=it;return true}})});openGramPanel(d.id)" },
- { html: 'eat-checkin-v2.html', out: 'eat-checkin-success', mode: 'fixed', eval: 'submitCheckin()' },
- { html: 'eat-checkin-v2.html', out: 'eat-checkin-meals', mode: 'fixed', eval: "document.querySelector('.filter-row__meal-btn').click()" },
- { html: 'exercise-checkin-v2.html', out: 'exercise-checkin', mode: 'auto' },
- { html: 'exercise-checkin-v2.html', out: 'exercise-checkin-recorded', mode: 'auto', eval: "selectCategory('recorded')" },
- { html: 'exercise-checkin-v2.html', out: 'exercise-checkin-bag', mode: 'fixed', eval: 'openBagPanel()' },
- { html: 'exercise-checkin-v2.html', out: 'exercise-checkin-duration', mode: 'fixed', eval: "var d;Object.keys(exerciseData).some(function(k){return exerciseData[k].items.some(function(it){if(it.name){d=it;return true}})});openDurPanel(d.id)" },
- { html: 'exercise-checkin-v2.html', out: 'exercise-checkin-success', mode: 'fixed', eval: 'submitCheckin()' },
- { html: 'scan-checkin.html', out: 'scan-checkin', mode: 'fixed' },
- { html: 'scan-checkin.html', out: 'scan-checkin-analyzing', mode: 'fixed', eval: "takePhoto();clearInterval(analyzeTimer);analyzeTimer=null;setTimeout(function(){document.getElementById('analyzingBar').style.width='45%';document.getElementById('analyzingSub').textContent='正在匹配食物数据库...'},300)", wait: 900 },
- { html: 'scan-checkin.html', out: 'scan-checkin-result', mode: 'fixed', eval: 'showResult()' },
-
- // ========== 历史记录 ==========
- { html: 'weight-record-detail-v2.html', out: 'weight-record-detail', mode: 'auto' },
- { html: 'weight-record-detail-v2.html', out: 'weight-record-detail-activity', mode: 'auto', eval: "switchTab('activity')" },
- { html: 'eat-detail-v2.html', out: 'eat-detail', mode: 'auto' },
- { html: 'eat-detail-v2.html', out: 'eat-detail-month', mode: 'fixed', eval: 'toggleMonthPicker()' },
- { html: 'exercise-detail-v2.html', out: 'exercise-detail', mode: 'auto' },
- { html: 'exercise-detail-v2.html', out: 'exercise-detail-month', mode: 'fixed', eval: 'toggleMonthPicker()' },
- { html: 'exercise-detail-v2.html', out: 'exercise-detail-tip', mode: 'fixed', eval: "document.querySelector('.chart-dot').click()" },
- { html: 'eat-exercise-detail-v2.html', out: 'eat-exercise-detail', mode: 'auto' },
- { html: 'eat-exercise-detail-v2.html', out: 'eat-exercise-detail-month', mode: 'fixed', eval: 'toggleMonthPicker()' },
- { html: 'weight-detail-v2.html', out: 'weight-detail', mode: 'auto' },
- { html: 'weight-detail-v2.html', out: 'weight-detail-record', mode: 'fixed', eval: 'openRecordSheet()' },
- { html: 'weight-detail-v2.html', out: 'weight-detail-month', mode: 'fixed', eval: 'toggleMonthPicker()' },
- { html: 'weight-detail-v2.html', out: 'weight-detail-tip', mode: 'fixed', eval: "document.querySelector('.chart-dot').click()" },
- { html: 'report-detail.html', out: 'report-detail-fat', mode: 'auto', query: '?device=fat' },
- { html: 'report-detail.html', out: 'report-detail-scale', mode: 'auto', query: '?device=scale' },
- { html: 'report-detail.html', out: 'report-detail-bluetooth', mode: 'auto', query: '?device=bluetooth' },
- { html: 'body-fat-report.html', out: 'body-fat-report', mode: 'auto' },
- { html: 'height-scale-report.html', out: 'height-scale-report', mode: 'auto' },
-
- // ========== 建议与报告 ==========
- { html: 'diet-advice-v2.html', out: 'diet-advice', mode: 'auto' },
- { html: 'diet-advice-v2.html', out: 'diet-advice-detail', mode: 'fixed', eval: "openFoodDetail('breakfast',0)" },
- { html: 'diet-advice-v2.html', out: 'diet-advice-dislike', mode: 'fixed', eval: 'showDislikeSheet()' },
- { html: 'diet-advice-v2.html', out: 'diet-advice-nutrition', mode: 'fixed', eval: 'showNutritionEmpty(true)' },
- { html: 'diet-advice-v2.html', out: 'diet-advice-nutrition-tab', mode: 'auto', eval: "switchTab('nutrition')" },
- { html: 'diet-advice-v2.html', out: 'diet-advice-month', mode: 'fixed', eval: 'toggleMonthPicker()' },
- { html: 'exercise-advice-v2.html', out: 'exercise-advice', mode: 'auto' },
- { html: 'exercise-advice-v2.html', out: 'exercise-advice-month', mode: 'fixed', eval: 'toggleMonthPicker()' },
- { html: 'weight-report.html', out: 'weight-report', mode: 'auto', query: '?type=hasact' },
- { html: 'weight-report.html', out: 'weight-report-personal', mode: 'auto', query: '?type=personal' },
- { html: 'weight-report.html', out: 'weight-report-none', mode: 'auto', query: '?type=none' },
- { html: 'weight-ranking.html', out: 'weight-ranking', mode: 'auto', query: '?type=hasact' },
- { html: 'weight-ranking.html', out: 'weight-ranking-personal', mode: 'auto', query: '?type=personal' },
- { html: 'weight-ranking.html', out: 'weight-ranking-none', mode: 'auto', query: '?type=none' },
-
- // ========== 蓝牙设备 ==========
- { html: 'bluetooth-scale-v2.html', out: 'bluetooth-scale', mode: 'auto', query: '#paired' },
- { html: 'bluetooth-scale-v2.html', out: 'bluetooth-scale-empty', mode: 'auto' },
- { html: 'bluetooth-device-members-v2.html', out: 'bluetooth-device-members', mode: 'auto', query: '?device=s1' },
- { html: 'bluetooth-device-members-v2.html', out: 'bluetooth-device-members-empty', mode: 'auto', query: '?device=b2' },
- { html: 'bluetooth-device-members-v2.html', out: 'bluetooth-device-members-delete', mode: 'fixed', query: '?device=s1', eval: "document.querySelector('.action-btn--delete').click()" },
- { html: 'bluetooth-device-members-v2.html', out: 'bluetooth-device-members-sync', mode: 'fixed', query: '?device=s1', eval: 'syncMembers()', wait: 1600 },
- { html: 'bluetooth-search-v2.html', out: 'bluetooth-search', mode: 'auto' },
- { html: 'bluetooth-wifi-v2.html', out: 'bluetooth-wifi', mode: 'auto' },
-];
-
-(async () => {
- const filters = process.argv.slice(2);
- const runTasks = filters.length ? tasks.filter(t => filters.some(f => t.out.includes(f))) : tasks;
-
- const browser = await chromium.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] });
- const context = await browser.newContext({ viewport: { width: 390, height: 4000 } });
-
- for (const t of runTasks) {
- const page = await context.newPage();
- const filePath = path.join(root, t.html);
- const url = `file:///${filePath.replace(/\\/g, '/')}${t.query || ''}`;
- await page.goto(url, { waitUntil: 'networkidle' });
-
- if (t.eval) {
- await page.evaluate(t.eval).catch(e => console.log(`! eval failed [${t.out}]: ${e.message}`));
- await page.waitForTimeout(t.wait || 300);
- }
-
- if (t.landscape) {
- // 横屏页:phone-shell 固定 844×390,不展开、按元素原尺寸截取
- await page.evaluate(() => {
- const shell = document.querySelector('.phone-shell');
- if (shell) {
- shell.style.borderRadius = '0';
- shell.style.boxShadow = 'none';
- }
- document.body.style.padding = '0';
- document.body.style.margin = '0';
- document.body.style.minHeight = 'auto';
- document.body.style.background = '#fff';
- document.documentElement.style.display = 'block';
- });
- await page.setViewportSize({ width: 844, height: 390 });
- await page.waitForTimeout(200);
- } else if (t.mode === 'fixed') {
- await page.evaluate(() => {
- const shell = document.querySelector('.phone-shell');
- if (shell) {
- shell.style.borderRadius = '0';
- shell.style.boxShadow = 'none';
- }
- document.body.style.padding = '0';
- document.body.style.minHeight = 'auto';
- document.body.style.background = '#fff';
- });
- await page.setViewportSize({ width: 390, height: 844 });
- await page.waitForTimeout(200);
- } else {
- await page.evaluate(() => {
- const shell = document.querySelector('.phone-shell');
- if (shell) {
- shell.style.height = 'auto';
- shell.style.minHeight = '844px';
- shell.style.maxHeight = 'none';
- shell.style.borderRadius = '0';
- shell.style.boxShadow = 'none';
- shell.style.overflow = 'visible';
- shell.style.display = 'block';
- }
- document.querySelectorAll('.scroll-content, .page-content, .main-content, .list-wrap, .content').forEach(c => {
- c.style.overflow = 'visible';
- c.style.maxHeight = 'none';
- c.style.height = 'auto';
- c.style.flex = 'none';
- });
- document.body.style.padding = '0';
- document.body.style.minHeight = 'auto';
- document.body.style.background = '#fff';
- });
- await page.waitForTimeout(300);
- const measured = await page.evaluate(() => {
- const shell = document.querySelector('.phone-shell');
- if (!shell) return document.body.scrollHeight;
- return Math.ceil(shell.getBoundingClientRect().height);
- });
- const h = Math.max(measured, 844);
- await page.setViewportSize({ width: 390, height: h });
- await page.waitForTimeout(150);
- }
-
- const shell = await page.$('.phone-shell');
- const target = shell || page;
- await target.screenshot({
- path: path.join(docDir, 'screenshots', `${t.out}.jpg`),
- type: 'jpeg',
- quality: 85,
- });
- console.log(`✓ ${t.out}.jpg [${t.mode}]`);
- await page.close();
- }
-
- await browser.close();
- console.log(`\n完成!共截取 ${runTasks.length} 张`);
-})();
diff --git a/web-admin/health-checkup/doc/CHANGELOG.md b/web-admin/health-checkup/doc/CHANGELOG.md
index 7a41ad9..63a4e04 100644
--- a/web-admin/health-checkup/doc/CHANGELOG.md
+++ b/web-admin/health-checkup/doc/CHANGELOG.md
@@ -1,5 +1,17 @@
# 健康体检模块 CHANGELOG
+## [Unreleased] 2026-09-18
+
+### Added
+- 检后侧边栏新增「体检影像管理」二级菜单(位于冠脉CTA体检分组之后),复刻老系统 data-center-vue3 `views/imc` 四个列表页为纯 HTML 原型:
+ - `post-imc-user.html`(用户体检信息):筛选(姓名/身份证号/体检年份/医院名称);行勾选 + 批量删除;主表列(单位信息/姓名/身份证号/体检年份/医院名称/体检编号/创建日期);行首箭头展开子表(检查项目名称/处理状态/影像信息·预览/影像报告·查看,无数据显示「暂无/无文件」);操作列编辑/详情/删除 + 编辑弹窗(7 字段)+ 详情弹窗
+ - `post-imc-class.html`(用户影像文件分类):筛选(影像分类/检查项目名称/处理状态);操作栏新增/导出/导入 + 批量删除;列(影像分类/检查项目名称/影像文件类型/报告文件类型/处理状态/检查结果/错误信息/出报告时间/创建日期),检查结果与错误信息长文本截断、悬停显示全文;操作列编辑/详情/删除 + 新增/编辑弹窗(10 字段)+ 详情弹窗
+ - `post-imc-info.html`(用户影像文件详细):筛选(文件类型/患者ID/研究实例ID);操作栏新增/导出/导入 + 批量删除;列(文件类型·影像/报告标签/影像序号/错误信息/文件地址·下载/dcm实例ID/研究实例ID/患者ID/研究ID/创建日期);操作列编辑/详情/删除 + 新增/编辑弹窗(10 字段)+ 详情弹窗
+ - `post-imc-log.html`(文件处理日志):筛选(身份证号/体检年份/体检编号/影像分类/处理状态);行勾选 + 批量删除;列(医院名称/姓名/身份证号/体检年份/体检编号/影像分类/json数据·截断/文件地址·下载zip/文件大小MB/处理状态/错误信息/传输开始/传输完成/解析开始/解析完成时间),默认按传输开始时间倒序;操作列详情/删除 + 详情弹窗(15 字段含 json 数据代码块)
+ - 数据字典沿用老系统:影像分类(超声/CT/MRI/X射线/心电)、处理状态(新建/待解析/失败/解析中/成功/失败待重试/最终失败,彩色标签)、文件类型(影像/报告)
+- `index.html` SITE_MAP 健康体检模块新增「用户体检信息/用户影像文件分类/用户影像文件详细/文件处理日志」四个入口
+- 25 个检后页面侧边栏统一新增「体检影像管理」分组(21 个存量页面批量同步 + 4 个新页面自身 active 指向)
+
## [Unreleased] 2026-09-17
### Changed
diff --git a/web-admin/health-checkup/post-auto-select-disease.html b/web-admin/health-checkup/post-auto-select-disease.html
index f5d12f5..2287a9c 100644
--- a/web-admin/health-checkup/post-auto-select-disease.html
+++ b/web-admin/health-checkup/post-auto-select-disease.html
@@ -198,6 +198,18 @@
+
diff --git a/web-admin/health-checkup/post-cancer-screening.html b/web-admin/health-checkup/post-cancer-screening.html
index 72ee6f0..c2a7db2 100644
--- a/web-admin/health-checkup/post-cancer-screening.html
+++ b/web-admin/health-checkup/post-cancer-screening.html
@@ -181,6 +181,18 @@
+
diff --git a/web-admin/health-checkup/post-conclusion-disease.html b/web-admin/health-checkup/post-conclusion-disease.html
index 42a6d9c..fa6631b 100644
--- a/web-admin/health-checkup/post-conclusion-disease.html
+++ b/web-admin/health-checkup/post-conclusion-disease.html
@@ -208,6 +208,18 @@
+
diff --git a/web-admin/health-checkup/post-contracted-hospital.html b/web-admin/health-checkup/post-contracted-hospital.html
index ee6744c..e00f31e 100644
--- a/web-admin/health-checkup/post-contracted-hospital.html
+++ b/web-admin/health-checkup/post-contracted-hospital.html
@@ -172,6 +172,18 @@
+
diff --git a/web-admin/health-checkup/post-cta-report.html b/web-admin/health-checkup/post-cta-report.html
index 430a88d..4eb23d8 100644
--- a/web-admin/health-checkup/post-cta-report.html
+++ b/web-admin/health-checkup/post-cta-report.html
@@ -239,6 +239,18 @@
+
diff --git a/web-admin/health-checkup/post-cta-stat.html b/web-admin/health-checkup/post-cta-stat.html
index b2eeedd..977d780 100644
--- a/web-admin/health-checkup/post-cta-stat.html
+++ b/web-admin/health-checkup/post-cta-stat.html
@@ -198,6 +198,18 @@
+
diff --git a/web-admin/health-checkup/post-disease-info.html b/web-admin/health-checkup/post-disease-info.html
index c574b79..f55016f 100644
--- a/web-admin/health-checkup/post-disease-info.html
+++ b/web-admin/health-checkup/post-disease-info.html
@@ -206,6 +206,18 @@
+
diff --git a/web-admin/health-checkup/post-doctor-count.html b/web-admin/health-checkup/post-doctor-count.html
index d9bea21..689b2a9 100644
--- a/web-admin/health-checkup/post-doctor-count.html
+++ b/web-admin/health-checkup/post-doctor-count.html
@@ -181,6 +181,18 @@
+
diff --git a/web-admin/health-checkup/post-employee-master.html b/web-admin/health-checkup/post-employee-master.html
index ad5b646..aa6472c 100644
--- a/web-admin/health-checkup/post-employee-master.html
+++ b/web-admin/health-checkup/post-employee-master.html
@@ -194,6 +194,18 @@
+
diff --git a/web-admin/health-checkup/post-gastro-stat.html b/web-admin/health-checkup/post-gastro-stat.html
index 41b3aa8..f87a4b2 100644
--- a/web-admin/health-checkup/post-gastro-stat.html
+++ b/web-admin/health-checkup/post-gastro-stat.html
@@ -198,6 +198,18 @@
+
diff --git a/web-admin/health-checkup/post-hospital-count.html b/web-admin/health-checkup/post-hospital-count.html
index 5937417..6bfd710 100644
--- a/web-admin/health-checkup/post-hospital-count.html
+++ b/web-admin/health-checkup/post-hospital-count.html
@@ -181,6 +181,18 @@
+
diff --git a/web-admin/health-checkup/post-illness-personnel.html b/web-admin/health-checkup/post-illness-personnel.html
index 9a1b8a7..93cc457 100644
--- a/web-admin/health-checkup/post-illness-personnel.html
+++ b/web-admin/health-checkup/post-illness-personnel.html
@@ -208,6 +208,18 @@
+
diff --git a/web-admin/health-checkup/post-imc-class.html b/web-admin/health-checkup/post-imc-class.html
new file mode 100644
index 0000000..7fa82ad
--- /dev/null
+++ b/web-admin/health-checkup/post-imc-class.html
@@ -0,0 +1,619 @@
+
+
+
+
+
+健康体检 - 用户影像文件分类 | 健康CQ原型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web-admin/health-checkup/post-imc-info.html b/web-admin/health-checkup/post-imc-info.html
new file mode 100644
index 0000000..7b14bac
--- /dev/null
+++ b/web-admin/health-checkup/post-imc-info.html
@@ -0,0 +1,580 @@
+
+
+
+
+
+健康体检 - 用户影像文件详细 | 健康CQ原型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web-admin/health-checkup/post-imc-log.html b/web-admin/health-checkup/post-imc-log.html
new file mode 100644
index 0000000..cd97098
--- /dev/null
+++ b/web-admin/health-checkup/post-imc-log.html
@@ -0,0 +1,520 @@
+
+
+
+
+
+健康体检 - 文件处理日志 | 健康CQ原型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web-admin/health-checkup/post-imc-user.html b/web-admin/health-checkup/post-imc-user.html
new file mode 100644
index 0000000..ae566d1
--- /dev/null
+++ b/web-admin/health-checkup/post-imc-user.html
@@ -0,0 +1,658 @@
+
+
+
+
+
+健康体检 - 用户体检信息 | 健康CQ原型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/web-admin/health-checkup/post-indicator-notify.html b/web-admin/health-checkup/post-indicator-notify.html
index dcada5d..cc440ce 100644
--- a/web-admin/health-checkup/post-indicator-notify.html
+++ b/web-admin/health-checkup/post-indicator-notify.html
@@ -180,6 +180,18 @@
+
diff --git a/web-admin/health-checkup/post-item-stat.html b/web-admin/health-checkup/post-item-stat.html
index ab48799..b0ef319 100644
--- a/web-admin/health-checkup/post-item-stat.html
+++ b/web-admin/health-checkup/post-item-stat.html
@@ -172,6 +172,18 @@
+
diff --git a/web-admin/health-checkup/post-key-indicator-stat.html b/web-admin/health-checkup/post-key-indicator-stat.html
index 80316be..6c445c0 100644
--- a/web-admin/health-checkup/post-key-indicator-stat.html
+++ b/web-admin/health-checkup/post-key-indicator-stat.html
@@ -205,6 +205,18 @@
+
diff --git a/web-admin/health-checkup/post-report-employee.html b/web-admin/health-checkup/post-report-employee.html
index 1a90f96..85056f2 100644
--- a/web-admin/health-checkup/post-report-employee.html
+++ b/web-admin/health-checkup/post-report-employee.html
@@ -207,6 +207,18 @@
+
diff --git a/web-admin/health-checkup/post-report-gastro.html b/web-admin/health-checkup/post-report-gastro.html
index 95a06e5..65e60e2 100644
--- a/web-admin/health-checkup/post-report-gastro.html
+++ b/web-admin/health-checkup/post-report-gastro.html
@@ -258,6 +258,18 @@
+
diff --git a/web-admin/health-checkup/post-report-unmatched.html b/web-admin/health-checkup/post-report-unmatched.html
index 7199efc..7d27e24 100644
--- a/web-admin/health-checkup/post-report-unmatched.html
+++ b/web-admin/health-checkup/post-report-unmatched.html
@@ -191,6 +191,18 @@
+
diff --git a/web-admin/health-checkup/post-standard-stat.html b/web-admin/health-checkup/post-standard-stat.html
index 4781a7b..dc9f1af 100644
--- a/web-admin/health-checkup/post-standard-stat.html
+++ b/web-admin/health-checkup/post-standard-stat.html
@@ -181,6 +181,18 @@
+
diff --git a/web-admin/health-checkup/post-unit-cost-stat.html b/web-admin/health-checkup/post-unit-cost-stat.html
index 0ff8791..3b2ffc0 100644
--- a/web-admin/health-checkup/post-unit-cost-stat.html
+++ b/web-admin/health-checkup/post-unit-cost-stat.html
@@ -202,6 +202,18 @@
+
diff --git a/web-admin/health-checkup/post-unit-count.html b/web-admin/health-checkup/post-unit-count.html
index f4eff95..c713a64 100644
--- a/web-admin/health-checkup/post-unit-count.html
+++ b/web-admin/health-checkup/post-unit-count.html
@@ -211,6 +211,18 @@
+