vr-shopxo-source/app/module/view/form_input/base.html

1256 lines
143 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<div class="forminput-data-content"
data-config="{{:urlencode(base64_encode(json_encode($module_data.form_input_data.config.overall_config)))}}"
data-list="{{:urlencode(base64_encode(json_encode($module_data.form_input_data.config.diy_data)))}}"
data-address-url="{{:MyUrl('index/region/index')}}"
data-address-code-url="{{:MyUrl('index/region/codedata')}}"
data-id="{{$module_data.form_input_data.id}}"
data-item-event="{{if empty($module_data.form_input_item_event)}}FormInputItemEvent{{else /}}{{$module_data.form_input_item_event}}{{/if}}"
data-data-event="{{if empty($module_data.form_input_data_event)}}FormInputDataEvent{{else /}}{{$module_data.form_input_data_event}}{{/if}}"
data-not-fill-in-error="{{:MyLang('not_fill_in_error')}}"
data-not-choice-error="{{:MyLang('not_choice_error')}}"
data-please-select-tips="{{:MyLang('please_select_tips')}}"
>
{{php}}
// pc全局配置
$form_input_style_settings_computer = $module_data['form_input_data']['config']['overall_config']['style_settings']['computer'];
// 输入框标题字体大小的控制类型
$form_input_style_filed_title_size_type = $form_input_style_settings_computer['filed_title_size_type'];
// 输入框字体大小
$form_input_item_size = (isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'big') ? 'item-big-size' : ((isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'middle') ? 'item-size' : '');
// 输入框的高度和不可输入区域的字体大小
$form_input_item_content_class = (isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'big') ? 'item-content-big' : ((isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'middle') ? 'item-content' : 'item-content-small');
// 下拉框和复选单选框的样式
$form_input_item_multicolour_class = (isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'big') ? 'item-multicolour-big' : ((isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'middle') ? 'item-multicolour' : 'item-multicolour-small');
// 下拉框和复选单选框的样式
$form_input_item_radio_or_checkbox_height_class = (isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'big') ? 'radio_or_checkbox_big_height' : ((isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'middle') ? 'radio_or_checkbox_height' : '');
// 输入框的最大宽度
$form_input_item_content_style = $form_input_style_settings_computer['input_width_type'] == 'default' ? 'max-width:'.$form_input_style_settings_computer['input_width'].'px;' : 'max-width:100%;';
// 输入框的不参与样式的key
$form_input_array = ["multi-text", 'checkbox', 'radio-btns'];
// 单行文本框的几个组件
$form_input_radio_array = ['single-text', 'select', 'radio-btns'];
// 下拉复选框的几个组件
$form_input_checkbox_array = ['checkbox', 'select-multi'];
// 模式
$form_input_mode_type_value = $module_data['form_input_data']['config']['overall_config']['type_value'];
// 左右还是上下的样式
$form_input_style_flex_direction = $form_input_style_settings_computer['flex_direction'];
// 不需要全局隐藏的组件
$form_input_data_array = ['single-text', 'select', 'radio-btns', 'checkbox', 'select-multi'];
$form_input_type_array = ['select', 'select-multi'];
// 不同大小需要改变的高度
$form_input_size_height = (isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'big') ? 45 : ((isset($form_input_style_filed_title_size_type) && $form_input_style_filed_title_size_type == 'middle') ? 36 : 29);
// 不限制宽度的组件
$form_input_no_width_array = ['attachments', 'rich-text', 'subform'];
// 不需要标题的组件
$form_input_no_free_title_array = ['auxiliary-line', 'rect', 'round', 'video', 'img'];
// 带其他的组件
$form_input_other_array = ['select', 'radio-btns'];
{{/php}}
<input type="hidden" name="forminput_id" value="{{$module_data.form_input_data.id}}">
<input type="hidden" name="id" value="{{if !empty($module_data['form_input_data']['forminput_data_id'])}}{{$module_data.form_input_data.forminput_data_id}}{{/if}}">
{{foreach :array_values($module_data.form_input_data.config.diy_data) as $k=>$v}}
{{if $v.is_enable eq '1'}}
<div class="forminput-hidden forminput-data-item {{if $form_input_mode_type_value neq 'free'}}forminput-data-item-padding {{/if}} {{if $form_input_style_flex_direction == 'row' and $v.key neq 'subform'}}am-flex-row {{else/}}am-flex-col {{/if}}{{if $form_input_style_flex_direction == 'row' and !in_array($v.key, $form_input_array)}}am-flex-items-center{{/if}}" style="{{if $v.key neq 'subform'}}flex-direction: {{$form_input_style_flex_direction}}{{/if}};{{if $form_input_style_flex_direction eq 'column'}}justify-items:flex-start;{{else/}}align-items: {{if in_array($v.key, ['rich-text', 'img', 'video', 'multi-text', 'subform'])}}flex-start{{elseif in_array($v.key, ['address', 'phone', 'upload-img', 'upload-attachments', 'upload-video'])}}baseline{{else/}}center{{/if}};{{/if}}{{if $form_input_mode_type_value eq 'free'}}position:absolute;{{if !(in_array($v.key, $form_input_data_array) and (isset($v.com_data.type) and in_array($v.com_data.type, $form_input_type_array))) and $v.key neq 'address'}}overflow: hidden;z-index: {{if !empty($v.is_enable) and $v.is_enable eq '1' }}{{:count($module_data.form_input_data.config.diy_data) - ($k + 1)}};{{else/}}-999;{{/if}}{{/if}}{{if !empty($v.location.x) }}left:{{$v.location.x}}px;{{/if}};{{if !empty($v.location.y) }}top:{{$v.location.y}}px;{{/if}};{{if !empty($v.com_data.com_width) }}width:{{$v.com_data.com_width}}px;{{/if}}{{if !empty($v.com_data.com_height) }}height:{{$v.com_data.com_height}}px;{{/if}}{{elseif $v.key eq 'subform'}}position:relative;z-index:1;{{/if}}">
{{if ($v.key neq 'auxiliary-line' and $form_input_mode_type_value neq 'free') or (!in_array($v.key, $form_input_no_free_title_array) and $form_input_mode_type_value eq 'free') }}
<div class="am-flex-row am-gap-1" style="{{if $form_input_style_flex_direction eq 'column'}}justify-content:flex-start;{{else/}}width:{{$form_input_style_settings_computer['filed_title_width']}}px;{{if $v.key neq 'subform'}}justify-content:{{$form_input_style_settings_computer['filed_title_justification'] }};{{/if}}{{/if}}{{if $form_input_mode_type_value eq 'free' and $form_input_style_flex_direction eq 'row'}}overflow:hidden;height:{{$v.com_data.com_height}}px;{{/if}}{{if $form_input_mode_type_value eq 'free'}}z-index: {{if !empty($v.is_enable) and $v.is_enable eq '1' }}{{:count($module_data.form_input_data.config.diy_data) - ($k + 1)}}{{else/}}-999;{{/if}}{{/if}}">
<!-- 标题 -->
<div class="item-name {{if isset($form_input_style_filed_title_size_type) and $form_input_style_filed_title_size_type eq 'big'}}big-title{{elseif isset($form_input_style_filed_title_size_type) and $form_input_style_filed_title_size_type eq 'middle'}}title{{else/}}small-title{{/if}}">
{{$v.com_data.title}}
<span class="am-text-danger">{{if isset($v.com_data.is_required) and $v.com_data.is_required == '1'}}*{{/if}}</span>
</div>
<!-- 帮助说明 -->
{{if $v.com_data.common_config.help_is_show == '1' and !empty($v.com_data.common_config.help_explain)}}
<div class="tooltip">
<span class="tooltip-text">{{$v.com_data.common_config.help_explain}}</span>
<div class="iconfont icon-help {{if isset($form_input_style_filed_title_size_type) and $form_input_style_filed_title_size_type eq 'big'}}item-name-big-icon{{elseif isset($form_input_style_filed_title_size_type) and $form_input_style_filed_title_size_type eq 'middle'}}item-name-icon{{else/}}item-name-small-icon{{/if}}"></div>
</div>
{{/if}}
</div>
{{/if}}
<div id="{{$v.id}}" {{if in_array($v.key, $form_input_radio_array) and in_array($v.com_data.type, $form_input_other_array)}}class="am-flex-col forminput-gap-10"{{/if}} style="flex:1;width:100%;{{if !in_array($v.key, $form_input_no_width_array) and (!(in_array($v.key, $form_input_radio_array) and $v.com_data.type eq 'radio-btns') and !(in_array($v.key, $form_input_checkbox_array) and $v.com_data.type eq 'checkbox'))}}{{$form_input_item_content_style}}{{/if}}">
{{if in_array($v.key, $form_input_radio_array) and $v.com_data.type eq 'single-text'}}
<!-- 单行文本 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<input
type="text"
name="{{$v.form_name}}"
value="{{$v.com_data.form_value}}"
{{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}})"{{/if}}
placeholder="{{$v.com_data.placeholder}}"
{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.min_num)}}minlength="{{$v.com_data.min_num}}"{{/if}}
{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.max_num)}}maxlength="{{$v.com_data.max_num}}"{{/if}}
class="forminput-input forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.max_num)}}
<div class="forminput-cr-gray"><span class="limit-num">{{:strlen($v.com_data.form_value) }}</span>/{{$v.com_data.max_num }}</div>
{{/if}}
</div>
{{elseif $v.key eq 'number'}}
<!-- 数字 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v.common_style}}">
{{if $v.com_data.is_display_money == '1' }}
<div class="forminput-cr-gray">{{$v.com_data.money_sign }}</div>
{{/if}}
<input type="text"
name="{{$v.form_name}}"
value="{{$v.com_data.form_value}}"
{{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}})"{{/if}}
placeholder="{{$v.com_data.placeholder}}"
class="forminput-input forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
{{if $v.com_data.format == 'percentage'}}
<div class="forminput-cr-gray">%</div>
{{/if}}
</div>
{{elseif $v.key eq 'multi-text'}}
<!-- 多行文本 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}} forminput-re" style="{{$v.common_style}}height:auto;">
<textarea
rows="6"
name="{{$v.form_name}}"
{{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}})"{{/if}}
placeholder="{{$v.com_data.placeholder}}"
{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.min_num)}}minlength="{{$v.com_data.min_num}}"{{/if}}
{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.max_num)}}maxlength="{{$v.com_data.max_num}}"{{/if}}
class="forminput-input forminput-no-border forminput-w {{$form_input_item_size}}"
>{{if !empty($v.com_data.form_value)}}{{$v.com_data.form_value}}{{/if}}</textarea>
{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.max_num)}}
<div class="forminput-cr-gray forminput-textarea"><span class="limit-num">{{:strlen($v.com_data.form_value) }}</span>/{{$v.com_data.max_num }}</div>
{{/if}}
</div>
{{elseif $v.key eq 'pwd'}}
<!-- 密码 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v.common_style}}">
{{if !empty($v.com_data.icon_name)}}
<div class="iconfont icon-{{$v.com_data.icon_name}} forminput-cr-gray"></div>
{{/if}}
<input type="password" autocomplete="off"
name="{{$v.form_name}}"
value="{{$v.com_data.form_value}}"
{{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}})"{{/if}}
placeholder="{{$v.com_data.placeholder}}"
class="forminput-input forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
<div class="iconfont icon-eye forminput-cr-gray forminput-password"></div>
</div>
{{elseif $v.key eq 'date-group'}}
<!-- 日期时间组 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v.common_style}}">
{{if !in_array($v.com_data.date_type, ['option1', 'option2'])}}
<div class="form-table-search-section form-table-search-time am-flex-row forminput-w forminput-h align-items-center">
<input type="text" {{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}})"{{/if}} autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h forminput-input-text-center forminput-input-date-group-start {{$form_input_item_size}}" id="form-table-search-time-start-{{$v.id}}" name="{{$v.form_name}}_start" value="{{if !empty($v.com_data.form_value) and isset($v.com_data.form_value[0])}}{{$v.com_data.form_value[0]}}{{/if}}" placeholder="{{if isset($v['com_data']['start_placeholder'])}}{{$v.com_data.start_placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v.com_data.format}}',maxDate:'#F{$dp.$D(\'form-table-search-time-end-{{$v.id}}\',{d:-1});}'})" autocomplete="off" />
<span class="am-flex-row align-items-center forminput-divider">-</span>
<input type="text" {{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}})"{{/if}} autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h forminput-input-text-center forminput-input-date-group-end {{$form_input_item_size}}" id="form-table-search-time-end-{{$v.id}}" name="{{$v.form_name}}_end" value="{{if !empty($v.com_data.form_value) and isset($v.com_data.form_value[1])}}{{$v.com_data.form_value[1]}}{{/if}}" placeholder="{{if isset($v['com_data']['end_placeholder'])}}{{$v.com_data.end_placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v.com_data.format}}',minDate:'#F{$dp.$D(\'form-table-search-time-start-{{$v.id}}\',{d:+1});}'})" autocomplete="off" />
</div>
{{else/}}
<div class="form-table-search-section form-table-search-time am-flex-row forminput-w forminput-h align-items-center">
<input type="text" {{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}})"{{/if}} autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h forminput-input-text-center forminput-input-date-group-start {{$form_input_item_size}}" id="form-table-search-time-start-{{$v.id}}" name="{{$v.form_name}}_start" value="{{if !empty($v.com_data.form_value) and isset($v.com_data.form_value[0])}}{{$v.com_data.form_value[0]}}{{/if}}" placeholder="{{if isset($v['com_data']['start_placeholder'])}}{{$v.com_data.start_placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v.com_data.format}}',maxDate:'#F{$dp.$D(\'form-table-search-time-end-{{$v.id}}\');}'})" autocomplete="off" />
<span class="am-flex-row align-items-center forminput-divider">-</span>
<input type="text" {{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}})"{{/if}} autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h forminput-input-text-center forminput-input-date-group-end {{$form_input_item_size}}" id="form-table-search-time-end-{{$v.id}}" name="{{$v.form_name}}_end" value="{{if !empty($v.com_data.form_value) and isset($v.com_data.form_value[1])}}{{$v.com_data.form_value[1]}}{{/if}}" placeholder="{{if isset($v['com_data']['end_placeholder'])}}{{$v.com_data.end_placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v.com_data.format}}',minDate:'#F{$dp.$D(\'form-table-search-time-start-{{$v.id}}\');}'})" autocomplete="off" />
</div>
{{/if}}
<i class="iconfont icon-{{$v.com_data.icon_name}}" style="color: 333;"></i>
</div>
{{elseif $v.key eq 'date'}}
<!-- 日期时间 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<input type="text" autocomplete="off" class="forminput-input-date am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h {{$form_input_item_size}}" {{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}})"{{/if}} id="form-table-search-time-{{$v.id}}" name="{{$v.form_name}}" value="{{if !empty($v.com_data.form_value) and isset($v.com_data.form_value)}}{{$v.com_data.form_value}}{{/if}}" placeholder="{{if isset($v['com_data']['placeholder'])}}{{$v.com_data.placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v.com_data.format}}'})" autocomplete="off" />
<i class="iconfont icon-{{$v.com_data.icon_name}}" style="color: 333;"></i>
</div>
{{elseif $v.key eq 'position'}}
<!-- 定位 -->
<div class="forminput-data-item-disabled {{$form_input_item_content_class}} justify-content-center forminput-cr-gray" style="{{$v.common_style}}">
<div class="iconfont icon-address"></div>请在移动端打开表单进行定位
</div>
{{elseif in_array($v.key, $form_input_checkbox_array) and $v.com_data.type eq 'checkbox'}}
<!-- 复选按钮组 -->
<div class="am-flex-col forminput-gap-10">
<div class="option-add {{if $v.com_data.arrangement == 'horizontal'}}am-flex-row align-items-center am-flex-warp{{else/}}am-flex-col{{/if}} forminput-gap-10">
{{foreach :array_values(array_merge($v.com_data.option_list, empty($v['com_data']['custom_option_list']) ? [] : $v.com_data.custom_option_list)) as $k=>$d}}
<label class="am-checkbox-click {{if $v.com_data.arrangement == 'horizontal'}}am-checkbox-inline {{else/}}am-checkbox {{/if}} {{if $v.com_data.is_multicolour == '1'}}{{$form_input_item_radio_or_checkbox_height_class}}{{/if}}">
<input type="checkbox" name="{{$v.form_name}}" value="{{$d.value}}" {{if in_array($d.value, $v.com_data.form_value)}}checked="checked"{{/if}} data-am-ucheck {{if $k == 0 and $v.com_data.is_required == '1'}}required {{/if}} data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}})" {{if $k == 0 and $v.com_data.is_limit_num == '1' and !empty($v.com_data.min_num)}}minchecked="{{$v.com_data.min_num}}"{{/if}} {{if $k == 0 and $v.com_data.is_limit_num == '1' and !empty($v.com_data.max_num)}}maxchecked="{{$v.com_data.max_num}}"{{/if}}>
<div class="{{$form_input_item_multicolour_class}} am-flex-row align-items-center forminput-gap-5" style="{{if $v.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{$d.name}}{{if isset($d.type) and $d.type eq 'add'}}<i data-value="{{$d.value}}" data-id="{{$v.id}}" data-subform-option-id="" data-subform-option-index="" class="add-option-icon iconfont icon-close {{if $v.com_data.is_multicolour neq '1'}}forminput-cr-gray{{/if}}"></i>{{/if}}</div>
</label>
{{/foreach}}
</div>
{{if $v.com_data.is_add_option == '1'}}
<div class="add-option am-flex-row align-items-center forminput-gap-10 forminput-cursor-p add-option-max-width">
<i class="iconfont icon-add forminput-cr-blue"></i>
<span class="size-14 forminput-cr-blue">添加选项</span>
</div>
<input type="hidden" name="{{$v.form_name}}_custom_option_list" value="{{:urlencode(base64_encode(json_encode($v.com_data.custom_option_list)))}}" class="forminput-custom-option-list" placeholder="请输入选项名称">
{{/if}}
</div>
{{elseif in_array($v.key, $form_input_radio_array) and $v.com_data.type eq 'radio-btns'}}
<!-- 单选按钮组 -->
<div class="am-flex-col forminput-gap-10">
<div class="{{if $v.com_data.arrangement == 'horizontal'}}am-flex-row align-items-center am-flex-warp{{else/}}am-flex-col{{/if}} forminput-gap-10">
{{foreach :array_values($v.com_data.option_list) as $k=>$d}}
<label class="am-radio-click {{if $v.com_data.arrangement == 'horizontal'}}am-radio-inline {{else/}}am-radio {{/if}} {{if $v.com_data.is_multicolour == '1'}}{{$form_input_item_radio_or_checkbox_height_class}}{{/if}}">
<input type="radio" name="{{$v.form_name}}" value="{{$d.value}}" {{if $v.com_data.form_value eq $d.value }}checked="checked"{{/if}} data-am-ucheck {{if $k == 0 and $v.com_data.is_required == '1'}}required data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}})"{{/if}} {{if $k == 0 and $v.com_data.is_limit_num == '1' and !empty($v.com_data.min_num)}}minchecked="{{$v.com_data.min_num}}"{{/if}} {{if $k == 0 and $v.com_data.is_limit_num == '1' and !empty($v.com_data.max_num)}}maxchecked="{{$v.com_data.max_num}}"{{/if}}>
<span class="{{$form_input_item_multicolour_class}}" style="{{if $v.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{$d.name}}</span>
</label>
{{/foreach}}
</div>
{{if is_array($v.com_data.option_list)}}
{{foreach :array_values($v.com_data.option_list) as $vol}}
{{if isset($vol.is_other) and $vol.is_other eq '1' and $vol.value eq $v.com_data.form_value }}
<div class="forminput-data-item-content {{$v.id}}-other {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<input
type="text"
name="{{$v.form_name}}_other_value"
value="{{$v.com_data.other_value}}"
placeholder="请输入其他内容"
class="forminput-input-other forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
</div>
{{/if}}
{{/foreach}}
{{/if}}
</div>
{{elseif in_array($v.key, $form_input_radio_array) and $v.com_data.type eq 'select'}}
<!-- 下拉框 -->
<div class="am-selected am-dropdown forminput-w am-flex-row {{$v.id}}-dropdown" data-am-dropdown>
<select name="{{$v.form_name}}" autocomplete="off" class="forminput-visiable-hidden">
<option value="">请选择</option>
{{foreach :array_values($v.com_data.option_list) as $k=>$d}}
<option value="{{$d.value}}" {{if isset($v.com_data.form_value) and $v.com_data.form_value eq $d.value}}selected="selected"{{/if}}>{{$d.name}}</option>
{{/foreach}}
</select>
<div class="{{if $form_input_mode_type_value eq 'free'}}forminput-free-column{{/if}} am-flex-row" style="width: 100%;height:100%;{{if $form_input_mode_type_value eq 'free' and $form_input_style_flex_direction eq 'column'}}overflow:hidden;width: {{$v.com_data.com_width}}px;height:{{$v.com_data.com_height - $form_input_size_height}}px;{{elseif $form_input_mode_type_value eq 'free' and $form_input_style_flex_direction eq 'row' }}overflow:hidden;width:{{$v.com_data.com_width - $form_input_style_settings_computer['filed_title_width']}}px;height:{{$v.com_data.com_height}}px;{{/if}}{{if $form_input_mode_type_value eq 'free'}}z-index: {{if !empty($v.is_enable) and $v.is_enable eq '1' }}{{:count($module_data.form_input_data.config.diy_data) - ($k + 1)}}{{else/}}-999;{{/if}}{{/if}}">
<button type="button" class="am-selected-btn am-btn am-dropdown-toggle am-flex-row align-items-center forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<div class="am-selected-status am-fl am-flex-row align-items-center forminput-gap-10">
{{if empty($v.com_data.form_value) }}
<span class="forminput-cr-gray">{{$v.com_data.placeholder}}</span>
{{else/}}
{{foreach :array_values($v.com_data.option_list) as $k=>$d}}
{{if $d.value == $v.com_data.form_value}}
<span class="{{$form_input_item_multicolour_class}}" style="{{if $v.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{$d.name}}</span>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<i class="am-selected-icon am-icon-caret-down"></i>
</button>
</div>
<div id="dropdown-{{$v.id}}" class="am-selected-content am-dropdown-content am-radius" style="min-width: 354px;">
<ul class="am-selected-list">
<li class="forminput-show-hidden-click am-selected-item am-flex-row align-items-center {{if empty($v.com_data.form_value)}}am-checked{{/if}}" data-index="0" data-group="0" data-value="">
<span class="{{$form_input_item_multicolour_class}} am-selected-text am-color-grey am-padding-0">{{:MyLang('please_select_tips')}}</span>
</li>
{{foreach :array_values($v.com_data.option_list) as $k=>$d}}
<li value="{{$d.value}}" class="forminput-show-hidden-click am-selected-item am-flex-row align-items-center {{if $d.value == $v.com_data.form_value}}am-checked{{/if}}" data-index="{{$k}}" data-group="0" data-value="{{$d.value}}">
<span class="{{$form_input_item_multicolour_class}} am-selected-text" style="{{if $v.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{$d.name}}</span>
<i class="am-icon-check"></i></li>
{{/foreach}}
</ul>
</div>
</div>
{{if is_array($v.com_data.option_list)}}
{{foreach :array_values($v.com_data.option_list) as $vol}}
{{if isset($vol.is_other) and $vol.is_other eq '1' and $vol.value eq $v.com_data.form_value }}
<div class="forminput-data-item-content {{$v.id}}-other {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<input
type="text"
name="{{$v.form_name}}_other_value"
value="{{$v.com_data.other_value}}"
placeholder="请输入其他内容"
class="forminput-input-other forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
</div>
{{/if}}
{{/foreach}}
{{/if}}
{{elseif in_array($v.key, $form_input_checkbox_array) and $v.com_data.type eq 'select-multi'}}
<!-- 下拉框复选框 -->
<div class="am-selected am-dropdown forminput-w am-flex-row" data-am-dropdown>
<select name="{{$v.form_name}}" multiple class="forminput-visiable-hidden forminput-select-multi">
{{foreach :array_values(array_merge($v.com_data.option_list, empty($v['com_data']['custom_option_list']) ? [] : $v.com_data.custom_option_list)) as $k=>$d}}
<option value="{{$d.value}}" {{if !empty($v.com_data.form_value) and is_array($v.com_data.form_value) and in_array($d.value, $v.com_data.form_value)}}selected{{/if}}>{{$d.name}}</option>
{{/foreach}}
</select>
<div class="{{if $form_input_mode_type_value eq 'free'}}forminput-free-column{{/if}} am-flex-row" style="width: 100%;height:100%;{{if $form_input_mode_type_value eq 'free' and $form_input_style_flex_direction eq 'column' }}overflow:hidden;width: {{$v.com_data.com_width}}px;height:{{$v.com_data.com_height - $form_input_size_height}}px;{{elseif $form_input_mode_type_value eq 'free' and $form_input_style_flex_direction eq 'row'}}overflow:hidden;width:{{$v.com_data.com_width - $form_input_style_settings_computer['filed_title_width']}}px;height:{{$v.com_data.com_height}}px;{{/if}}{{if $form_input_mode_type_value eq 'free'}}z-index: {{if !empty($v.is_enable) and $v.is_enable eq '1' }}{{:count($module_data.form_input_data.config.diy_data) - ($k + 1)}}{{else/}}-999;{{/if}}{{/if}}">
<button type="button" class="am-selected-btn am-btn am-dropdown-toggle am-flex-row align-items-center forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<div class="am-selected-status am-fl am-flex-row align-items-center {{if $v.com_data.is_multicolour == '1'}}forminput-gap-10{{/if}}">
{{if empty($v.com_data.form_value) }}
<span class="forminput-cr-gray">{{$v.com_data.placeholder}}</span>
{{else/}}
{{php}}$selected_status=0;{{/php}}
{{foreach :array_values(array_merge($v.com_data.option_list, empty($v['com_data']['custom_option_list']) ? [] : $v.com_data.custom_option_list)) as $k=>$d}}
{{if in_array($d.value, $v.com_data.form_value)}}
<span class="{{$form_input_item_multicolour_class}}" style="{{if $v.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{if $v.com_data.is_multicolour neq 1 and $selected_status eq 1}},{{/if}}{{$d.name}}</span>
{{php}}$selected_status=1;{{/php}}
{{/if}}
{{/foreach}}
{{/if}}
</div>
<i class="am-selected-icon am-icon-caret-down"></i>
</button>
</div>
<div id="dropdown-{{$v.id}}" class="am-selected-content am-dropdown-content am-radius" style="min-width: 354px;">
<ul class="am-selected-list">
{{foreach :array_values(array_merge($v.com_data.option_list, empty($v['com_data']['custom_option_list']) ? [] : $v.com_data.custom_option_list)) as $k=>$d}}
<li value="{{$d.value}}" class="am-selected-item am-flex-row align-items-center {{if in_array($d.value, $v.com_data.form_value)}}am-checked{{/if}}" data-index="{{$k}}" data-group="0" data-value="{{$d.value}}">
<div class="{{$form_input_item_multicolour_class}} am-selected-text am-flex-row align-items-center forminput-gap-5" style="{{if $v.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{$d.name}}{{if isset($d.type) and $d.type eq 'add'}}<i data-value="{{$d.value}}" data-id="{{$v.id}}" data-subform-option-id="" data-subform-option-index="" class="add-option-icon iconfont icon-close {{if $v.com_data.is_multicolour neq '1'}}forminput-cr-gray{{/if}}"></i>{{/if}}</div>
<i class="am-icon-check"></i></li>
{{/foreach}}
</ul>
{{if $v.com_data.is_add_option == '1'}}
<div class="add-option am-flex-row align-items-center forminput-gap-10 forminput-cursor-p">
<i class="iconfont icon-add forminput-cr-blue"></i>
<span class="size-14 forminput-cr-blue">添加选项</span>
</div>
<input type="hidden" name="{{$v.form_name}}_custom_option_list" value="{{:urlencode(base64_encode(json_encode($v.com_data.custom_option_list)))}}" class="forminput-custom-option-list" placeholder="请输入选项名称">
{{/if}}
</div>
</div>
{{elseif $v.key eq 'score'}}
<!-- 评分 -->
<div class="am-flex-row align-items-center forminput-gap-10 forminput-score am-flex-wrap">
{{foreach :array_values(range(1, $v.com_data.total)) as $i => $d}}
{{if $v.com_data.score_type eq 0}}
<!-- 评分样式1 -->
<i data-index="{{$i}}" class="iconfont {{if $i < $v.com_data.form_value}}icon-pointed{{else/}}icon-pointed-o{{/if}} forminput-score-icon" style="color: {{if $i < $v.com_data.form_value}}{{$v.com_data.select_color}}{{else/}}#ccc{{/if}};"></i>
{{elseif $v.com_data.score_type eq 1}}
<!-- 评分样式2 -->
<i data-index="{{$i}}" class="iconfont {{if $i < $v.com_data.form_value}}icon-the-heart{{else/}}icon-the-heart-o{{/if}} forminput-score-icon" style="color: {{if $i < $v.com_data.form_value}}{{$v.com_data.select_color}}{{else/}}#ccc{{/if}};"></i>
{{elseif $v.com_data.score_type eq 2}}
<!-- 评分样式3 -->
<span data-index="{{$i}}" class="nowrap forminput-score-icon" style="color: {{if $i eq $v.com_data.form_value - 1}}{{$v.com_data.select_color}}{{else/}}#666{{/if}};">{{$i + 1 }}分</span>
{{/if}}
{{/foreach}}
<input type="text" name="{{$v.form_name}}" class="am-input am-input-sm forminput-visiable-hidden" value="{{$v.com_data.form_value}}">
</div>
{{elseif $v.key eq 'text'}}
<!-- 文本 -->
<div class="forminput-wrap item-small-size {{$form_input_item_size}}" style="{{$form_input_item_content_style}}color:{{$v.com_data.text_color}};">{{$v.com_data.form_value}}</div>
{{elseif $v.key eq 'img'}}
<!-- 图片 -->
<div style="{{if $form_input_mode_type_value neq 'free'}}width: {{$v.com_data.img_width}}px;height: {{if $v.com_data.img_scale_type == '1'}}{{$v.com_data.img_width}}{{elseif $v.com_data.img_scale_type == '0'}}{{$v.com_data.img_width * 9 / 16}}{{else/}}{{$v.com_data.img_width * 3 / 4}}{{/if}}px;{{/if}}">
{{if empty($v.com_data.img_src)}}
<div class="item-img-empty forminput-w forminput-h">
<img src="{{$attachment_host}}/static/form_input/images/empty.png" style="width: 100%;height: 100%;object-fit: cover;"/>
</div>
{{else/}}
<img src="{{$v.com_data.img_src[0]['url']}}" data-rel="{{$v.com_data.img_src[0]['url']}}" class="common-annex-view-event" style="width: 100%;height: 100%;object-fit: cover;"/>
{{/if}}
</div>
{{elseif $v.key eq 'video'}}
<!-- 视频 -->
<div style="{{if $form_input_mode_type_value neq 'free'}}width: {{$v.com_data.video_width}}px;height: {{if $v.com_data.video_scale_type == '1'}}{{$v.com_data.video_width}}{{elseif $v.com_data.video_scale_type == '0'}}{{$v.com_data.video_width * 9 / 16}}{{else/}}{{$v.com_data.video_width * 3 / 4}}{{/if}}px;{{else/}}{{if !empty($v.com_data.com_width) }}width:{{$v.com_data.com_width}}px;{{/if}}{{if !empty($v.com_data.com_height) }}height:{{$v.com_data.com_height}}px;{{/if}}{{/if}}">
{{if isset($v.com_data.video) and !empty($v.com_data.video)}}
<video src="{{$v.com_data.video[0]['url']}}" {{if isset($v.com_data.video_img[0])}}poster="{{$v.com_data.video_img[0]['url']}}"{{/if}} controls="controls" style="width: 100%;height: 100%;object-fit: contain;"></video>
{{/if}}
</div>
{{elseif $v.key eq 'auxiliary-line'}}
<!-- 辅助线 -->
<div class="am-flex-row align-items-center" style="width: 100%;{{$form_input_item_content_style}}justify-content:{{$v.com_data.line_location}};">
<div style="width:{{$v.com_data.line_width}}%;border-bottom:{{$v.com_data.line_size}}px {{$v.com_data.line_style}} {{$v.com_data.line_color}}"></div>
</div>
{{elseif $v.key eq 'attachments'}}
<!-- 文件 -->
{{if !empty($v.com_data.file)}}
<div class="am-flex-row align-items-center forminput-gap-10">
<span class="file-title am-text-truncate" style="width: auto;{{$form_input_item_content_style}}">{{$v.com_data.file[0]['original']}}</span>
<div class="forminput-oprate">
<div class="icon attachments-click"><i class="iconfont icon-copy"></i></div>
<span class="divider"></span>
<div class="icon attachments-click"><i class="iconfont icon-download-b-line"></i></div>
</div>
</div>
{{else/}}
<span class="file-title" style="color:#606266;font-size:14px;width: auto;{{$form_input_item_content_style}}">暂无文件</span>
{{/if}}
{{elseif $v.key eq 'phone'}}
<!-- 手机 --->
<div class="am-flex-col forminput-gap-10">
<div class="forminput-data-item-content am-flex-row {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<i class="iconfont icon-{{$v.com_data.icon_name}}" style="color: 666;"></i>
<input type="text"
name="{{$v.form_name}}"
value="{{$v.com_data.form_value}}"
{{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}})"{{/if}}
{{if $v.com_data.is_telephone == '1'}}pattern="({{:MyConst('common_regex_mobile')}})|(^0\d{0,3}-?\d{7,8}$)"{{else /}}pattern="{{:MyConst('common_regex_mobile')}}"{{/if}}
placeholder="{{$v.com_data.placeholder}}"
class="forminput-input forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
</div>
{{if $v.com_data.is_sms_verification == '1'}}
<div class="am-flex-row forminput-gap-10">
<div class="forminput-data-item-content forminput-w {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<input type="text"
name="{{$v.form_name}}_verify"
value="{{$v.com_data.form_value_code}}"
{{if $v.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}}短信验证码)"{{/if}}
placeholder="请输入验证码"
class="forminput-input-verify forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
</div>
<button id="{{$v.id}}_verify" class="am-btn forminput-btn-disabled am-radius verify-submit" disabled type="button" data-am-loading="{spinner:'circle-o-notch', loadingText:'发送中...'}" data-url="{{:MyUrl('index/forminput/verifysend')}}" data-time="60" data-text="获取验证码" data-send-text="还有 {time} 秒">获取验证码</button>
</div>
{{/if}}
</div>
{{elseif $v.key eq 'address'}}
<!-- 地址 --->
<div class="am-flex-col forminput-gap-10">
<div class="region-linkage" data-url="{{:MyUrl('index/region/index')}}" data-code-url="{{:MyUrl('index/region/codedata')}}">
<div class="am-cascader">
<div class="am-cascader-suffix forminput-reactive {{if $form_input_mode_type_value eq 'free'}}forminput-free-column{{/if}}" style="width: 100%;height:100%;{{if $form_input_mode_type_value eq 'free' and $form_input_style_flex_direction eq 'column'}}overflow:hidden;width: {{$v.com_data.com_width}}px;height:{{$v.com_data.com_height - $form_input_size_height}}px;{{elseif $form_input_mode_type_value eq 'free' and $form_input_style_flex_direction eq 'row'}}overflow:hidden;width:{{$v.com_data.com_width - $form_input_style_settings_computer['filed_title_width']}}px;height:{{$v.com_data.com_height}}px;{{/if}}{{if $form_input_mode_type_value eq 'free'}}z-index: {{if !empty($v.is_enable) and $v.is_enable eq '1' }}{{:count($module_data.form_input_data.config.diy_data) - ($k + 1)}}{{else/}}-999;{{/if}}{{/if}}">
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v.common_style}}">
<input type="text" readonly="readonly" name="province_city_county" autocomplete="off" placeholder="{{$v.com_data.placeholder}}"
value="{{if !empty($v['com_data']['province_name'])}}{{$v.com_data.province_name}}{{/if}}{{if !empty($v['com_data']['city_name'])}}-{{$v.com_data.city_name}}{{/if}}{{if !empty($v['com_data']['county_name'])}}-{{$v.com_data.county_name}}{{/if}}"
class="am-input-inner forminput-no-border forminput-w forminput-h {{$form_input_item_size}}" {{if isset($v.com_data.required) and $v.com_data.required eq '1'}}required data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}})"{{/if}}>
<input type="hidden" name="{{$v.form_name}}_province" value="{{if isset($v['com_data']['form_value'][0])}}{{$v.com_data.form_value[0]}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}_city" value="{{if isset($v['com_data']['form_value'][1])}}{{$v.com_data.form_value[0]}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}_county" value="{{if isset($v['com_data']['form_value'][2])}}{{$v.com_data.form_value[0]}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}_province_name" value="{{if isset($v['com_data']['province_name'])}}{{$v.com_data.province_name}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}_city_name" value="{{if isset($v['com_data']['city_name'])}}{{$v.com_data.city_name}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}_county_name" value="{{if isset($v['com_data']['county_name'])}}{{$v.com_data.county_name}}{{/if}}">
<span class="am-input-suffix">
<i class="iconfont icon-angle-down"></i>
</span>
</div>
</div>
<div class="am-cascader-dropdown">
<div id="{{$v.id}}-cascader-panel" class="am-cascader-panel">
<div class="am-scrollbar province am-cascader-menu {{if isset($v['province'])}}am-active{{/if}}" data-key="province">
<div class="am-cascader-menu-wrap am-scrollbar-wrap am-scrollbar-wrap-hidden-default">
<ul class="am-scrollbar-view am-cascader-menu-list">
</ul>
</div>
</div>
<div class="am-scrollbar city am-cascader-menu {{if isset($v['city'])}}am-active{{/if}}" data-key="city">
<div class="am-cascader-menu-wrap am-scrollbar-wrap am-scrollbar-wrap-hidden-default">
<ul class="am-scrollbar-view am-cascader-menu-list">
</ul>
</div>
</div>
<div class="am-scrollbar county am-cascader-menu {{if isset($v['county'])}}am-active{{/if}}" data-key="county">
<div class="am-cascader-menu-wrap am-scrollbar-wrap am-scrollbar-wrap-hidden-default">
<ul class="am-scrollbar-view am-cascader-menu-list">
</ul>
</div>
</div>
</div>
<div class="am-popper-arrow"></div>
</div>
</div>
</div>
{{if $v.com_data.address_type eq 'detailed'}}
<div class="forminput-data-item-content" style="{{$v.common_style}}">
<textarea
rows="6"
name="{{$v.form_name}}_address"
placeholder="请输入详细地址"
class="forminput-input-address forminput-no-border forminput-w {{$form_input_item_size}}"
>{{if !empty(trim($v.com_data.address))}}{{$v.com_data.address}}{{/if}}</textarea>
</div>
{{/if}}
</div>
{{elseif $v.key eq 'upload-img'}}
<div class="am-flex-col forminput-gap-10">
<button class="plug-file-upload-submit am-flex-row align-items-center justify-content-center {{$form_input_item_content_class}}" style="{{$v.common_style}}" data-dialog-type="images" data-is-direct="1" data-back-fun="ForminputUploadEvent" data-back-mark="{{$v.id}}">
<div class="upload-text am-text-truncate"><span style="color: #2A94FF;">请选择</span>(点击选择图片,{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.limit) }}最多{{:$v.com_data.limit}}张{{/if}}{{if $v.com_data.is_limit_size == '1' and !empty($v.com_data.upload_size) }}、最多{{:$v.com_data.upload_size}}MB{{/if}} )</div>
</button>
<div class="file-upload-view-list am-flex-row am-flex-wrap forminput-gap-10 {{if empty($v.com_data.form_value)}}file-upload-hidden{{/if}}">
{{if is_array($v.com_data.form_value)}}
{{foreach $v.com_data.form_value as $key => $upload_data}}
{{if !empty($upload_data.url)}}
<div data-index="{{$key}}" data-id="{{$v.id}}" data-subform-index-id="{{$v.id}}" data-subform-index="" class="file-upload-view-item">
<div class="file-upload-view-close file-abs-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
<div class="am am-figure am-figure-default am-no-layout file-upload-view-item-img file-upload-view-item-preview">
<img src="{{$upload_data.url}}" data-rel="{{$upload_data.url}}" style="width: 100%;height: 100%;object-fit: contain;">
</div>
<div class="file-upload-view-item-info">
<div class="am-flex-row align-items-center upload-title">
{{if !empty($upload_data.name)}}
<span class="am-text-truncate">{{:pathinfo($upload_data.name, PATHINFO_FILENAME)}}</span>
{{if !empty($upload_data.ext)}}<span>{{$upload_data.ext}}</span>{{/if}}
{{/if}}
</div>
{{if !empty($upload_data.size)}}<div class="mb-2 upload-size">{{:AnnexSizeToUnit($upload_data.size)}}</div>{{/if}}
</div>
</div>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<input type="hidden" name="{{$v.form_name}}" value="{{:urlencode(base64_encode(json_encode($v.com_data.form_value)))}}" />
</div>
{{elseif $v.key eq 'upload-video'}}
<div class="am-flex-col forminput-gap-10">
<button class="plug-file-upload-submit am-flex-row align-items-center justify-content-center {{$form_input_item_content_class}}" style="{{$v.common_style}}" data-dialog-type="video" data-is-direct="1" data-back-fun="ForminputUploadEvent" data-back-mark="{{$v.id}}">
<div class="upload-text am-text-truncate"><span style="color: #2A94FF;">请选择</span>(点击选择视频,{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.limit) }}最多{{:$v.com_data.limit}}个{{/if}}{{if $v.com_data.is_limit_size == '1' and !empty($v.com_data.upload_size) }}、最多{{:$v.com_data.upload_size}}MB{{/if}} )</div>
</button>
<div class="file-upload-view-list am-flex-row am-flex-wrap forminput-gap-10 {{if empty($v.com_data.form_value)}}file-upload-hidden{{/if}}">
{{if is_array($v.com_data.form_value)}}
{{foreach $v.com_data.form_value as $key => $upload_data}}
{{if !empty($upload_data.url)}}
<div data-index="{{$key}}" data-id="{{$v.id}}" data-subform-index-id="{{$v.id}}" data-subform-index="" class="file-upload-view-item">
<div class="file-upload-view-close file-abs-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
<div class="file-upload-view-item-video file-upload-view-item-preview">
<i class="iconfont icon-finish_zb forminput-cursor-p file-upload-bofang"></i>
<video src="{{$upload_data.url}}" style="width: 100%;height: 100%;object-fit: contain;"></video>
</div>
<div class="file-upload-view-item-info">
<div class="am-flex-row align-items-center upload-title">
{{if !empty($upload_data.name)}}
<span class="am-text-truncate">{{:pathinfo($upload_data.name, PATHINFO_FILENAME)}}</span>
{{if !empty($upload_data.ext)}}<span>{{$upload_data.ext}}</span>{{/if}}
{{/if}}
</div>
{{if !empty($upload_data.size)}}<div class="mb-2 upload-size">{{:AnnexSizeToUnit($upload_data.size)}}</div>{{/if}}
</div>
</div>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<input type="hidden" name="{{$v.form_name}}" value="{{:urlencode(base64_encode(json_encode($v.com_data.form_value)))}}" />
</div>
{{elseif $v.key eq 'upload-attachments'}}
<div class="am-flex-col forminput-gap-10">
<button class="plug-file-upload-submit am-flex-row align-items-center justify-content-center {{$form_input_item_content_class}}" style="{{$v.common_style}}" data-dialog-type="file" data-is-direct="1" data-back-fun="ForminputUploadEvent" data-back-mark="{{$v.id}}">
<div class="upload-text am-text-truncate"><span style="color: #2A94FF;">请选择</span>(点击选择文件,{{if $v.com_data.is_limit_num == '1' and !empty($v.com_data.limit) }}最多{{:$v.com_data.limit}}个{{/if}}{{if $v.com_data.is_limit_size == '1' and !empty($v.com_data.upload_size) }}、最多{{:$v.com_data.upload_size}}MB{{/if}} )</div>
</button>
<div class="file-upload-view-list am-flex-row am-flex-wrap forminput-gap-10 {{if empty($v.com_data.form_value)}}file-upload-hidden{{/if}}">
{{if is_array($v.com_data.form_value)}}
{{foreach $v.com_data.form_value as $key => $upload_data}}
{{if !empty($upload_data.name)}}
<div data-index="{{$key}}" data-id="{{$v.id}}" data-subform-index-id="{{$v.id}}" data-subform-index="" class="file-upload-view-item file-upload-view-item-attachments-item">
<div class="am-flex-row align-items-center upload-title file-upload-view-item-preview" data-size="{{$upload_data.size}}">
<span class="am-text-truncate">{{:pathinfo($upload_data.name, PATHINFO_FILENAME)}}</span>
{{if !empty($upload_data.ext)}}<span>{{$upload_data.ext}}</span>{{/if}}
{{if !empty($upload_data.size)}}<span class="file-size">({{:AnnexSizeToUnit($upload_data.size)}})</span>{{/if}}
</div>
<div class="file-upload-view-close file-upload-view-attachments-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
</div>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<input type="hidden" name="{{$v.form_name}}" value="{{:urlencode(base64_encode(json_encode($v.com_data.form_value)))}}" />
</div>
{{elseif $v.key eq 'rich-text'}}
<div id="editor—wrapper-{{$v.id}}" class="{{$form_input_item_content_class}}" style="{{$v.common_style}}height: 350px;">
<div id="toolbar-container-{{$v.id}}"><!-- 工具栏 --></div>
<div id="editor-container-{{$v.id}}" style="height: 270px;"><!-- 编辑器 --></div>
<input type="hidden" id="{{$v.id}}-value" name="{{$v.form_name}}" value="{{$v.com_data.form_value}}" />
<input id="{{$v.id}}-rich-file-upload" class="rich-file-upload-input" data-url="{{:MyUrl('api/attachmentapi/upload')}}" type="file" name="{{$v.form_name}}" accept="image/*" style="display: none;" />
</div>
{{elseif $v.key eq 'round' and $form_input_mode_type_value eq 'free'}}
<div class="rect-or-round">
<div style="border-radius: 50%; width: 100%; height: 100%;box-sizing: border-box;border:{{$v.com_data.border_size }}px {{$v.com_data.border_style }} {{$v.com_data.border_color}};"></div>
</div>
{{elseif $v.key eq 'rect' and $form_input_mode_type_value eq 'free'}}
<div class="rect-or-round">
<div style="width: 100%; height: 100%;box-sizing: border-box;border:{{$v.com_data.border_size }}px {{$v.com_data.border_style }} {{$v.com_data.border_color}};"></div>
</div>
{{elseif $v.key eq 'subform'}}
{{if isset($v.com_data.children) and count($v.com_data.children) > 0}}
<div class="am-flex-col forminput-gap-10">
<div class="subform-button am-flex-row align-items-center forminput-gap-10">
<div data-id="{{$v.id}}" class="am-flex-row align-items-center forminput-default-button forminput-primary-button subform-add am-cursor-pointer"><i class="iconfont icon-add-wide"></i>添加</div>
<div data-id="{{$v.id}}" class="am-flex-row align-items-center forminput-default-button subform-delete am-cursor-pointer"><i class="iconfont icon-delete"></i>删除</div>
<div data-id="{{$v.id}}" class="subform-button-hidden am-flex-row align-items-center forminput-default-button subform-cancel am-cursor-pointer">取消操作</div>
<div data-id="{{$v.id}}" class="subform-button-hidden am-flex-row align-items-center forminput-default-button subform-delete-selected am-cursor-pointer">删除选中</div>
</div>
<div class="forminput-table-container" style="{{if $form_input_mode_type_value eq 'free'}}height: {{$v.com_data.com_height - $form_input_size_height - 42}}px;{{/if}}">
<div class="forminput-table-header am-flex">
<div class="am-flex-row align-items-center justify-content-center head">
<div class="head-label am-flex-row align-items-center justify-content-center shrink" style="{{if $v.com_data.computer.is_fixed == '1'}}position: sticky;left: 0;z-index: 99999;{{/if}}">
<div class="subform-header-checkbox">
<input type="checkbox" data-id="{{$v.id}}" class="subform-checkbox">
</div>
</div>
<div class="am-flex-row align-items-center">
<!-- 头部标题显示 -->
{{foreach $v.com_data.children as $k1=>$v1}}
<div id="subform-header-{{$v1.id}}" class="subform-header forminput-subform-hidden">
<div class="am-flex-row item-label shrink">
<div>
{{if isset($v1.com_data.is_required) and $v1.com_data.is_required == '1'}}
<span class="am-text-danger">*</span>
{{/if}}
{{$v1.com_data.title}}
</div>
<!-- 帮助说明 -->
{{if $v1.com_data.common_config.help_is_show == '1' and !empty($v1.com_data.common_config.help_explain)}}
<div class="tooltip">
<span class="tooltip-text">{{$v1.com_data.common_config.help_explain}}</span>
<div class="iconfont icon-help {{if isset($form_input_style_filed_title_size_type) and $form_input_style_filed_title_size_type eq 'big'}}item-name-big-icon{{elseif isset($form_input_style_filed_title_size_type) and $form_input_style_filed_title_size_type eq 'middle'}}item-name-icon{{else/}}item-name-small-icon{{/if}}"></div>
</div>
{{/if}}
</div>
</div>
{{/foreach}}
</div>
</div>
</div>
<div class="forminput-table-body">
<div class="flex-1 am-flex-col subform-data-list">
{{foreach $v.com_data.form_value as $k1=>$v1}}
<div class="table-row am-flex-row">
<div class="cell-num am-flex-row align-items-center justify-content-center shrink re" style="{{if $v.com_data.computer.is_fixed == '1'}}position: sticky;left: 0;z-index:{{:intval(9999 - $k1)}};{{/if}}">
<div class="row-num am-flex-row align-items-center justify-content-center">{{$k1 + 1 }}</div>
<div class="subform-num-checkbox">
<input type="checkbox" data-index="{{$k1}}" data-id="{{$v.id}}" class="subform-index-checkbox">
</div>
<div class="operate am-flex-row align-items-center justify-content-center forminput-gap-5">
<!-- <i data-id="{{$v.id}}" data-index="{{$k1}}" class="iconfont icon-enlarge operate-icon operate-enlarge am-cursor-pointer"></i> -->
<i data-id="{{$v.id}}" data-index="{{$k1}}" class="iconfont icon-delete operate-icon operate-delete am-cursor-pointer"></i>
<div id="{{$v.id}}-{{$k1}}-selected" class="subform-dropdown am-dropdown" data-am-dropdown>
<div data-id="{{$v.id}}-{{$k1}}-selected" class="selected-click am-dropdown-toggle">
<i class="iconfont icon-more-o operate-icon am-cursor-pointer"></i>
</div>
<div class="am-dropdown-content am-radius select-fixed-position">
<div class="am-flex-col forminput-gap-10">
<div data-id="{{$v.id}}" data-index="{{$k1}}" data-type="copy" class="am-dropdown-item am-cursor-pointer subform-dropdown-item">复制到下一行</div>
<div data-id="{{$v.id}}" data-index="{{$k1}}" data-type="copy_last" class="am-dropdown-item am-cursor-pointer subform-dropdown-item">复制到最后一行</div>
<div data-id="{{$v.id}}" data-index="{{$k1}}" data-type="insert_top" class="am-dropdown-item am-cursor-pointer subform-dropdown-item">向上插入一行</div>
<div data-id="{{$v.id}}" data-index="{{$k1}}" data-type="insert_bottom" class="am-dropdown-item am-cursor-pointer subform-dropdown-item">向下插入一行</div>
</div>
</div>
</div>
</div>
</div>
{{if isset($v.com_data.children)}}
{{foreach $v.com_data.children as $k2=>$v2}}
<div id="{{$v2.id}}-{{$k1}}" data-index="{{$k1}}" data-subform-id="{{$v.id}}" data-id="{{$v2.id}}" class="am-flex-row align-items-center subform-cell">
{{if in_array($v2.key, $form_input_radio_array) and $v2.com_data.type eq 'single-text'}}
<!-- 单行文本 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
<input
type="text"
name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]"
value="{{$v1[$v2.form_name]}}"
{{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}}
placeholder="{{$v2.com_data.placeholder}}"
{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.min_num)}}minlength="{{$v2.com_data.min_num}}"{{/if}}
{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.max_num)}}maxlength="{{$v2.com_data.max_num}}"{{/if}}
class="forminput-input forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.max_num)}}
<div class="forminput-cr-gray"><span class="limit-num">{{:strlen($v1[$v2.form_name]) }}</span>/{{$v2.com_data.max_num }}</div>
{{/if}}
</div>
{{elseif $v2.key eq 'number'}}
<!-- 数字 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
{{if $v2.com_data.is_display_money == '1' }}
<div class="forminput-cr-gray">{{$v2.com_data.money_sign }}</div>
{{/if}}
<input type="text"
name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]"
value="{{$v1[$v2.form_name]}}"
{{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}}
placeholder="{{$v2.com_data.placeholder}}"
class="forminput-input forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
{{if $v2.com_data.format == 'percentage'}}
<div class="forminput-cr-gray">%</div>
{{/if}}
</div>
{{elseif $v2.key eq 'multi-text'}}
<!-- 多行文本 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}} forminput-re" style="{{$v2.common_style}}height:auto;">
<textarea
rows="6"
name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]"
{{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}}
placeholder="{{$v2.com_data.placeholder}}"
{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.min_num)}}minlength="{{$v2.com_data.min_num}}"{{/if}}
{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.max_num)}}maxlength="{{$v2.com_data.max_num}}"{{/if}}
class="forminput-input forminput-no-border forminput-w {{$form_input_item_size}}"
>{{if !empty($v1[$v2.form_name])}}{{$v1[$v2.form_name]}}{{/if}}</textarea>
{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.max_num)}}
<div class="forminput-cr-gray forminput-textarea"><span class="limit-num">{{:strlen($v1[$v2.form_name]) }}</span>/{{$v2.com_data.max_num }}</div>
{{/if}}
</div>
{{elseif $v2.key eq 'pwd'}}
<!-- 密码 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
{{if !empty($v2.com_data.icon_name)}}
<div class="iconfont icon-{{$v2.com_data.icon_name}} forminput-cr-gray"></div>
{{/if}}
<input type="password" autocomplete="off"
name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]"
value="{{$v1[$v2.form_name]}}"
{{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}}
placeholder="{{$v2.com_data.placeholder}}"
class="forminput-input forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
<div class="iconfont icon-eye forminput-cr-gray forminput-password"></div>
</div>
{{elseif $v2.key eq 'date-group'}}
<!-- 日期时间组 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
{{if !in_array($v2.com_data.date_type, ['option1', 'option2'])}}
<div class="form-table-search-section form-table-search-time am-flex-row forminput-w forminput-h align-items-center">
<input type="text" {{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}} autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h forminput-input-text-center forminput-input-date-group-start {{$form_input_item_size}}" id="form-table-search-time-start-{{$v2.id}}-{{$k1}}" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_start]" value="{{if !empty($v1[$v2.form_name]) and isset($v1[$v2.form_name][0])}}{{$v1[$v2.form_name][0]}}{{/if}}" placeholder="{{if isset($v2['com_data']['start_placeholder'])}}{{$v2.com_data.start_placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v2.com_data.format}}',maxDate:'#F{$dp.$D(\'form-table-search-time-end-{{$v2.id}}-{{$k1}}\',{d:-1});}'})" autocomplete="off" />
<span class="am-flex-row align-items-center forminput-divider">-</span>
<input type="text" {{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}} autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h forminput-input-text-center forminput-input-date-group-end {{$form_input_item_size}}" id="form-table-search-time-end-{{$v2.id}}-{{$k1}}" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_end]" value="{{if !empty($v1[$v2.form_name]) and isset($v1[$v2.form_name][1])}}{{$v1[$v2.form_name][1]}}{{/if}}" placeholder="{{if isset($v2['com_data']['end_placeholder'])}}{{$v2.com_data.end_placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v2.com_data.format}}',minDate:'#F{$dp.$D(\'form-table-search-time-start-{{$v2.id}}-{{$k1}}\',{d:+1});}'})" autocomplete="off" />
</div>
{{else/}}
<div class="form-table-search-section form-table-search-time am-flex-row forminput-w forminput-h align-items-center">
<input type="text" {{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}} autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h forminput-input-text-center forminput-input-date-group-start {{$form_input_item_size}}" id="form-table-search-time-start-{{$v2.id}}-{{$k1}}" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_start]" value="{{if !empty($v1[$v2.form_name]) and isset($v1[$v2.form_name][0])}}{{$v1[$v2.form_name][0]}}{{/if}}" placeholder="{{if isset($v2['com_data']['start_placeholder'])}}{{$v2.com_data.start_placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v2.com_data.format}}',maxDate:'#F{$dp.$D(\'form-table-search-time-end-{{$v2.id}}-{{$k1}}\');}'})" autocomplete="off" />
<span class="am-flex-row align-items-center forminput-divider">-</span>
<input type="text" {{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}} autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h forminput-input-text-center forminput-input-date-group-end {{$form_input_item_size}}" id="form-table-search-time-end-{{$v2.id}}-{{$k1}}" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_end]" value="{{if !empty($v1[$v2.form_name]) and isset($v1[$v2.form_name][1])}}{{$v1[$v2.form_name][1]}}{{/if}}" placeholder="{{if isset($v2['com_data']['end_placeholder'])}}{{$v2.com_data.end_placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v2.com_data.format}}',minDate:'#F{$dp.$D(\'form-table-search-time-start-{{$v2.id}}-{{$k1}}\');}'})" autocomplete="off" />
</div>
{{/if}}
<i class="iconfont icon-{{$v2.com_data.icon_name}}" style="color: 333;"></i>
</div>
{{elseif $v2.key eq 'date'}}
<!-- 日期时间 -->
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
<input type="text" autocomplete="off" {{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}} class="forminput-input-date am-form-field am-input-sm am-radius am-inline-block Wdate forminput-no-border forminput-w forminput-h {{$form_input_item_size}}" id="form-table-search-time-{{$v2.id}}-{{$k1}}" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]" value="{{if !empty($v1[$v2.form_name]) and isset($v1[$v2.form_name])}}{{$v1[$v2.form_name]}}{{/if}}" placeholder="{{if isset($v2['com_data']['placeholder'])}}{{$v2.com_data.placeholder}}{{/if}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'{{$v2.com_data.format}}'})" autocomplete="off" />
<i class="iconfont icon-{{$v2.com_data.icon_name}}" style="color: 333;"></i>
</div>
{{elseif (in_array($v2.key, $form_input_radio_array) and $v2.com_data.type eq 'select') or (in_array($v2.key, $form_input_radio_array) and $v2.com_data.type eq 'radio-btns')}}
<!-- 下拉框 -->
<div id="{{$v.id}}-{{$k1}}-selected" class="am-selected subform-dropdown am-dropdown forminput-w am-flex-row" data-am-dropdown>
<select name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]" autocomplete="off" class="forminput-visiable-hidden">
<option value="">请选择</option>
{{foreach :array_values($v2.com_data.option_list) as $k=>$d}}
<option style="color: #000" value="{{$d.value}}" {{if isset($v1[$v2.form_name]) and $v1[$v2.form_name] eq $d.value}}selected="selected"{{/if}}>
{{$d.name}}
</option>
{{/foreach}}
</select>
<div data-id="{{$v.id}}-{{$k1}}-selected" class="am-flex-row selected-click forminput-w forminput-h">
<button type="button" class="am-selected-btn am-btn am-dropdown-toggle am-flex-row align-items-center forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
<div class="am-selected-status am-fl am-flex-row align-items-center forminput-gap-10">
{{if empty($v1[$v2.form_name]) }}
<span class="forminput-cr-gray">{{$v2.com_data.placeholder}}</span>
{{else/}}
{{foreach :array_values($v2.com_data.option_list) as $k=>$d}}
{{if $d.value == $v1[$v2.form_name]}}
<span class="{{$form_input_item_multicolour_class}}" style="{{if $v2.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{$d.name}}</span>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<i class="am-selected-icon am-icon-caret-down"></i>
</button>
</div>
<div id="dropdown-{{$v2.id}}-{{$k1}}" data-subform-id="{{$v.id}}" data-id="{{$v2.id}}" data-index="{{$k1}}" class="am-selected-content am-dropdown-content am-radius select-fixed-position" style="min-width: 354px;">
<ul class="am-selected-list">
<li class="forminput-show-hidden-click am-selected-item am-flex-row align-items-center {{if empty($v1[$v2.form_name])}}am-checked{{/if}}" data-index="0" data-group="0" data-value="">
<span class="{{$form_input_item_multicolour_class}} am-selected-text am-color-grey am-padding-0">{{:MyLang('please_select_tips')}}</span>
</li>
{{foreach :array_values($v2.com_data.option_list) as $k=>$d}}
<li class="forminput-show-hidden-click am-selected-item am-flex-row align-items-center {{if $d.value == $v1[$v2.form_name]}}am-checked{{/if}}" data-index="{{$k}}" data-group="0" data-value="{{$d.value}}">
<span class="{{$form_input_item_multicolour_class}} am-selected-text" style="{{if $v2.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{$d.name}}</span>
<i class="am-icon-check"></i></li>
{{/foreach}}
</ul>
</div>
</div>
{{elseif in_array($v2.key, $form_input_checkbox_array) }}
<!-- 下拉框复选框 -->
<div id="{{$v.id}}-{{$k1}}-selected" class="am-selected subform-dropdown am-dropdown forminput-w am-flex-row" data-am-dropdown>
<select name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]" multiple class="forminput-visiable-hidden forminput-select-multi">
{{foreach :array_values(array_merge($v2.com_data.option_list, empty($v1[$v2['form_name'].'_custom_option_list']) ? [] : $v1[$v2['form_name'].'_custom_option_list'])) as $k=>$d}}
<option value="{{$d.value}}" {{if !empty($v1[$v2.form_name]) and is_array($v1[$v2.form_name]) and in_array($d.value, $v1[$v2.form_name])}}selected{{/if}}>{{$d.name}}</option>
{{/foreach}}
</select>
<div data-id="{{$v.id}}-{{$k1}}-selected" class="am-flex-row selected-click forminput-w forminput-h">
<button type="button" class="am-selected-btn am-btn am-dropdown-toggle am-flex-row align-items-center forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
<div class="am-selected-status am-fl am-flex-row align-items-center {{if $v2.com_data.is_multicolour == '1'}}forminput-gap-10{{/if}}">
{{if empty($v1[$v2.form_name]) }}
<span class="forminput-cr-gray">{{$v2.com_data.placeholder}}</span>
{{else/}}
{{php}}$selected_status=0;{{/php}}
{{foreach :array_values(array_merge($v2.com_data.option_list, empty($v1[$v2['form_name'].'_custom_option_list']) ? [] : $v1[$v2['form_name'].'_custom_option_list'])) as $k=>$d}}
{{if in_array($d.value, $v1[$v2.form_name])}}
<span class="{{$form_input_item_multicolour_class}}" style="{{if $v2.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{if $v2.com_data.is_multicolour neq 1 and $selected_status eq 1}},{{/if}}{{$d.name}}</span>
{{php}}$selected_status=1;{{/php}}
{{/if}}
{{/foreach}}
{{/if}}
</div>
<i class="am-selected-icon am-icon-caret-down"></i>
</button>
</div>
<div id="dropdown-{{$v2.id}}-{{$k1}}" data-subform-id="{{$v.id}}" data-id="{{$v2.id}}" data-index="{{$k1}}" class="am-selected-content am-dropdown-content am-radius select-fixed-position" style="min-width: 354px;">
<ul class="am-selected-list">
{{foreach :array_values(array_merge($v2.com_data.option_list, empty($v1[$v2['form_name'].'_custom_option_list']) ? [] : $v1[$v2['form_name'].'_custom_option_list'])) as $k=>$d}}
<li value="{{$d.value}}" class="am-selected-item am-flex-row align-items-center {{if isset($v1[$v2.form_name]) and is_array($v1[$v2.form_name]) and in_array($d.value, $v1[$v2.form_name])}}am-checked{{/if}}" data-index="{{$k}}" data-group="0" data-value="{{$d.value}}">
<div class="{{$form_input_item_multicolour_class}} am-selected-text am-flex-row align-items-center forminput-gap-5" style="{{if $v2.com_data.is_multicolour == '1'}}background: {{$d.color}};color:{{if isset($d.is_other) and $d.is_other == '1'}}#141E31{{else/}}#fff{{/if}};border-radius:4px;{{else/}}padding: 0;{{/if}}">{{$d.name}}{{if isset($d.type) and $d.type eq 'add'}}<i data-value="{{$d.value}}" data-id="{{$v.id}}" data-subform-option-id="{{$v2.id}}" data-subform-option-index="{{$k1}}" class="add-option-icon iconfont icon-close {{if $v2.com_data.is_multicolour neq '1'}}forminput-cr-gray{{/if}}"></i>{{/if}}</div>
<i class="am-icon-check"></i></li>
{{/foreach}}
</ul>
{{if $v2.com_data.is_add_option == '1'}}
<div class="add-option am-flex-row align-items-center forminput-gap-10 forminput-cursor-p">
<i class="iconfont icon-add forminput-cr-blue"></i>
<span class="size-14 forminput-cr-blue">添加选项</span>
</div>
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_custom_option_list]" value="{{if !empty($v1[$v2['form_name'].'_custom_option_list'])}}{{:urlencode(base64_encode(json_encode($v1[$v2['form_name'].'_custom_option_list'])))}}{{/if}}" class="forminput-custom-option-list" placeholder="请输入选项名称">
{{/if}}
</div>
</div>
{{elseif $v2.key eq 'score'}}
<!-- 评分 -->
<div class="am-flex-row align-items-center forminput-gap-10 forminput-score am-flex-wrap">
{{foreach :array_values(range(1, $v2.com_data.total)) as $i => $d}}
{{if $v2.com_data.score_type eq 0}}
<!-- 评分样式1 -->
<i data-index="{{$i}}" class="iconfont {{if $i < $v1[$v2.form_name]}}icon-pointed{{else/}}icon-pointed-o{{/if}} forminput-score-icon" style="color: {{if $i < $v1[$v2.form_name]}}{{$v2.com_data.select_color}}{{else/}}#ccc{{/if}};"></i>
{{elseif $v2.com_data.score_type eq 1}}
<!-- 评分样式2 -->
<i data-index="{{$i}}" class="iconfont {{if $i < $v1[$v2.form_name]}}icon-the-heart{{else/}}icon-the-heart-o{{/if}} forminput-score-icon" style="color: {{if $i < $v1[$v2.form_name]}}{{$v2.com_data.select_color}}{{else/}}#ccc{{/if}};"></i>
{{elseif $v2.com_data.score_type eq 2}}
<!-- 评分样式3 -->
<span data-index="{{$i}}" class="nowrap forminput-score-icon" style="color: {{if $i eq $v1[$v2.form_name] - 1}}{{$v2.com_data.select_color}}{{else/}}#666{{/if}};">{{$i + 1 }}分</span>
{{/if}}
{{/foreach}}
<input type="text" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]" class="am-input am-input-sm forminput-visiable-hidden" value="{{$v1[$v2.form_name]}}">
</div>
{{elseif $v2.key eq 'text'}}
<!-- 文本 -->
<div class="forminput-wrap item-small-size {{$form_input_item_size}}" style="color:{{$v2.com_data.text_color}};">{{$v1[$v2.form_name]}}</div>
{{elseif $v2.key eq 'img'}}
<!-- 图片 -->
<div>
{{if empty($v2.com_data.img_src)}}
<div class="item-img-empty forminput-w forminput-h">
<img src="{{$attachment_host}}/static/form_input/images/empty.png" style="width: 100%;height: 100%;object-fit: cover;"/>
</div>
{{else/}}
<img src="{{$v2.com_data.img_src[0]['url']}}" data-rel="{{$v2.com_data.img_src[0]['url']}}" class="common-annex-view-event" style="width: 100%;height: 100%;object-fit: cover;"/>
{{/if}}
</div>
{{elseif $v2.key eq 'video'}}
<!-- 视频 -->
<div>
{{if isset($v2.com_data.video) and !empty($v2.com_data.video)}}
<video src="{{$v2.com_data.video[0]['url']}}" {{if isset($v2.com_data.video_img[0])}}poster="{{$v2.com_data.video_img[0]['url']}}"{{/if}} controls="controls" style="width: 100%;height: 100%;object-fit: contain;"></video>
{{/if}}
</div>
{{elseif $v2.key eq 'position'}}
<!-- 定位 -->
<div class="forminput-data-item-disabled {{$form_input_item_content_class}} justify-content-center forminput-cr-gray" style="{{$v2.common_style}}">
<div class="iconfont icon-address"></div>
<div class="am-text-truncate">请在移动端打开表单进行定位</div>
</div>
{{elseif $v2.key eq 'attachments'}}
<!-- 文件 -->
{{if !empty($v2.com_data.file)}}
<div class="am-flex-row align-items-center forminput-gap-10">
<span class="file-title am-text-truncate" style="width: auto;">{{$v2.com_data.file[0]['original']}}</span>
<div class="forminput-oprate">
<div class="icon attachments-click"><i class="iconfont icon-copy"></i></div>
<span class="divider"></span>
<div class="icon attachments-click"><i class="iconfont icon-download-b-line"></i></div>
</div>
</div>
{{else/}}
<span class="file-title" style="color:#606266;font-size:14px;width: auto;">暂无文件</span>
{{/if}}
{{elseif $v2.key eq 'phone'}}
<!-- 手机 --->
<div class="am-flex-col forminput-gap-10">
<div class="forminput-data-item-content am-flex-row {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
<i class="iconfont icon-{{$v2.com_data.icon_name}}" style="color: 666;"></i>
<input type="text"
name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]"
value="{{$v1[$v2.form_name]}}"
{{if $v2.com_data.is_required == '1'}}required="required" data-validation-message="{{:MyLang('not_fill_in_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}}
placeholder="{{$v2.com_data.placeholder}}"
class="forminput-input forminput-no-border forminput-w forminput-h {{$form_input_item_size}}"
/>
</div>
</div>
{{elseif $v2.key eq 'address'}}
<!-- 地址 --->
<div class="region-linkage" data-url="{{:MyUrl('index/region/index')}}" data-code-url="{{:MyUrl('index/region/codedata')}}">
<div class="am-cascader">
<div class="selected-click am-cascader-suffix forminput-reactive">
<div class="forminput-data-item-content {{$form_input_item_content_class}}" style="{{$v2.common_style}}">
<input type="text" readonly="readonly" name="province_city_county" autocomplete="off" placeholder="{{$v2.com_data.placeholder}}"
value="{{if !empty($v2['com_data']['province_name'])}}{{$v2.com_data.province_name}}{{/if}}{{if !empty($v2['com_data']['city_name'])}}-{{$v2.com_data.city_name}}{{/if}}{{if !empty($v2['com_data']['county_name'])}}-{{$v2.com_data.county_name}}{{/if}}"
class="am-input-inner forminput-no-border forminput-w forminput-h {{$form_input_item_size}}" {{if isset($v2.com_data.required) and $v2.com_data.required eq '1'}}required data-validation-message="{{:MyLang('not_choice_error')}}({{$v.com_data.title}}-{{$v2.com_data.title}})"{{/if}}>
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_province]" value="{{if isset($v2['com_data']['form_value'][0])}}{{$v1[$v2.form_name][0]}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_city]" value="{{if isset($v2['com_data']['form_value'][1])}}{{$v1[$v2.form_name][1]}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_county]" value="{{if isset($v2['com_data']['form_value'][2])}}{{$v1[$v2.form_name][2]}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_province_name]" value="{{if isset($v2['com_data']['province_name'])}}{{$v2.com_data.province_name}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_city_name]" value="{{if isset($v2['com_data']['city_name'])}}{{$v2.com_data.city_name}}{{/if}}">
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}_county_name]" value="{{if isset($v2['com_data']['county_name'])}}{{$v2.com_data.county_name}}{{/if}}">
<span class="am-input-suffix">
<i class="iconfont icon-angle-down"></i>
</span>
</div>
</div>
<div class="am-cascader-dropdown select-fixed-position">
<div id="{{$v2.id}}-cascader-panel-{{$k1}}" data-subform-id="{{$v.id}}" data-index="{{$k1}}" data-id="{{$v2.id}}" class="am-cascader-panel">
<div class="am-scrollbar province am-cascader-menu {{if isset($v2['province'])}}am-active{{/if}}" data-key="province">
<div class="am-cascader-menu-wrap am-scrollbar-wrap am-scrollbar-wrap-hidden-default">
<ul class="am-scrollbar-view am-cascader-menu-list">
</ul>
</div>
</div>
<div class="am-scrollbar city am-cascader-menu {{if isset($v2['city'])}}am-active{{/if}}" data-key="city">
<div class="am-cascader-menu-wrap am-scrollbar-wrap am-scrollbar-wrap-hidden-default">
<ul class="am-scrollbar-view am-cascader-menu-list">
</ul>
</div>
</div>
<div class="am-scrollbar county am-cascader-menu {{if isset($v2['county'])}}am-active{{/if}}" data-key="county">
<div class="am-cascader-menu-wrap am-scrollbar-wrap am-scrollbar-wrap-hidden-default">
<ul class="am-scrollbar-view am-cascader-menu-list">
</ul>
</div>
</div>
</div>
<div class="am-popper-arrow"></div>
</div>
</div>
</div>
{{elseif $v2.key eq 'upload-img'}}
<div class="am-flex-col forminput-gap-10">
<button class="plug-file-upload-submit am-flex-row align-items-center justify-content-center {{$form_input_item_content_class}}" style="{{$v2.common_style}}" data-dialog-type="images" data-is-direct="1" data-back-fun="ForminputUploadEvent" data-back-mark="{{$v2.id}}-{{$k1}}_{{$v.id}}">
<div class="upload-text am-text-truncate"><span style="color: #2A94FF;">请选择</span>(点击选择图片,{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.limit) }}最多{{:$v2.com_data.limit}}张{{/if}}{{if $v2.com_data.is_limit_size == '1' and !empty($v2.com_data.upload_size) }}、最多{{:$v2.com_data.upload_size}}MB{{/if}} )</div>
</button>
<div class="file-upload-view-list am-flex-row am-flex-wrap forminput-gap-10 {{if empty($v.com_data.form_value)}}file-upload-hidden{{/if}}">
{{if is_array($v1[$v2.form_name])}}
{{foreach $v1[$v2.form_name] as $key => $upload_data}}
{{if !empty($upload_data.url)}}
<div data-index="{{$key}}" data-id="{{$v.id}}" data-subform-index-id="{{$v2.id}}" data-subform-index="{{$k1}}" class="file-upload-view-item">
<div class="file-upload-view-close file-abs-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
<div class="am am-figure am-figure-default am-no-layout file-upload-view-item-img file-upload-view-item-preview">
<img src="{{$upload_data.url}}" data-rel="{{$upload_data.url}}" style="width: 100%;height: 100%;object-fit: contain;">
</div>
<div class="file-upload-view-item-info">
<div class="am-flex-row align-items-center upload-title">
{{if !empty($upload_data.name)}}
<span class="am-text-truncate">{{:pathinfo($upload_data.name, PATHINFO_FILENAME)}}</span>
{{if !empty($upload_data.ext)}}<span>{{$upload_data.ext}}</span>{{/if}}
{{/if}}
</div>
{{if !empty($upload_data.size)}}<div class="mb-2 upload-size">{{:AnnexSizeToUnit($upload_data.size)}}</div>{{/if}}
</div>
</div>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]" value="{{:urlencode(base64_encode(json_encode($v1[$v2.form_name])))}}" />
</div>
{{elseif $v2.key eq 'upload-video'}}
<div class="am-flex-col forminput-gap-10">
<button class="plug-file-upload-submit am-flex-row align-items-center justify-content-center {{$form_input_item_content_class}}" style="{{$v2.common_style}}" data-dialog-type="video" data-is-direct="1" data-back-fun="ForminputUploadEvent" data-back-mark="{{$v2.id}}-{{$k1}}_{{$v.id}}">
<div class="upload-text am-text-truncate"><span style="color: #2A94FF;">请选择</span>(点击选择视频,{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.limit) }}最多{{:$v2.com_data.limit}}个{{/if}}{{if $v2.com_data.is_limit_size == '1' and !empty($v2.com_data.upload_size) }}、最多{{:$v2.com_data.upload_size}}MB{{/if}} )</div>
</button>
<div class="file-upload-view-list am-flex-row am-flex-wrap forminput-gap-10 {{if empty($v.com_data.form_value)}}file-upload-hidden{{/if}}">
{{if is_array($v1[$v2.form_name])}}
{{foreach $v1[$v2.form_name] as $key => $upload_data}}
{{if !empty($upload_data.url)}}
<div data-index="{{$key}}" data-id="{{$v.id}}" data-subform-index-id="{{$v2.id}}" data-subform-index="{{$k1}}" class="file-upload-view-item">
<div class="file-upload-view-close file-abs-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
<div class="file-upload-view-item-video file-upload-view-item-preview">
<i class="iconfont icon-finish_zb forminput-cursor-p file-upload-bofang"></i>
<video src="{{$upload_data.url}}" style="width: 100%;height: 100%;object-fit: contain;"></video>
</div>
<div class="file-upload-view-item-info">
<div class="am-flex-row align-items-center upload-title">
{{if !empty($upload_data.name)}}
<span class="am-text-truncate">{{:pathinfo($upload_data.name, PATHINFO_FILENAME)}}</span>
{{if !empty($upload_data.ext)}}<span>{{$upload_data.ext}}</span>{{/if}}
{{/if}}
</div>
{{if !empty($upload_data.size)}}<div class="mb-2 upload-size">{{:AnnexSizeToUnit($upload_data.size)}}</div>{{/if}}
</div>
</div>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]" value="{{:urlencode(base64_encode(json_encode($v1[$v2.form_name])))}}"" />
</div>
{{elseif $v2.key eq 'upload-attachments'}}
<div class="am-flex-col forminput-gap-10">
<button class="plug-file-upload-submit am-flex-row align-items-center justify-content-center {{$form_input_item_content_class}}" style="{{$v2.common_style}}" data-dialog-type="file" data-is-direct="1" data-back-fun="ForminputUploadEvent" data-back-mark="{{$v2.id}}-{{$k1}}_{{$v.id}}">
<div class="upload-text am-text-truncate"><span style="color: #2A94FF;">请选择</span>(点击选择文件,{{if $v2.com_data.is_limit_num == '1' and !empty($v2.com_data.limit) }}最多{{:$v2.com_data.limit}}个{{/if}}{{if $v2.com_data.is_limit_size == '1' and !empty($v2.com_data.upload_size) }}、最多{{:$v2.com_data.upload_size}}MB{{/if}} )</div>
</button>
<div class="file-upload-view-list am-flex-row am-flex-wrap forminput-gap-10 {{if empty($v.com_data.form_value)}}file-upload-hidden{{/if}}">
{{if is_array($v1[$v2.form_name])}}
{{foreach $v1[$v2.form_name] as $key => $upload_data}}
{{if !empty($upload_data.name)}}
<div data-index="{{$key}}" data-id="{{$v.id}}" data-subform-index-id="{{$v2.id}}" data-subform-index="{{$k1}}" class="file-upload-view-item file-upload-view-item-attachments-item">
<div class="am-flex-row align-items-center upload-title file-upload-view-item-preview">
<span class="am-text-truncate">{{:pathinfo($upload_data.name, PATHINFO_FILENAME)}}</span>
{{if !empty($upload_data.ext)}}<span>{{$upload_data.ext}}</span>{{/if}}
{{if !empty($upload_data.size)}}<span class="file-size">({{:AnnexSizeToUnit($upload_data.size)}})</span>{{/if}}
</div>
<div class="file-upload-view-close file-upload-view-attachments-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
</div>
{{/if}}
{{/foreach}}
{{/if}}
</div>
<input type="hidden" name="{{$v.form_name}}[{{$k1}}][{{$v2.form_name}}]" value="{{:urlencode(base64_encode(json_encode($v1[$v2.form_name])))}}"" />
</div>
{{/if}}
</div>
{{/foreach}}
{{/if}}
</div>
{{/foreach}}
</div>
</div>
</div>
</div>
{{else/}}
<div class="subform-no-data">暂无可用字段</div>
{{/if}}
{{/if}}
</div>
</div>
{{/if}}
{{/foreach}}
</div>
<!-- 添加新选项的输入框 -->
<div class="am-popup am-radius" id="forminput-add-option-popup">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">添加新选项</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<div class="am-form am-form-popup-fixed form-validation">
<div class="upgrade-content">
<input type="text" class="am-radius" required="required" autocomplete="off" data-validation-message="请输入选项名称" placeholder="请输入选项名称">
</div>
<div class="am-form-popup-submit">
<button type="button" class="am-btn am-btn-warning am-radius am-btn-xs am-margin-right-lg" data-am-modal-close>
<span>{{:MyLang('cancel_title')}}</span>
</button>
<button type="button" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example add-option-confirm" data-am-loading="{spinner: 'circle-o-notch', loadingText:'{{:MyLang('save_title')}}'}">
<span>{{:MyLang('save_title')}}</span>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="am-modal am-modal-no-btn" tabindex="-1" id="forminput-user-verify-win">
<div class="forminput-am-modal-dialog am-modal-dialog am-radius">
<div class="am-modal-hd">
<span>{{:MyLang('verify_images_title')}}</span>
<a href="javascript:;" class="am-close" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd">
<div class="am-form-input-material">
<input type="text" minlength="4" maxlength="4" id="user-verify-win-img-value" data-validation-message="{{:MyLang('form_images_verify_message')}}" class="am-form-field am-radius input-padding-right-max" autocomplete="off" data-is-clearout="0" />
<div class="am-position-verify">
<img src="" class="am-cursor-pointer am-radius" id="user-verify-win-img" onClick="this.src='{{:MyUrl('index/forminput/verifyentry', ['type'=>isset($module_data['type']) ? $module_data['type'] : ''])}}'+(({{$url_model}} == 0) ? '&t=' : '?t=')+Math.random();" />
<a href="javascript:;" class="form-verify-tips am-radius" onClick="document.getElementById('user-verify-win-img').src='{{:MyUrl('index/forminput/verifyentry', ['type'=>isset($module_data['type']) ? $module_data['type'] : ''])}}{{if $url_model eq 0}}&t={{else /}}?t={{/if}}'+Math.random();">{{:MyLang('form_images_verify_button_text')}}</a>
</div>
<span class="am-material-bar"></span>
<label class="am-material-label">{{:MyLang('form_verify_title')}}</label>
</div>
<button type="button" class="am-btn am-btn-primary am-radius am-btn-md am-block am-margin-top-lg btn-loading-example user-verify-win-submit" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:MyLang('confirm_title')}}'}" data-win="1">
<i class="am-icon-check"></i>
<span>{{:MyLang('confirm_title')}}</span>
</button>
</div>
</div>
</div>
<div class="am-popup" id="forminput-upload-popup-preview">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">上传预览</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
</div>
</div>
</div>
<div class="am-modal am-modal-confirm" tabindex="-1" id="forminput-subform-data">
<div class="forminput-am-modal-dialog am-modal-dialog">
<div class="am-modal-hd">{{:MyLang('reminder_title')}}</div>
<div class="am-modal-bd">{{:MyLang('delete_confirm_tips')}}</div>
<div class="am-modal-footer">
<span class="am-modal-btn" data-am-modal-cancel>取消</span>
<span class="am-modal-btn" data-am-modal-confirm>确定</span>
</div>
</div>
</div>
<script>
function ForminputUploadEvent(e){
const upload_data = e.data[0] || {};
if (upload_data) {
// 获取当前选中的数据的id名称
let upload_id = e.mark;
// 当前选中数据的子表单id
let subform_id = e.mark;
let subform_index = '';
// 获取当前选中数据的索引id 如果不是子表单的话直接使用传递的id
let subform_index_id = e.mark;
if (upload_id.indexOf('_') > -1) {
const split_id = JSON.parse(JSON.stringify(upload_id)).split('_');
upload_id = split_id[0];
if (upload_id.indexOf('-') > -1) {
const split_index = JSON.parse(JSON.stringify(upload_id)).split('-');
subform_index_id = split_index[0];
subform_index = split_index[1];
}
subform_id = split_id[1];
}
let find_id_data = $forminput_data_list .find(item => item.id == subform_id);
// 获取子表单里对应这一行的数据
if (find_id_data && find_id_data.key == 'subform') {
find_id_data = JSON.parse(JSON.stringify(find_id_data)).com_data.data_list[subform_index].data_list.find(item => item.id == subform_index_id);
}
const item_length = $('#' + upload_id).find('.file-upload-view-list .file-upload-view-item').length;
// 获取当前上传的key的名称
const find_key_name = find_id_data.key == 'upload-img' ? '图片' : find_id_data.key == 'upload-video' ? '视频' : '文件';
// 获取上传文件数量限制
let limit = find_id_data.com_data.limit || 0;
// 获取上传文件大小限制
let upload_size = find_id_data.com_data.upload_size || 0;
// 判断是否超出上传数量限制
if (find_id_data.com_data.is_limit_num == '1' && item_length >= limit) {
Prompt('最多上传' + limit + (find_id_data.key == 'upload-img' ? '张' : '个') + find_key_name);
return false;
}
// 判断是否超出上传大小限制
if (find_id_data.com_data.is_limit_size == '1' && upload_data.size > upload_size * 1024 * 1024) {
Prompt(find_key_name + '大小不能超过' + upload_size + 'MB');
return false;
}
// 真实数据组装
let new_html = '';
if (find_id_data.key == 'upload-img') {
new_html = ForminputFileUploadImg(item_length, upload_data, subform_id, subform_index_id, subform_index);
} else if (find_id_data.key == 'upload-video') {
new_html = ForminputFileUploadVideo(item_length, upload_data, subform_id, subform_index_id, subform_index);
} else if (find_id_data.key == 'upload-attachments') {
new_html = ForminputFileUploadAttachments(item_length, upload_data, subform_id, subform_index_id, subform_index);
}
const $element = $('#' + upload_id).find('.file-upload-view-list');
// 判断是否存在class, 存在则删除对应的class
if ($element.hasClass('file-upload-hidden')) {
$element.removeClass('file-upload-hidden');
}
$element.append(new_html);
// 将上传数据放置到数据中去
let upload_input_data = [];
$forminput_data_list.forEach(item => {
if (item.id == subform_id) {
let new_data = item;
let is_subform = false;
if (item.key == "subform") {
is_subform = true;
new_data = item.com_data.data_list[subform_index].data_list.find(item => item.id == subform_index_id);
}
new_data.com_data.form_value.push({
url: upload_data.url,
name: upload_data.original,
size: upload_data.size,
ext: upload_data.ext,
});
upload_input_data = JSON.parse(JSON.stringify(new_data.com_data.form_value));
if (is_subform) {
ForminputVerifyWhenDataChanges(item.id);
} else {
OnItemEvent({ id: item.id, key: item.key, value: new_data.com_data.form_value, is_error: '0', error_text: '' });
}
}
})
// 赋值
$('#' + upload_id).find('input').val(encodeURIComponent(CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(JSON.stringify(upload_input_data)))));
}
}
// 图片添加处理
function ForminputFileUploadImg(item_length, upload_data, id, subform_index_id, subform_index) {
// 上传文件名称
const upload_data_name = !IsEmpty(upload_data.original) ? upload_data.original : upload_data.name;
let index = upload_data_name.lastIndexOf('.'); // 获取最后一个/的位置
let upload_name = upload_data_name.substring(0, index);
const new_html = `<div data-index="`+ item_length +`" data-id="`+ id +`" data-subform-index-id="`+ subform_index_id +`" data-subform-index="`+ subform_index +`" class="file-upload-view-item">
<div class="file-upload-view-close file-abs-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
<div class="am am-figure am-figure-default am-no-layout file-upload-view-item-img file-upload-view-item-preview">
<img src="`+ upload_data.url +`" data-rel="`+ upload_data.url +`" alt="`+ upload_data_name +`" style="width: 100%;height: 100%;object-fit: contain;">
</div>
<div class="file-upload-view-item-info">
<div class="am-flex-row align-items-center upload-title">
<span class="am-text-truncate">`+ upload_name +`</span><span>`+ upload_data.ext +`</span>
</div>
<div class="mb-2 upload-size">`+ AnnexSizeToUnit(upload_data.size) +`</div>
</div>
</div>`;
return new_html;
}
// 视频上传处理
function ForminputFileUploadVideo(item_length, upload_data, id, subform_index_id, subform_index) {
// 上传文件名称
const upload_data_name = !IsEmpty(upload_data.original) ? upload_data.original : upload_data.name;
let index = upload_data_name.lastIndexOf('.'); // 获取最后一个/的位置
let upload_name = upload_data_name.substring(0, index);
// 视频上传
const new_html = `<div data-index="`+ item_length +`" data-id="`+ id +`" data-subform-index-id="`+ subform_index_id +`" data-subform-index="`+ subform_index +`" class="file-upload-view-item">
<div class="file-upload-view-close file-abs-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
<div class="file-upload-view-item-video file-upload-view-item-preview">
<i class="iconfont icon-finish_zb forminput-cursor-p file-upload-bofang"></i>
<video src="`+ upload_data.url +`" style="width: 100%;height: 100%;object-fit: contain;"></video>
</div>
<div class="file-upload-view-item-info">
<div class="am-flex-row align-items-center upload-title">
<span class="am-text-truncate">`+ upload_name +`</span><span>`+ upload_data.ext +`</span>
</div>
<div class="mb-2 upload-size">`+ AnnexSizeToUnit(upload_data.size) +`</div>
</div>
</div>`;
return new_html;
}
// 文件上传处理
function ForminputFileUploadAttachments(item_length, upload_data, id, subform_index_id, subform_index) {
// 上传文件名称
const upload_data_name = !IsEmpty(upload_data.original) ? upload_data.original : upload_data.name;
let index = upload_data_name.lastIndexOf('.'); // 获取最后一个.的位置
let upload_name, upload_ext;
// 处理没有扩展名的情况
if (index === -1) {
upload_name = upload_data_name;
} else {
upload_name = upload_data_name.substring(0, index);
}
// 计算文件大小
let fileSize = upload_data.size || 0;
let fileSizeStr = AnnexSizeToUnit(fileSize);
// 文件上传
const new_html = `<div data-index="`+ item_length +`" data-id="`+ id +`" data-subform-index-id="`+ subform_index_id +`" data-subform-index="`+ subform_index +`" class="file-upload-view-item file-upload-view-item-attachments-item">
<div class="am-flex-row align-items-center upload-title file-upload-view-item-preview" data-size="`+ fileSize +`">
<span class="am-text-truncate">`+ upload_name +`</span><span>`+ upload_data.ext +`</span>
<span class="file-size">(`+ fileSizeStr +`)</span>
</div>
<div class="file-upload-view-close file-upload-view-attachments-close forminput-cursor-p">
<i class="iconfont icon-close"></i>
</div>
</div>`;
return new_html;
}
</script>