form.wxml 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <!--components/form/form.wxml-->
  2. <wxs module="format">
  3. // wxs中不能写ES6的语法: 例如箭头函数
  4. function isHide(hide, arr) {
  5. var rs = true
  6. arr.forEach(function (e) {
  7. hide.forEach(function (h) {
  8. if (e.id === h.id) {
  9. e.force = false
  10. h.value.forEach(function (v) {
  11. if (e.inputValue === v) {
  12. rs = false
  13. }
  14. })
  15. }
  16. })
  17. })
  18. return rs
  19. }
  20. // 需要导出函数, 导出只能使用CommonJs规范
  21. module.exports = {
  22. // 对象中也不能使用对象的增强写法
  23. isHide: isHide
  24. }
  25. </wxs>
  26. <view>
  27. <view wx:for="{{formLayoutData.formInfo}}" wx:key="{{index}}">
  28. <t-cell required="{{item.force}}" wx:if="{{item.type == 'cell'}}" title="{{language[item.label]||item.label}}" note="{{item.inputValue}}" url="{{item.url}}" hover>
  29. </t-cell>
  30. <!-- 输入 -->
  31. <t-input wx:if="{{item.type == 'text'}}" value="{{item.inputValue}}" data-value="{{item.id}}" data-index="{{index}}" layout="horizontal" status="error" data-item="{{item}}" tips="{{language[item.errorMsg]||item.errorMsg}}" placeholder="{{language[item.placeholder]||item.placeholder}}" align="right" bind:blur="onBlur" bind:clear="onClear" clearable>
  32. <view slot="label">
  33. {{language[item.label]||item.label}} <text wx:if="{{item.force}}" style="color:#e34d59">*</text>
  34. </view>
  35. </t-input>
  36. <!-- 选择 -->
  37. <t-cell wx:if="{{item.type == 'picker'}}" required="{{item.force}}" note="{{item.inputValue >= 1?language['是']||'是':item.inputValue >= 0? language['否']||'否' :(language[item.inputValue]||item.inputValue||language['请选择']||'请选择')}}" class="block" title="{{language[item.label]||item.label}}" data-index="{{index}}" data-item="{{item}}" arrow hover bind:click="onPicker">
  38. <text slot="description" class="t-class-description">{{item.errorMsg?language[item.errorMsg]||item.errorMsg:''}}</text>
  39. </t-cell>
  40. <!-- 上传 -->
  41. <view wx:if="{{item.type == 'upload'}}" style="padding:10px">
  42. <view class="uploadPanel">
  43. {{language['附件上传']||'附件上传'}}
  44. </view>
  45. <slot style="flex:1" name="attinfos"></slot>
  46. <upload id="upload" originFiles='{{item.originFiles||[]}}' />
  47. </view>
  48. <!-- 时间选择 -->
  49. <t-cell wx:if="{{item.type == 'datepicker'}}" title="{{language[item.label]||item.label}}" hover note="{{item.inputValue}}" arrow data-item="{{item}}" data-index="{{index}}" data-mode="date" bindtap="showDatePicker" t-class="pannel-item" />
  50. <!-- 选择省市县 -->
  51. <t-cell required="{{item.force}}" wx:if="{{item.type == 'cascader'}}" title="{{language[item.label]||item.label}}" data-index="{{index}}" note="{{item.inputValue}}" bind:click="showCascader">
  52. <text slot="description" class="t-class-description">{{item.errorMsg?language['']||item.errorMsg:''}}</text>
  53. </t-cell>
  54. <!-- 跳转链接 -->
  55. <t-cell required="{{item.force}}" wx:if="{{item.type == 'link' && format.isHide(item.hide,formLayoutData.formInfo)}}" title="{{language[item.label]||item.label}}" note="{{item.inputValue}}" url="{{item.url}}" hover arrow>
  56. <text slot="description" class="t-class-description">{{item.errorMsg?language['']||item.errorMsg:''}}</text>
  57. </t-cell>
  58. </view>
  59. <view wx:if="{{!hideBtn}}" style="padding:30px">
  60. <t-button theme="primary" size="medium" disabled="{{disabledStatus}}" bind:tap="formSubmit" block>{{language['提交']||'提 交'}}</t-button>
  61. </view>
  62. <t-picker visible="{{pickerVisible}}" data-key="id" title="{{(language['选择']||'选择') + (language[actPicker.label]||actPicker.label)}}" cancelBtn="{{language['取消']||'取消'}}" confirmBtn="{{language['确认']||'确认'}}" bindconfirm="onPickerConfirm" bindchange="onPickerChange">
  63. <t-picker-item options="{{actPicker.data}}"></t-picker-item>
  64. </t-picker>
  65. <t-date-time-picker title="{{language['选择日期']||'选择日期'}}" visible="{{dateVisible}}" mode="date" value="{{timePickerValue}}" format="YYYY-MM-DD" bindchange="onTimePickerConfirm" />
  66. <t-cascader visible="{{cascaderVisible}}" theme="step" options="{{options}}" value='' title="{{language['请选择地址']||'请选择地址'}}" bind:change="onChange"></t-cascader>
  67. </view>