examtest_mp/components/dynamicForm/index.wxml

73 lines
4.7 KiB
Plaintext

<!--components/dynamicForm/index.wxml-->
<view class="form-box">
<block wx:for="{{formData}}" wx:key="id">
<!-- input输入框 -->
<view class="form-row ipt-row " wx:if="{{item.type==='input'}}">
<view class="form-lable {{item.isRequired?'required':'' +''}}">{{item.lable}}</view>
<view style="width:100%">
<input wx:if="{{!item.disabled}}" class="field {{item.disabled?'disabled':''}}"
type="{{inputMap[item.id].original.inputType || 'text'}}" maxlength="{{item.maxLength || -1}}"
bindinput="onInput" id="{{item.id}}" value="{{item.defaultValue || ''}}"
disabled="{{item.disabled}}" placeholder="{{inputMap[item.id].placeholder || '请填写内容'}}" />
<view class="field disabled" wx:else>{{item.defaultValue || ''}}</view>
<view class="error-info" wx:if="{{inputMap[item.id].error}}">{{inputMap[item.id].error}}</view>
</view>
</view>
<!-- picker选择器 -->
<view class="form-row flex-start" wx:elif="{{item.type==='picker'}}">
<view class="form-lable {{item.isRequired?'required':''}}">{{item.lable}}</view>
<view style="width:100%">
<view wx:if="{{!item.disabled}}" class="picker-row {{item.disabled?'disabled':''}}">
<picker class="field" range="{{item.range}}" disabled="{{item.disabled}}" id="{{item.id}}" value="{{pickerMap[item.id].idx}}"
range-key="name" bindchange="onPickerChange">
{{pickerMap[item.id].hasChoose?item.range[pickerMap[item.id].idx].name:'请选择'}}
</picker>
<van-icon class="row-icon" name="arrow"></van-icon>
</view>
<view class="field disabled" wx:else>{{pickerMap[item.id].hasChoose?item.range[pickerMap[item.id].idx].name:''}}</view>
<view class="error-info" wx:if="{{pickerMap[item.id].error}}">{{pickerMap[item.id].error}}</view>
</view>
</view>
<!-- 日期选择器 -->
<view class="form-row flex-start " wx:elif="{{item.type==='date'}}">
<view class="form-lable {{item.isRequired?'required':''}}">{{item.lable}}</view>
<view style="width:100%">
<view class="picker-row">
<view class="field {{item.disabled?'disabled':''}}" bindtap="datePickerShow" data-disabled="{{item.disabled}}" data-id="{{item.id}}">{{dateMap[item.id].hasChoose?(dateMap[item.id].config.endDate?dateMap[item.id].startDate+' ~ ' + dateMap[item.id].endDate: dateMap[item.id].startDate):'请选择'}}</view>
<time-picker pickerShow="{{dateMap[item.id].show}}" id="{{item.id}}" wx:if="{{!isPickerRender}}" bind:hidePicker="datePickerHide"
bind:setPickerTime="setPickerTime" config="{{dateMap[item.id].original.config}}"></time-picker>
<van-icon class="row-icon" name="arrow"></van-icon>
</view>
<view class="error-info" wx:if="{{dateMap[item.id].error}}">{{dateMap[item.id].error}}</view>
</view>
</view>
<!-- 文本框 -->
<view class="textarea-box" wx:elif="{{item.type==='textarea'}}">
<view class="flex mb-24">
<view class="area-lable {{item.isRequired?'required':''}}">{{item.lable}}</view>
<view class="error-info" wx:if="{{inputMap[item.id].error}}">{{inputMap[item.id].error}}</view>
</view>
<view class="text-area {{item.disabled?'disabled':''}}">
<textarea style="width:100%" value="{{item.defaultValue || ''}}" disabled="{{item.disabled}}" placeholder="{{inputMap[item.id].placeholder || '请填写内容'}}"
id="{{item.id}}" bindinput="onInput" auto-height="{{true}}" maxlength="{{item.maxLength || -1}}" name=""
cols="30" rows="10"></textarea>
<view wx:if="{{item.maxLength}}" class="text-num">{{inputMap[item.id].value.length||0}}/{{item.maxLength}}
</view>
</view>
</view>
<!-- 文件上传 -->
<view class="img-box" wx:elif="{{item.type==='file'}}">
<!-- <view class="area-lable mb-24 {{item.isRequired?'required':''}}">{{item.lable}}</view> -->
<view class="flex mb-24">
<view class="area-lable {{item.isRequired?'required':''}}">{{item.lable}}</view>
<view class="error-info" wx:if="{{fileMap[item.id].error}}">{{fileMap[item.id].error}}</view>
</view>
<van-uploader file-list="{{ fileMap[item.id].list }}" preview-size="196rpx" max-count="{{fileMap[item.id].original.maxCount || 9}}"
disabled="{{fileMap[item.id].original.disabled || false}}" accept="{{fileMap[item.id].original.accept || 'image'}}" id="{{item.id}}" multiple image-fit="aspectFill"
bind:after-read="onFileRead" bind:delete="onFileDelete" />
</view>
</block>
</view>
<button wx:if="{{showSubmitBtn}}" class='form-btn' bindtap="formSubmit">提交</button>