Procházet zdrojové kódy

!143 decodeFields 增加表单初始化能力, 完美支持子级元素
Merge pull request !143 from ziv/master

芋道源码 před 2 roky
rodič
revize
b5d458f1c4
1 změnil soubory, kde provedl 23 přidání a 4 odebrání
  1. 23 4
      yudao-ui-admin/src/utils/formGenerator.js

+ 23 - 4
yudao-ui-admin/src/utils/formGenerator.js

@@ -1,13 +1,32 @@
 /**
  * 将服务端返回的 fields 字符串数组,解析成 JSON 数组
+ * 如果指定了 variables 参数可对表单进行初始化
  *
  * @param fields JSON 字符串数组
+ * @param variables Object 表单初始值
  * @returns {*[]} JSON 数组
  */
-export function decodeFields(fields) {
-  const drawingList = []
-  fields.forEach(item => {
-    drawingList.push(JSON.parse(item))
+export function decodeFields(fields, variables) {
+  const drawingList = (fields || []).map(json => {
+    const item = JSON.parse(json)
+
+    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
 }