ソースを参照

fix (1.65.0 -> 1.65.1): 修复患者注册成功后表单清理逻辑,支持保留指定字段以便快速连续注册

- 注册成功后清理表单时保留 patient_size 和 accession_number 字段,避免重要数据丢失
- 支持通过二维码扫描快速连续注册患者,提升操作效率

改动文件:
- src/domain/patient/registerLogic.ts
- src/pages/patient/register.tsx
- src/states/patient/register/formSlice.ts
dengdx 5 日 前
コミット
a14da24103

+ 13 - 0
CHANGELOG.md

@@ -3,6 +3,19 @@
 本项目的所有重要变更都将记录在此文件中.
 
 
+## [1.65.1] - 2026-01-12 20:25
+
+### 修复 (Fixed)
+
+- **修复患者注册成功后表单清理逻辑,支持保留指定字段以便快速连续注册** - 注册成功后清理表单时保留 patient_size 和 accession_number 字段,避免重要数据丢失,支持通过二维码扫描快速连续注册患者
+
+**改动文件:**
+
+- src/domain/patient/registerLogic.ts
+- src/pages/patient/register.tsx
+- src/states/patient/register/formSlice.ts
+
+
 ## [1.65.0] - 2026-01-12 19:15
 
 ### 新增 (Added)

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "zsis",
-  "version": "1.65.0",
+  "version": "1.65.1",
   "private": true,
   "description": "医学成像系统",
   "main": "main.js",

+ 1 - 1
src/domain/patient/registerLogic.ts

@@ -109,7 +109,7 @@ export async function executeRegisterLogic(store: {
       return { success: false, views: [] };
     }
     //注册成功,清理
-    storeOfRoot.dispatch(clearFormData());
+    storeOfRoot.dispatch(clearFormData(['accession_number','patient_size']));
     storeOfRoot.dispatch(clearSelectedViews());
     console.log('Work registered successfully:', response);
     message.info('Work registered successfully');

+ 10 - 2
src/pages/patient/register.tsx

@@ -111,10 +111,18 @@ const RegisterPage: React.FC = () => {
       // 清理时机1:注册成功后清理表单
       // 1. 清理 Redux formSlice
       // dispatch(clearFormData()); //放到 executeRegisterLogic 中处理
-      // 2. 清理 Ant Design Form
+      // 2. 清理 Ant Design Form,但保留 accession_number
+      const currentAccessionNumber = form.getFieldValue('accession_number');
+      const patient_size=form.getFieldValue('patient_size');
       form.resetFields();
+      if (currentAccessionNumber) {
+        form.setFieldsValue({ accession_number: currentAccessionNumber });
+      }
+      if (patient_size) {
+        form.setFieldsValue({ patient_size:patient_size });
+      }
       // 3. selectedViews 已在 executeRegisterLogic 中自动清空
-      console.log('注册成功,表单已清空,可以开始新的注册');
+      console.log('注册成功,表单已清空,但保留了 accession_number,可以开始新的注册');
     }
 
     return result;

+ 16 - 3
src/states/patient/register/formSlice.ts

@@ -19,9 +19,22 @@ const formSlice = createSlice({
     },
     getFormData: (state) => state, //其实这里用不到
     // 清空表单数据
-    clearFormData: (state) => {
-      state.formData = {};
-      console.log('Redux formSlice: 表单数据已清空');
+    clearFormData: (state, action: PayloadAction<string[] | undefined>) => {
+      const exceptFields = action.payload || [];
+      if (exceptFields.length > 0) {
+        // 保留指定字段的值
+        const preservedData: Record<string, any> = {};
+        exceptFields.forEach(field => {
+          if (state.formData[field] !== undefined) {
+            preservedData[field] = state.formData[field];
+          }
+        });
+        state.formData = preservedData;
+        console.log(`Redux formSlice: 表单数据已清空,但保留了字段: ${exceptFields.join(', ')}`);
+      } else {
+        state.formData = {};
+        console.log('Redux formSlice: 表单数据已清空');
+      }
     },
   },
 });