From da57d8d5d80f12bc789639374c830ef9031998c5 Mon Sep 17 00:00:00 2001 From: sunhao Date: Mon, 8 Jan 2024 19:05:04 +0800 Subject: [PATCH] * zin: add autoLoad property to load form automatically. --- lib/zin/wg/form/v1.php | 18 ++++++++++++++++++ lib/zin/wg/formpanel/v1.php | 1 + 2 files changed, 19 insertions(+) diff --git a/lib/zin/wg/form/v1.php b/lib/zin/wg/form/v1.php index 3387341890..90d60acdfa 100644 --- a/lib/zin/wg/form/v1.php +++ b/lib/zin/wg/form/v1.php @@ -27,6 +27,7 @@ class form extends formBase 'data?: array|object', // 表单项值默认数据。 'labelData?: array|object', // 表单项标签默认数据。 'loadUrl?: string', // 动态更新 URL。 + 'autoLoad?: array', // 自动更新策略。 'actionsClass?: string="form-group no-label"' // 操作按钮栏的 CSS 类。 ); @@ -221,6 +222,23 @@ class form extends formBase if($this->hasProp('formID')) $props[] = setID($this->prop('formID')); if($this->hasProp('loadUrl')) $props[] = setData('load-url', $this->prop('loadUrl')); + $autoLoad = $this->prop('autoLoad'); + if(is_array($autoLoad) || is_object($autoLoad)) + { + $props[] = bind::change(implode('', array + ( + 'const autoLoad = ' . json_encode($autoLoad) . ';', + 'const $ele = $(event.target);', + 'Object.keys(autoLoad).forEach(selector => ', + '{', + 'if(!".[#".includes(selector[0])) selector = `[name="${selector}"]`;', + 'if(!$ele.closest(selector).length) return;', + 'const setting = autoLoad[selector];', + 'loadForm($.extend({target: $ele}, typeof setting === "string" ? {items: setting} : setting));', + '});' + ))); + } + return $props; } diff --git a/lib/zin/wg/formpanel/v1.php b/lib/zin/wg/formpanel/v1.php index 4f2b8a0f5e..3b474b3a07 100644 --- a/lib/zin/wg/formpanel/v1.php +++ b/lib/zin/wg/formpanel/v1.php @@ -54,6 +54,7 @@ class formPanel extends panel 'data?: array|object', // 表单项值默认数据。 'labelData?: array|object', // 表单项标签默认数据。 'loadUrl?: string', // 动态更新 URL。 + 'autoLoad?: array', // 动态更新策略。 'defaultMode?: string="lite"', // 默认表单模式(lite: 简洁版,full: 完整版)。 'foldableItems?: array|string', // 可折叠的表单项。 'pinnedItems?: array|string', // 固定显示的表单项。