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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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原型 + + + + +
+ + +
+ + + 返回首页 + +
+ 系统管理员 ▾ +
+
+ + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + + + + + + +
序号文件类型影像序号错误信息文件地址dcm实例ID研究实例ID患者ID研究ID创建日期操作
+
+ +
+
+ + + + + + + + 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原型 + + + + +
+ + +
+ + + 返回首页 + +
+ 系统管理员 ▾ +
+
+ + + +
+
+
+ + +
+
+ +
+ + +
+
2026
+
2025
+
2024
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
序号医院名称姓名身份证号体检年份体检编号影像分类json数据文件地址文件大小(MB)处理状态错误信息传输开始时间传输完成时间解析开始时间解析完成时间操作
+
+ +
+
+ + + + + + 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原型 + + + + + +
+ + +
+ + + 返回首页 + +
+ 系统管理员 ▾ +
+
+ + + + + +
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+
2026
+
2025
+
2024
+
+
+
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + +
序号单位信息姓名身份证号体检年份医院名称体检编号创建日期操作
+
+ +
+
+ + + + + + + + + + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 + 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 @@ 冠脉CTA体检统计 +