From 1d8720168055225fafd81274fcd32d421470bc89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=98=8A=E5=A4=A9?= <442384644@qq.com> Date: Mon, 26 Oct 2026 18:26:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BC=98=E6=83=A0=E5=88=B8=E9=80=89?= =?UTF-8?q?=E6=8B=A9):=20=E5=A5=91=E7=BA=A6=E7=BB=84=E4=BB=B6=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20receiveType=20=E7=AD=9B=E9=80=89=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E4=BA=BA=E7=A4=BC=E4=BB=85=E5=8F=AF=E9=80=89=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E8=B5=A0=E9=80=81=E5=88=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 嵌入选择页按内容高度自适应,表格列宽收紧便于弹窗展示。 Co-authored-by: Cursor --- backend/crmeb/utils/FormBuilder.php | 14 +- .../SchemaPage/components/SchemaCoupon.vue | 94 +++++++++++-- .../src/components/couponSelect/index.vue | 125 ++++++++++++++---- 3 files changed, 194 insertions(+), 39 deletions(-) diff --git a/backend/crmeb/utils/FormBuilder.php b/backend/crmeb/utils/FormBuilder.php index a6e46723e..5dd10048a 100644 --- a/backend/crmeb/utils/FormBuilder.php +++ b/backend/crmeb/utils/FormBuilder.php @@ -95,26 +95,34 @@ class FormBuilder extends Form } /** - * 优惠券标签选择器(form-create 自定义组件) + * 优惠券标签选择器(form-create 自定义组件 · 契约组件) * * 前端 SchemaForm 已注册 type=SchemaCoupon 的自定义组件: * el-tag 标签展示已选优惠券(可删除),弹窗打开系统选择优惠券页回填 * (/admin/marketing.Coupon/list.html,弹窗页脚确定/取消触发回填)。 * 值为对象数组 [{id, title, coupon_price, use_min_price}], * 发券消费端(userFirstSubGiveCoupon)已兼容该格式。 + * ⚠️ 契约组件:改前端只能向后兼容扩展(新增可选 props、默认行为不变)。 + * 已支持 props: + * - receiveType:筛选发送方式(1 用户领取 / 3 系统赠送),默认 '' 不限; + * 新人礼等系统赠送场景应显式传 3。 * * @param string $field 字段名 * @param string $title 字段标题 * @param array $value 已选优惠券对象数组 + * @param array $props 组件 props 覆盖:receiveType 等 * @return \FormBuilder\Driver\CustomComponent */ - public static function couponSelect($field, $title, $value = []) + public static function couponSelect($field, $title, $value = [], array $props = []) { return self::createComponent('SchemaCoupon') ->field($field) ->title($title) ->value((array)$value) - ->props(['field' => $field]); + ->props(array_merge([ + 'field' => $field, + 'receiveType' => '', + ], $props)); } /** diff --git a/frontend/admin/src/components/SchemaPage/components/SchemaCoupon.vue b/frontend/admin/src/components/SchemaPage/components/SchemaCoupon.vue index 847d181ca..cd028a662 100644 --- a/frontend/admin/src/components/SchemaPage/components/SchemaCoupon.vue +++ b/frontend/admin/src/components/SchemaPage/components/SchemaCoupon.vue @@ -8,13 +8,23 @@ 选择优惠券 - +