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)
}
} |