From ebe2aaa7af43ba64fb09d2433f698892eb06c317 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期四, 15 一月 2026 13:42:29 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/page/code/CodeEdit.jsx |   44 ++++++++++++++++++++++++++++++--------------
 1 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/zy-acs-flow/src/page/code/CodeEdit.jsx b/zy-acs-flow/src/page/code/CodeEdit.jsx
index c7a7d56..ec0ab8b 100644
--- a/zy-acs-flow/src/page/code/CodeEdit.jsx
+++ b/zy-acs-flow/src/page/code/CodeEdit.jsx
@@ -23,7 +23,6 @@
 import { useWatch, useFormContext } from "react-hook-form";
 import { Stack, Grid, Box, Typography, ToggleButton, ToggleButtonGroup } from '@mui/material';
 import { alpha } from '@mui/material/styles';
-import * as Common from '@/utils/common';
 import { EDIT_MODE } from '@/config/setting';
 import EditBaseAside from "../components/EditBaseAside";
 import CustomerTopToolBar from "../components/EditTopToolBar";
@@ -42,6 +41,7 @@
 }
 
 const DIR_RULE_ANGLES = [0, 90, 180, 270];
+const DEFAULT_DIR_RULES = DIR_RULE_ANGLES.map(angle => ({ angle, enabled: true }));
 
 const normalizeDirRuleValue = (value) => {
     let parsed = [];
@@ -92,6 +92,7 @@
 
 const DirectionRuleInput = () => {
     const translate = useTranslate();
+    const record = useRecordContext();
     const { register, setValue } = useFormContext();
     const dirRuleValue = useWatch({ name: 'dirRule' });
 
@@ -99,14 +100,27 @@
         register('dirRule');
     }, [register]);
 
-    const rules = useMemo(() => normalizeDirRuleValue(dirRuleValue), [dirRuleValue]);
-    const normalizedRulesString = useMemo(() => JSON.stringify(rules), [rules]);
+    const initialDirRuleString = useMemo(() => {
+        const source = record?.dirRule ?? DEFAULT_DIR_RULES;
+        return JSON.stringify(normalizeDirRuleValue(source));
+    }, [record]);
 
     useEffect(() => {
-        if (dirRuleValue !== normalizedRulesString) {
-            setValue('dirRule', normalizedRulesString, { shouldDirty: false, shouldTouch: false });
+        if (dirRuleValue === undefined || dirRuleValue === null || dirRuleValue === '') {
+            setValue('dirRule', initialDirRuleString, { shouldDirty: false, shouldTouch: false });
+            return;
         }
-    }, [dirRuleValue, normalizedRulesString, setValue]);
+
+        const normalizedString = JSON.stringify(normalizeDirRuleValue(dirRuleValue));
+        if (dirRuleValue !== normalizedString) {
+            setValue('dirRule', normalizedString, { shouldDirty: false, shouldTouch: false });
+        }
+    }, [dirRuleValue, initialDirRuleString, setValue]);
+
+    const rules = useMemo(
+        () => normalizeDirRuleValue(dirRuleValue ?? initialDirRuleString),
+        [dirRuleValue, initialDirRuleString]
+    );
 
     const disabledAngle = useMemo(() => {
         const disabled = rules.find(rule => !rule.enabled);
@@ -149,6 +163,14 @@
             >
                 {rules.map(rule => {
                     const isDisabled = !rule.enabled;
+                    const disabledStyles = {
+                        color: (theme) => theme.palette.error.main,
+                        borderColor: (theme) => theme.palette.error.main,
+                        bgcolor: (theme) => alpha(theme.palette.error.main, 0.08),
+                        '&:hover': {
+                            bgcolor: (theme) => alpha(theme.palette.error.main, 0.16),
+                        },
+                    };
                     return (
                         <ToggleButton
                             key={rule.angle}
@@ -159,14 +181,8 @@
                                 flexDirection: 'column',
                                 gap: 0.5,
                                 py: 1.5,
-                                '&.Mui-selected': {
-                                    color: (theme) => theme.palette.error.main,
-                                    borderColor: (theme) => theme.palette.error.main,
-                                    bgcolor: (theme) => alpha(theme.palette.error.main, 0.08),
-                                    '&:hover': {
-                                        bgcolor: (theme) => alpha(theme.palette.error.main, 0.16),
-                                    },
-                                },
+                                ...(isDisabled ? disabledStyles : {}),
+                                '&.Mui-selected': disabledStyles,
                                 '& .dirRuleStatus': {
                                     color: isDisabled ? 'error.main' : 'text.secondary',
                                 },

--
Gitblit v1.9.1