From 7a907ad3143c50bd8d60f9a4b9d2f1458b8560b1 Mon Sep 17 00:00:00 2001 From: zhang zhuo Date: Fri, 12 Dec 2025 15:38:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/view/templates/formDesktop.vue.twig | 182 ++++++++++++++++++--- 1 file changed, 156 insertions(+), 26 deletions(-) diff --git a/static/view/templates/formDesktop.vue.twig b/static/view/templates/formDesktop.vue.twig index 1a72a44..94651bf 100644 --- a/static/view/templates/formDesktop.vue.twig +++ b/static/view/templates/formDesktop.vue.twig @@ -1,24 +1,162 @@ +{% macro renderProps(props) %} +{% autoescape false %} +{% for key, val in props %} +{% if val is same as(true) %} +{{- ' ' ~ key -}} +{% elseif val is same as(false) or val is null %} +{% elseif val is iterable %} +{% elseif (val ~ '') matches '/^-?\\d+(\\.\\d+)?$/' %} +{{- ' :' ~ key ~ '="' ~ val ~ '"' -}} +{% elseif val is not null and val != "" %} +{{- ' ' ~ key ~ '="' ~ val ~ '"' -}} +{% endif %} +{% endfor %} +{% endautoescape %} +{% endmacro %} +{% macro renderField(field, config, _self) %} +{% if field.name == 'layout' %} + +{% for child in field.children %} + +{{ _self.renderField(child, config, _self) -}} + +{% endfor %} + +{% else %} + +{% if field.name in ['text', 'textarea', 'password'] %} + +{% elseif field.name == 'number' %} + +{% elseif field.name == 'select' %} + +{% for item in field.options %} + +{% endfor %} + +{% elseif field.name == 'cascader' %} + +{% elseif field.name == 'radio' %} + +{% for item in field.options %} +{% if field.style == 'button' %} + +{% else %} + +{% endif %} +{% endfor %} + +{% elseif field.name == 'checkbox' %} + +{% for item in field.options %} +{% if field.style == 'button' %} + +{% else %} + +{% endif %} +{% endfor %} + +{% elseif field.name == 'switch' %} + +{% elseif field.name == 'slider' %} + +{% elseif field.name == 'time' %} + +{% elseif field.name == 'timerange' %} + +{% elseif field.name == 'date' %} + +{% elseif field.name == 'daterange' %} + +{% elseif field.name == 'rate' %} + +{% elseif field.name == 'color' %} + +{% elseif field.name == 'upload' %} + +{% if field.props.listType == 'text' or field.props.listType == 'picture' %} + +{% else %} + +{% endif %} +{% if field.tip %} + +{% endif %} + +{% elseif field.name == 'button' %} + +{% if field.btnText %} + +{% endif %} + +{% endif %} + +{% endif %} +{% endmacro %} +{% macro renderFormDefaults(fields) %} +{% for field in fields %} +{# 如果是容器,递归 children #} +{% if field.children is defined and field.children is iterable %} +{{ _self.renderFormDefaults(field.children) }} +{% elseif field.field_name is defined %} +{% set val = field.value is defined ? field.value : null %} +{{ field.field_name }}: {{ val is null ? 'null' : val }}, +{% endif %} +{% endfor %} +{% endmacro %} +{% macro js_object(rule) %} +{ {% for k, v in rule %} +{{ k }}: '{{ v }}' +{%- if not loop.last %}, {% endif %} +{% endfor %} } +{% endmacro %} +{% macro renderRules(fields) %} +{% for field in fields %} +{% if field.children is defined and field.children is iterable %} +{{- _self.renderRules(field.children) -}} +{% elseif field.field_name is defined %} +{% if (field.rules is defined and field.rules|length > 0) or field.required|default(false) == true %} +{{ field.field_name }}: [ +{# 输出规则数组 #} +{% if field.required|default(false) == true %} +{ required: true, message: '该项必填', trigger: 'blur' }, +{% endif %} +{% if field.rules is defined and field.rules|length > 0 %} +{% for rule in field.rules %} +{{ _self.js_object(rule) }} +{% endfor %} +{% endif %}], +{% endif %} +{% endif %} +{% endfor %} +{% endmacro %}