{% 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 %}