Merge branch 'master' into cs

This commit is contained in:
Your Name
2026-05-05 18:26:03 +08:00
35 changed files with 3612 additions and 348 deletions
@@ -0,0 +1,35 @@
-- 清理菜单表中的孤儿记录(可选 · 跟 T1+T2 无关)
--
-- 背景:admin 启动时会按菜单表的 component 字段去 import.meta.glob 出来的 vue 文件里找匹配,
-- 找不到就 console.error("找不到组件 xxx")。前端 admin/src/views/stats/ 下没有 doctor-daily 目录,
-- 但菜单表里仍残留 component='stats/doctor-daily/index' 的记录 → 每次刷页面都会有这条警告。
--
-- 安全提示:
-- 1. **先跑下面的 SELECT**,确认要删的记录确实是孤儿(前端 views 下不存在)。
-- 2. 如果想保留菜单数据但不再触发 console.error,可以改 component 为空字符串而不是删除。
-- 3. 如果以后该功能要回归,可以从 git 历史里恢复或重新写 menu SQL。
--
-- 步骤 1:探测
-- =============================================================
-- SELECT id, pid, type, name, perms, paths, component, is_show, create_time
-- FROM zyt_system_menu
-- WHERE component LIKE '%doctor-daily%'
-- OR perms LIKE '%doctor.daily%'
-- OR paths LIKE '%doctor-daily%';
-- 步骤 2(可选 A):把这条菜单及其子按钮全部删掉
-- =============================================================
-- 先把它的子节点(按钮权限)一并清理
-- DELETE FROM zyt_system_menu
-- WHERE pid IN (
-- SELECT id FROM (
-- SELECT id FROM zyt_system_menu WHERE component = 'stats/doctor-daily/index'
-- ) t
-- );
-- DELETE FROM zyt_system_menu WHERE component = 'stats/doctor-daily/index';
-- 步骤 2(可选 B):仅置空 component,保留菜单与按钮权限不动(最稳妥)
-- =============================================================
-- UPDATE zyt_system_menu
-- SET component = ''
-- WHERE component = 'stats/doctor-daily/index';
@@ -0,0 +1,17 @@
# T1+T2 - 2026-05-05
# (perms=tcm.diagnosis/lists)
# tcm.diagnosis/readonlyDetail
SET @diag_menu_id := (SELECT id FROM zyt_system_menu WHERE perms = 'tcm.diagnosis/lists' LIMIT 1);
INSERT INTO zyt_system_menu (
pid, type, name, icon, sort, perms, paths, component,
selected, params, is_cache, is_show, is_disable, create_time, update_time
)
SELECT
@diag_menu_id, 'A', '患者信息详情', '', 70,
'tcm.diagnosis/readonlyDetail', '', '',
'', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
FROM DUAL
WHERE @diag_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.diagnosis/readonlyDetail');
@@ -0,0 +1,44 @@
# T5 - 2026-05-05
# (perms=tcm.diagnosis/lists)
# tcm.diagnosisTodo/lists
# tcm.diagnosisTodo/add
# tcm.diagnosisTodo/cancel
# detail /
SET @diag_menu_id := (SELECT id FROM zyt_system_menu WHERE perms = 'tcm.diagnosis/lists' LIMIT 1);
INSERT INTO zyt_system_menu (
pid, type, name, icon, sort, perms, paths, component,
selected, params, is_cache, is_show, is_disable, create_time, update_time
)
SELECT
@diag_menu_id, 'A', '待办列表', '', 60,
'tcm.diagnosisTodo/lists', '', '',
'', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
FROM DUAL
WHERE @diag_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.diagnosisTodo/lists');
INSERT INTO zyt_system_menu (
pid, type, name, icon, sort, perms, paths, component,
selected, params, is_cache, is_show, is_disable, create_time, update_time
)
SELECT
@diag_menu_id, 'A', '新增待办', '', 61,
'tcm.diagnosisTodo/add', '', '',
'', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
FROM DUAL
WHERE @diag_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.diagnosisTodo/add');
INSERT INTO zyt_system_menu (
pid, type, name, icon, sort, perms, paths, component,
selected, params, is_cache, is_show, is_disable, create_time, update_time
)
SELECT
@diag_menu_id, 'A', '取消待办', '', 62,
'tcm.diagnosisTodo/cancel', '', '',
'', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
FROM DUAL
WHERE @diag_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.diagnosisTodo/cancel');
@@ -0,0 +1,29 @@
-- 诊单待办事项(T5 - 2026-05-05
-- 用途:医助在诊单上挂「将来要提醒自己的事」,到点由企微推送给创建人本人。
-- 设计:状态机 0=待执行 → 1=已发送(成功)/ 2=已取消(人工) / 3=发送失败(终态,不重试)
-- 索引说明:
-- idx_diagnosis_id —— 编辑页/列表按诊单查询
-- idx_creator_id —— 反查某 admin 创建过的待办(取消权限校验等)
-- idx_status_remind_time —— 复合索引,cron 扫表「status=0 AND remind_time<=now」核心索引
CREATE TABLE IF NOT EXISTS `zyt_tcm_diagnosis_todo` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`diagnosis_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '所属诊单 idzyt_tcm_diagnosis.id',
`patient_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '冗余患者 id,便于反查',
`content` varchar(500) NOT NULL DEFAULT '' COMMENT '提醒内容(企微推送正文)',
`remind_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '提醒时间戳(秒);cron 扫描 remind_time<=now',
`status` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '状态:0=待执行 1=已发送 2=已取消 3=发送失败',
`creator_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建人 admin.id(推送目标)',
`creator_name` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人姓名快照',
`notified_at` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '实际推送时间(成功时写入)',
`error` varchar(500) NOT NULL DEFAULT '' COMMENT '失败原因(status=3 时写入)',
`cancelled_at` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '取消时间',
`cancelled_by` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '取消人 admin.id',
`create_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_time` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '更新时间',
`delete_time` int(11) unsigned NULL DEFAULT NULL COMMENT '软删除时间',
PRIMARY KEY (`id`),
KEY `idx_diagnosis_id` (`diagnosis_id`),
KEY `idx_creator_id` (`creator_id`),
KEY `idx_status_remind_time` (`status`, `remind_time`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '诊单待办事项(企微定时推送给创建人)';
@@ -0,0 +1,30 @@
# 2026-05-05
# (perms=tcm.diagnosis/lists)
# tcm.diagnosis/addTrackingNote
# tcm.diagnosis/trackingNotes
SET @diag_menu_id := (SELECT id FROM zyt_system_menu WHERE perms = 'tcm.diagnosis/lists' LIMIT 1);
INSERT INTO zyt_system_menu (
pid, type, name, icon, sort, perms, paths, component,
selected, params, is_cache, is_show, is_disable, create_time, update_time
)
SELECT
@diag_menu_id, 'A', '新增跟踪备注', '', 80,
'tcm.diagnosis/addTrackingNote', '', '',
'', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
FROM DUAL
WHERE @diag_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.diagnosis/addTrackingNote');
INSERT INTO zyt_system_menu (
pid, type, name, icon, sort, perms, paths, component,
selected, params, is_cache, is_show, is_disable, create_time, update_time
)
SELECT
@diag_menu_id, 'A', '跟踪备注列表', '', 81,
'tcm.diagnosis/trackingNotes', '', '',
'', '', 0, 1, 0, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()
FROM DUAL
WHERE @diag_menu_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM zyt_system_menu WHERE perms = 'tcm.diagnosis/trackingNotes');
@@ -0,0 +1,16 @@
-- 诊单跟踪备注表(按天一条,多次追加更新;只存文字,不含附件)
CREATE TABLE IF NOT EXISTS `zyt_tracking_note` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`diagnosis_id` int(11) unsigned NOT NULL COMMENT '诊单ID (tcm_diagnosis.id)',
`admin_id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT '记录人ID (system_admin.id)',
`note_date` date NOT NULL COMMENT '记录日期',
`content` text DEFAULT NULL COMMENT '跟踪备注文字(多次追加以换行分隔,带 [HH:MM] 前缀)',
`create_time` int(10) unsigned NOT NULL DEFAULT 0,
`update_time` int(10) unsigned NOT NULL DEFAULT 0,
`delete_time` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_diagnosis_date` (`diagnosis_id`, `note_date`),
KEY `idx_admin` (`admin_id`),
KEY `idx_diagnosis_date` (`diagnosis_id`, `note_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='诊单跟踪备注';