{"version":3,"file":"usePageIdDisplay-DTcHDEjE.js","names":[],"sources":["../../../app/javascript/constants/pageNumbers.js","../../../app/javascript/composables/usePageIdDisplay.js"],"sourcesContent":["/**\n * 页面编号集中管理\n *\n * 新增页面时在此添加条目,编号会自动递增。\n * Tab/子标签使用子编号格式 P{主编号}-{序号}。\n *\n * 用法:\n * import { PN, showPageNumbers, setShowPageNumbers } from '@/constants/pageNumbers';\n * \n *

房颤趋势分析 {{ PN.af_trend_analysis }}

\n */\nimport { reactive, computed } from 'vue';\n\nconst _pages = [\n { key: 'dashboard', title: '仪表板', num: 1 },\n { key: 'hrv', title: 'HRV', num: 2 },\n { key: 'hrv_trend', title: 'HRV趋势图', num: 3 },\n { key: 'bp', title: '血压模块', num: 4 },\n { key: 'ai_bp', title: 'AI血压模块', num: 5 },\n { key: 'bp_trend', title: '血压趋势图', num: 6 },\n { key: 'data_mgmt', title: '数据管理', num: 7 },\n { key: 'af_report', title: '房颤分析报告', num: 8 },\n { key: 'code_tables', title: '通用代码表', num: 9 },\n { key: 'bphs_score', title: 'BPHS评分管理', num: 10 },\n { key: 'bphs_adjust', title: 'BPHS调整因子', num: 11 },\n { key: 'af_prediction', title: '房颤预测模型', num: 12 },\n { key: 'users', title: '用户管理', num: 13 },\n { key: 'orgs', title: 'Organizations', num: 14 },\n { key: 'contacts', title: 'Contacts', num: 15 },\n { key: 'data_quality', title: '数据质量中心', num: 16 },\n { key: 'experiments', title: '实验管理器', num: 17 },\n { key: 'af_trend_analysis', title: '房颤长期趋势分析', num: 21 },\n { key: 'af_distribution', title: '时间分布分析', num: 19 },\n { key: 'af_correlation', title: '联合分析与报告', num: 20 },\n { key: 'users_new', title: '新建用户', num: 22 },\n { key: 'users_edit', title: '编辑用户', num: 23 },\n { key: 'contacts_new', title: '新建联系人', num: 24 },\n { key: 'contacts_edit', title: '编辑联系人', num: 25 },\n { key: 'organizations_edit', title: '编辑组织', num: 26 },\n { key: 'bp_new', title: '新建血压测量', num: 27 },\n { key: 'bp_edit', title: '编辑血压测量', num: 28 },\n { key: 'bphs_score_new', title: '新建评分标准', num: 29 },\n { key: 'bphs_score_edit', title: '编辑评分标准', num: 30 },\n { key: 'bphs_adjust_new', title: '新建调整因子', num: 31 },\n { key: 'bphs_adjust_edit', title: '编辑调整因子', num: 32 },\n { key: 'ai_bp_new', title: '新建AI血压测量', num: 33 },\n { key: 'ai_bp_edit', title: '编辑AI血压测量', num: 34 },\n { key: 'drug_records', title: '药健记录', num: 35 },\n { key: 'drug_records_new', title: '新建药健记录', num: 36 },\n { key: 'drug_records_edit', title: '编辑药健记录', num: 37 },\n { key: 'drug_records_show', title: '药健记录详情', num: 38 },\n { key: 'meal_records', title: '餐食记录', num: 39 },\n { key: 'meal_records_new', title: '新建餐食记录', num: 40 },\n { key: 'meal_records_edit', title: '编辑餐食记录', num: 41 },\n { key: 'meal_records_analysis', title: '饮食关联分析', num: 42 },\n { key: 'drug_correlations', title: '药健关联分析', num: 43 },\n { key: 'drug_correlations_show', title: '药健关联分析结果', num: 44 },\n { key: 'drug_correlations_reports', title: '药健关联分析报告', num: 45 },\n { key: 'afib_records', title: '房颤记录管理', num: 46 },\n { key: 'health_analytics', title: '全景健康看板', num: 50 },\n];\n\nconst _map = Object.fromEntries(_pages.map((p) => [p.key, p]));\n\n// 响应式开关状态(localStorage 持久化)\nconst _state = reactive({\n enabled: localStorage.getItem('showPageNumbers') !== 'false',\n tooltips: localStorage.getItem('showPageTooltips') !== 'false',\n});\n\n// 基础值表\nconst _raw = {\n dashboard: '[P1]',\n hrv: '[P2]',\n hrv_trend: '[P3]',\n bp: '[P4]',\n ai_bp: '[P5]',\n bp_trend: '[P6]',\n data_mgmt: '[P7]',\n af_report: '[P8]',\n code_tables: '[P9]',\n bphs_score: '[P10]',\n bphs_adjust: '[P11]',\n af_prediction: '[P12]',\n users: '[P13]',\n orgs: '[P14]',\n contacts: '[P15]',\n data_quality: '[P16]',\n experiments: '[P17]',\n af_trend_analysis: '[P21]',\n af_distribution: '[P19]',\n af_correlation: '[P20]',\n users_new: '[P22]',\n users_edit: '[P23]',\n contacts_new: '[P24]',\n contacts_edit: '[P25]',\n organizations_edit: '[P26]',\n bp_new: '[P27]',\n bp_edit: '[P28]',\n bphs_score_new: '[P29]',\n bphs_score_edit: '[P30]',\n bphs_adjust_new: '[P31]',\n bphs_adjust_edit: '[P32]',\n ai_bp_new: '[P33]',\n ai_bp_edit: '[P34]',\n drug_records: '[P35]',\n drug_records_new: '[P36]',\n drug_records_edit: '[P37]',\n drug_records_show: '[P38]',\n meal_records: '[P39]',\n meal_records_new: '[P40]',\n meal_records_edit: '[P41]',\n meal_records_analysis: '[P42]',\n drug_correlations: '[P43]',\n drug_correlations_show: '[P44]',\n drug_correlations_reports: '[P45]',\n afib_records: '[P46]',\n health_analytics: '[P50]',\n};\n\n/**\n * 响应式 PN 对象。\n * 每个属性的 getter 内部读取 _state.enabled,\n * Vue reactive 在模板渲染时自动追踪依赖。\n */\nexport const PN = reactive(\n Object.defineProperties(\n {},\n Object.fromEntries(\n Object.keys(_raw).map((key) => [\n key,\n {\n get() {\n return _state.enabled ? _raw[key] : '';\n },\n enumerable: true,\n configurable: true,\n },\n ]),\n ),\n ),\n);\n\n/**\n * 获取页面编号字符串,如 \"[P18]\"\n * 关闭时返回空字符串\n */\nexport function pageNum(key) {\n if (!_state.enabled) return '';\n const p = _map[key];\n return p ? `[P${p.num}]` : '[P?]';\n}\n\n/**\n * 获取 Tab 子编号字符串,如 \"[P18-3]\"\n */\nexport function tabNum(pageKey, tabIndex) {\n if (!_state.enabled) return '';\n const p = _map[pageKey];\n return p ? `[P${p.num}-${tabIndex}]` : `[P?-${tabIndex}]`;\n}\n\n/**\n * 主编号 + 标题组合,如 \"房颤长期趋势分析 [P18]\"\n */\nexport function pageTitle(key) {\n const p = _map[key];\n if (!p) return '未知页面';\n return _state.enabled ? `${p.title} [P${p.num}]` : p.title;\n}\n\n/**\n * Tab 编号 + 标签组合,如 \"发作次数 [P18-1]\"\n */\nexport function tabLabel(pageKey, tabIndex, tabName) {\n if (!_state.enabled) return tabName;\n const p = _map[pageKey];\n return p\n ? `${tabName} [P${p.num}-${tabIndex}]`\n : `${tabName} [P?-${tabIndex}]`;\n}\n\n/**\n * 切换页面编号显示(持久化到 localStorage)\n */\nexport function setShowPageNumbers(show) {\n _state.enabled = show;\n localStorage.setItem('showPageNumbers', String(show));\n}\n\n/**\n * 切换名称旁编号按钮显示(持久化到 localStorage)\n */\nexport function setShowPageTooltips(show) {\n _state.tooltips = show;\n localStorage.setItem('showPageTooltips', String(show));\n}\n\n/**\n * 响应式开关状态(computed ref,模板中直接使用)\n */\nexport const showPageNumbers = computed(() => _state.enabled);\n\n/**\n * 响应式名称旁编号按钮开关(computed ref)\n */\nexport const showPageTooltips = computed(() => _state.tooltips);\n","import { computed } from 'vue';\nimport { usePage } from '@inertiajs/vue3';\nimport { showPageNumbers, showPageTooltips } from '@/constants/pageNumbers';\n\n/**\n * 统一提供页面编号系统的响应式状态。\n *\n * 返回:\n * - isShowing: 全局开关(computed ref)— 控制右下角浮层\n * - showTooltips: 名称旁编号按钮开关(computed ref)\n * - pageMeta: 当前页面的编号元数据(来自 Inertia props)\n * - getBlockNumber: (blockKey) => 完整区块编号(如 \"P4-B2\")\n * - getLabelNumber: (labelKey) => 完整标签编号(如 \"P4-B2-L1\")\n */\nexport function usePageIdDisplay() {\n const page = usePage();\n\n const isShowing = computed(() => showPageNumbers.value);\n\n const showTooltips = computed(() => showPageTooltips.value);\n\n const pageMeta = computed(() => page.props.pageMeta || {});\n\n function getBlockNumber(blockKey) {\n return pageMeta.value.blocks?.[blockKey] || `AUTO_${blockKey}`;\n }\n\n function getLabelNumber(labelKey) {\n return pageMeta.value.labels?.[labelKey] || `AUTO_${labelKey}`;\n }\n\n return { isShowing, showTooltips, pageMeta, getBlockNumber, getLabelNumber };\n}\n"],"mappings":"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"}