decodeFields 增加表单初始化能力, 完美支持子级元素

This commit is contained in:
ziv 2022-04-29 01:46:10 +00:00 committed by Gitee
parent 6e40469735
commit 18a2dc3366
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

View File

@ -1,13 +1,32 @@
/** /**
* 将服务端返回的 fields 字符串数组解析成 JSON 数组 * 将服务端返回的 fields 字符串数组解析成 JSON 数组
* 如果指定了 variables 参数可对表单进行初始化
* *
* @param fields JSON 字符串数组 * @param fields JSON 字符串数组
* @param variables Object 表单初始值
* @returns {*[]} JSON 数组 * @returns {*[]} JSON 数组
*/ */
export function decodeFields(fields) { export function decodeFields(fields, variables) {
const drawingList = [] const drawingList = (fields || []).map(json => {
fields.forEach(item => { const item = JSON.parse(json)
drawingList.push(JSON.parse(item))
if (typeof variables === 'undefined' ) return item
const setDefault = (item, variables) => {
if (typeof variables[item.__vModel__] !== 'undefined') {
item.__config__.defaultValue = variables[item.__vModel__]
}
if (item.__config__.children && item.__config__.children.length) {
item.__config__.children.forEach(child => {
setDefault(child, variables)
}) })
}
}
setDefault(item, variables)
return item
})
return drawingList return drawingList
} }