Pārlūkot izejas kodu

fix: fix variable-aggregator cannot pass node check in group mode (#16439)

Co-authored-by: crazywoola <427733928@qq.com>
Good Wood 1 mēnesi atpakaļ
vecāks
revīzija
7ce8faf176

+ 22 - 5
web/app/components/workflow/nodes/variable-assigner/default.ts

@@ -22,16 +22,33 @@ const nodeDefault: NodeDefault<VariableAssignerNodeType> = {
   },
   checkValid(payload: VariableAssignerNodeType, t: any) {
     let errorMessages = ''
-    const { variables } = payload
-    if (!variables || variables.length === 0)
-      errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.variableAssigner.title`) })
-    if (!errorMessages) {
+    const { variables, advanced_settings } = payload
+    const { group_enabled = false, groups = [] } = advanced_settings || {}
+    // enable group
+    const validateVariables = (variables: any[], field: string) => {
       variables.forEach((variable) => {
         if (!variable || variable.length === 0)
-          errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.variableValue`) })
+          errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(field) })
       })
     }
 
+    if (group_enabled) {
+      if (!groups || groups.length === 0) {
+        errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.variableAssigner.title`) })
+      }
+      else if (!errorMessages) {
+        groups.forEach((group) => {
+          validateVariables(group.variables || [], `${i18nPrefix}.errorMsg.fields.variableValue`)
+        })
+      }
+    }
+    else {
+      if (!variables || variables.length === 0)
+        errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.variableAssigner.title`) })
+      else if (!errorMessages)
+        validateVariables(variables, `${i18nPrefix}.errorMsg.fields.variableValue`)
+    }
+
     return {
       isValid: !errorMessages,
       errorMessage: errorMessages,