From 7e66561a5fdcb148caa447231a45be8cfe34db17 Mon Sep 17 00:00:00 2001 From: iven Date: Mon, 27 Apr 2026 11:20:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(health):=20=E7=BB=9F=E4=B8=80=E9=9A=8F?= =?UTF-8?q?=E8=AE=BF=E7=B1=BB=E5=9E=8B=E4=B8=BA=205=20=E7=A7=8D=20?= =?UTF-8?q?=E2=80=94=20phone/outpatient/home=5Fvisit/online/wechat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - validation.rs: face_to_face 替换为 outpatient,新增 home_visit/wechat - FollowUpTaskList.tsx: 新增 online 选项,与后端对齐 - 迁移 078: follow_up_task + follow_up_record face_to_face → outpatient --- .../web/src/pages/health/FollowUpTaskList.tsx | 2 + crates/erp-health/src/service/validation.rs | 2 +- crates/erp-server/migration/src/lib.rs | 2 + ...260427_000078_normalize_follow_up_types.rs | 46 +++++++++++++++++++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 crates/erp-server/migration/src/m20260427_000078_normalize_follow_up_types.rs diff --git a/apps/web/src/pages/health/FollowUpTaskList.tsx b/apps/web/src/pages/health/FollowUpTaskList.tsx index cb9e4ac..dc245df 100644 --- a/apps/web/src/pages/health/FollowUpTaskList.tsx +++ b/apps/web/src/pages/health/FollowUpTaskList.tsx @@ -34,6 +34,7 @@ const FOLLOW_UP_TYPE_OPTIONS = [ { value: 'phone', label: '电话' }, { value: 'outpatient', label: '门诊' }, { value: 'home_visit', label: '家访' }, + { value: 'online', label: '线上' }, { value: 'wechat', label: '微信' }, ]; @@ -41,6 +42,7 @@ const FOLLOW_UP_TYPE_MAP: Record = { phone: '电话', outpatient: '门诊', home_visit: '家访', + online: '线上', wechat: '微信', }; diff --git a/crates/erp-health/src/service/validation.rs b/crates/erp-health/src/service/validation.rs index ab840b1..b15fe82 100644 --- a/crates/erp-health/src/service/validation.rs +++ b/crates/erp-health/src/service/validation.rs @@ -82,7 +82,7 @@ pub fn validate_schedule_status(value: &str) -> HealthResult<()> { /// follow_up_task.follow_up_type pub fn validate_follow_up_type(value: &str) -> HealthResult<()> { validate_enum!(value, "follow_up_type", [ - "phone", "face_to_face", "online", + "phone", "outpatient", "home_visit", "online", "wechat", ]); Ok(()) } diff --git a/crates/erp-server/migration/src/lib.rs b/crates/erp-server/migration/src/lib.rs index 566f1cc..7b8282f 100644 --- a/crates/erp-server/migration/src/lib.rs +++ b/crates/erp-server/migration/src/lib.rs @@ -77,6 +77,7 @@ mod m20260426_000074_create_vital_signs_hourly; mod m20260426_000075_create_patient_devices; mod m20260426_000076_create_alert_rules; mod m20260426_000077_create_alerts; +mod m20260427_000078_normalize_follow_up_types; pub struct Migrator; @@ -161,6 +162,7 @@ impl MigratorTrait for Migrator { Box::new(m20260426_000075_create_patient_devices::Migration), Box::new(m20260426_000076_create_alert_rules::Migration), Box::new(m20260426_000077_create_alerts::Migration), + Box::new(m20260427_000078_normalize_follow_up_types::Migration), ] } } diff --git a/crates/erp-server/migration/src/m20260427_000078_normalize_follow_up_types.rs b/crates/erp-server/migration/src/m20260427_000078_normalize_follow_up_types.rs new file mode 100644 index 0000000..a170818 --- /dev/null +++ b/crates/erp-server/migration/src/m20260427_000078_normalize_follow_up_types.rs @@ -0,0 +1,46 @@ +use sea_orm_migration::prelude::*; + +pub struct Migration; + +impl MigrationName for Migration { + fn name(&self) -> &str { + "m20260427_000078_normalize_follow_up_types" + } +} + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + let conn = manager.get_connection(); + + // follow_up_task: face_to_face → outpatient + conn.execute_unprepared( + "UPDATE follow_up_task SET follow_up_type = 'outpatient' WHERE follow_up_type = 'face_to_face'", + ) + .await?; + + // follow_up_record: face_to_face → outpatient + conn.execute_unprepared( + "UPDATE follow_up_record SET follow_up_type = 'outpatient' WHERE follow_up_type = 'face_to_face'", + ) + .await?; + + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + let conn = manager.get_connection(); + + conn.execute_unprepared( + "UPDATE follow_up_task SET follow_up_type = 'face_to_face' WHERE follow_up_type = 'outpatient'", + ) + .await?; + + conn.execute_unprepared( + "UPDATE follow_up_record SET follow_up_type = 'face_to_face' WHERE follow_up_type = 'outpatient'", + ) + .await?; + + Ok(()) + } +}