From 87e82d1caae9ba992c74d1278e749f053460b8d7 Mon Sep 17 00:00:00 2001 From: wren <“porlong@qq.com”> Date: Thu, 7 May 2026 11:20:55 +0800 Subject: [PATCH] fix: improve rule detail dependency sync --- app/routes/rulesTest.detail.tsx | 47 +++++++++++++++++++++++++++++++-- app/styles/pages/rules_test.css | 13 +++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/app/routes/rulesTest.detail.tsx b/app/routes/rulesTest.detail.tsx index 2ced69a..ccf1a6d 100644 --- a/app/routes/rulesTest.detail.tsx +++ b/app/routes/rulesTest.detail.tsx @@ -788,6 +788,21 @@ export default function RulesTestDetail() { })); }; + const removeCurrentRuleDependencies = (targets: string[]) => { + if (!currentRule) return; + const normalizedTargets = targets.map((item) => String(item || '').trim()).filter(Boolean); + if (normalizedTargets.length === 0) return; + setRules((current) => current.map((rule) => { + if (rule.id !== currentRule.id) return rule; + return { + ...rule, + dependencies: rule.dependencies.filter((dependency) => ( + !normalizedTargets.some((target) => dependency === target || dependency.startsWith(`${target}.`)) + )), + }; + })); + }; + const saveRule = () => { if (!editor || editor.kind !== 'rule') return; const existingRule = editor.id ? rules.find(rule => rule.id === editor.id) : undefined; @@ -883,7 +898,12 @@ export default function RulesTestDetail() { }; const removeDocument = (documentId: string) => { + const target = subDocuments.find((document) => document.id === documentId); setSubDocuments((current) => current.filter((document) => document.id !== documentId)); + removeCurrentRuleDependencies([ + documentId, + target?.name || '', + ]); setDraftSaved(false); }; @@ -960,7 +980,14 @@ export default function RulesTestDetail() { }; const removeVisual = (visualId: string) => { + const target = visualElements.find((item) => item.id === visualId); setVisualElements((current) => current.filter((item) => item.id !== visualId)); + removeCurrentRuleDependencies([ + visualId, + target?.name || '', + `visual.${visualId}`, + `visual.${target?.name || visualId}`, + ]); setDraftSaved(false); }; @@ -1239,7 +1266,7 @@ export default function RulesTestDetail() {
- 这里只显示当前评查点实际引用到的子文档。 + 这里只显示当前评查点实际引用到的子文档;新增或编辑后会自动挂到当前评查点依赖。 @@ -1267,7 +1294,7 @@ export default function RulesTestDetail() {
- 这里只显示当前评查点实际引用到的视觉要素。 + 这里只显示当前评查点实际引用到的视觉要素;新增或编辑后会自动挂到当前评查点依赖。 @@ -1689,6 +1716,22 @@ export default function RulesTestDetail() { placeholder="如:合同专用章,公章" /> + +
diff --git a/app/styles/pages/rules_test.css b/app/styles/pages/rules_test.css index a26162c..c650abd 100644 --- a/app/styles/pages/rules_test.css +++ b/app/styles/pages/rules_test.css @@ -726,6 +726,19 @@ font-weight: 600; } +.rules-test-page .drawer-form label.drawer-checkbox-row { + flex-direction: row; + align-items: center; + gap: 10px; + font-weight: 500; +} + +.rules-test-page .drawer-form label.drawer-checkbox-row input[type="checkbox"] { + width: 16px; + height: 16px; + margin: 0; +} + .rules-test-page .drawer-form input, .rules-test-page .drawer-form select, .rules-test-page .drawer-form textarea {