Page tree
Skip to end of metadata
Go to start of metadata
def customField = getFieldByName("操作平台")
def customField1 = getFieldByName("Project Name")
def customField2 = getFieldByName("System Project Manager")
def customField3 = getFieldByName("SYS Project Team")
def customField4 = getFieldByName("SW Main Released Version")
def customField5 = getFieldByName("SW Main Unreleased Version")

if (!customField) return

def selectedValues = customField.getValue()

def containsValue = { list, value ->
    if (list == null) return false
    if (list instanceof String) return list == value
    if (list instanceof Collection) {
        return list.any { it == value }
    }
    return false
}

def clearFieldValue = { field ->
    if (field == null) return
    try {
        field.setFormValue(null)
    } catch (Exception e) {}
}

// 定义所有字段和映射关系
def allFields = [customField1, customField2, customField3, customField4, customField5]
def fieldMapping = [
    "openshift": [customField1, customField2],
    "jenkins": [customField3],
    "flyway": [customField4, customField5]
]

// 1. 找出需要激活的字段(选中的平台对应的字段)
def activeFields = fieldMapping.findAll { platform, fields ->
    containsValue(selectedValues, platform)
}.values().flatten()

// 2. 找出需要清空的字段(未选中的平台对应的字段)
def fieldsToClear = allFields - activeFields

// 3. 重置所有字段为隐藏和非必填
allFields.each { field ->
    if (field) {
        field.setRequired(false)
        field.setHidden(true)
    }
}

// 4. 激活选中的字段(显示 + 必填)
activeFields.each { field ->
    if (field) {
        field.setRequired(true)
        field.setHidden(false)
    }
}

// 5. 清空未选中的字段
fieldsToClear.each { field ->
    if (field) {
        clearFieldValue(field)
    }
}
  • No labels