Browse Source

fix(form): 优化表单选项取消功能 #0018030

gavin.chen 1 year ago
parent
commit
593a6f1870

+ 6 - 1
lib/pages/check/widgets/exam_configurable/exam_toxic_substance.dart

@@ -93,7 +93,12 @@ class ExamToxicSubstance extends StatelessWidget {
                         final toxicSubstance = ToxicSubstance(
                           value: e.toJson(),
                         );
-                        selectRadioChange(toxicSubstance.toJson());
+                        final bool selected = selectedValue == e.value;
+                        if (selected) {
+                          selectRadioChange({});
+                        } else {
+                          selectRadioChange(toxicSubstance.toJson());
+                        }
                       },
                       borderRadius: BorderRadius.circular(50),
                       child: Ink(

+ 10 - 4
lib/pages/check/widgets/new_configurable_card.dart

@@ -510,8 +510,8 @@ class NewConfigurableFormState extends State<NewConfigurableCard> {
     void selectCheckBoxChange(Option e) {
       // 互斥项预处理
       if (exclusiveValue.isNotEmpty && exclusiveValue.contains(e.value)) {
-        currentSelectedCheckBox
-            .removeWhere((element) => exclusiveValue.contains(element));
+        currentSelectedCheckBox.removeWhere((element) =>
+            exclusiveValue.contains(element) && element != e.value);
       }
       if (currentSelectedCheckBox.contains(e.value)) {
         currentSelectedCheckBox.remove(e.value);
@@ -804,8 +804,13 @@ class NewConfigurableFormState extends State<NewConfigurableCard> {
     String currentScore = formValue[currentFormObject.childrenKey!.last] ?? "";
 
     void selectRaidoChange(Option e) {
-      currentSelected = e.value ?? '';
-      formValue[currentFormObject.childrenKey!.first] = currentSelected;
+      if (formValue[currentFormObject.childrenKey!.first] == e.value) {
+        formValue[currentFormObject.childrenKey!.first] = '';
+        currentSelected = '';
+      } else {
+        currentSelected = e.value ?? '';
+        formValue[currentFormObject.childrenKey!.first] = currentSelected;
+      }
       setState(() {});
     }
 
@@ -848,6 +853,7 @@ class NewConfigurableFormState extends State<NewConfigurableCard> {
     Map? currentSelectedToxicSubstance =
         formValue[currentFormObject.childrenKey!.last];
     void selectRaidoChange(Map e) {
+      // TODO 处理一下取消选择的问题
       currentSelectedToxicSubstance = e;
       formValue[currentFormObject.childrenKey!.last] =
           currentSelectedToxicSubstance;