register.wxml 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <view class="container">
  2. <header text="活动报名" url="{{false}}"></header>
  3. <view class="content">
  4. <view class="register">
  5. <image class="register-img" src="/static/image/register/register-logo.png" mode="aspectFit" />
  6. <view class="from-ul">
  7. <!-- 手机号 -->
  8. <view class="from-li li-m0">
  9. <image class="from-li-img" src="/static/image/register/sjh.png" mode="aspectFit" />
  10. <van-field
  11. model:value="{{formData.phone}}"
  12. bind:input="onInput"
  13. data-field="phone"
  14. type="number"
  15. placeholder="请输入手机号"
  16. border="{{ false }}"
  17. />
  18. <view class="error-text">{{phoneError}}</view>
  19. </view>
  20. <!-- 验证码 -->
  21. <view class="from-li">
  22. <image class="from-li-img" src="/static/image/register/yzm.png" mode="aspectFit" />
  23. <van-field
  24. model:value="{{formData.captcha}}"
  25. bind:input="onInput"
  26. data-field="captcha"
  27. placeholder="请输入验证码"
  28. border="{{ false }}"
  29. >
  30. <view slot="button"
  31. class="from-code {{codeDisabled ? 'disabled' : ''}}"
  32. bindtap="getCode">{{codeText}}
  33. </view>
  34. </van-field>
  35. </view>
  36. <!-- 姓名 -->
  37. <view class="from-li">
  38. <image class="from-li-img img-w" src="/static/image/register/xm.png" mode="aspectFit" />
  39. <van-field
  40. model:value="{{formData.nickname}}"
  41. bind:input="onInput"
  42. data-field="nickname"
  43. placeholder="请输入姓名"
  44. border="{{ false }}"
  45. />
  46. </view>
  47. <!-- 性别选择 -->
  48. <view class="from-li" bindtap="onShowPicker">
  49. <image class="from-li-img img-w" src="/static/image/register/xb.png" mode="aspectFit" />
  50. <van-field
  51. readonly="{{true}}"
  52. model:value="{{formData.gender}}"
  53. placeholder="请选择性别"
  54. border="{{ false }}"
  55. >
  56. <view slot="right-icon">
  57. <van-icon name="arrow-down" class="from-icon" />
  58. </view>
  59. </van-field>
  60. </view>
  61. <!-- 身份证号 -->
  62. <view class="from-li">
  63. <image class="from-li-img img-w1" src="/static/image/register/sfz.png" mode="aspectFit" />
  64. <van-field
  65. model:value="{{formData.race_number}}"
  66. bind:input="onInput"
  67. data-field="race_number"
  68. placeholder="请输入身份证号"
  69. border="{{ false }}"
  70. />
  71. </view>
  72. <!-- 参赛号码 -->
  73. <!-- <view class="from-li">
  74. <image class="from-li-img img-w2" src="/static/image/register/cshm.png" mode="aspectFit" />
  75. <van-field
  76. model:value="{{formData.competition_no}}"
  77. bind:input="onInput"
  78. data-field="competition_no"
  79. placeholder="请输入参赛号码"
  80. border="{{ false }}"
  81. />
  82. </view> -->
  83. <!-- 上传图片 -->
  84. <view class="from-li">
  85. <image class="from-li-img img-w3" src="/static/image/register/sc.png" mode="aspectFit" />
  86. <view class="uploader">
  87. <!-- 已选择文件 -->
  88. <block wx:if="{{filePath}}">
  89. <block wx:if="{{fileType === 'image'}}">
  90. <view class="preview-wrap">
  91. <image src="{{filePath}}" class="preview-img" mode="aspectFit" />
  92. <view class="delete-btn" bindtap="removeFile">
  93. <van-icon name="cross" color="#fff" size="16" class="delete-btn-icon"/>
  94. </view>
  95. </view>
  96. </block>
  97. <block wx:elif="{{fileType === 'pdf'}}">
  98. <view class="preview-wrap-pdf">
  99. <view class="pdf-preview">📄 已选择 PDF 文件</view>
  100. <text class="delete-btn-pdf" bindtap="removeFile">✖</text>
  101. </view>
  102. </block>
  103. </block>
  104. <!-- 未选择文件 -->
  105. <block wx:if="{{!filePath}}">
  106. <view class="uploader-text" bindtap="chooseFile">
  107. <image class="uploader-img" src="/static/image/xj.png" mode="aspectFit"/>
  108. <view>上传图片</view>
  109. </view>
  110. </block>
  111. </view>
  112. </view>
  113. </view>
  114. </view>
  115. <!-- 协议勾选 -->
  116. <view class="agree">
  117. <van-checkbox
  118. checked-color="#000000"
  119. icon-size="28rpx"
  120. value="{{checked}}"
  121. bind:change="onCheckbox"
  122. >
  123. 已读并承诺遵守
  124. </van-checkbox>
  125. <view>
  126. <text class="rules" data-type="rules" bindtap="showAgreement">《活动规则》</text>
  127. <text class="rules" data-type="liability" bindtap="showAgreement">《免责协议》</text>
  128. <text class="rules" data-type="privacy" bindtap="showAgreement">《隐私政策》</text>
  129. </view>
  130. </view>
  131. <!-- 提交按钮 -->
  132. <view
  133. class="submit"
  134. bindtap="onSubmit"
  135. hover-class="{{ canSubmit ? 'btn-hover' : '' }}"
  136. hover-start-time="50"
  137. >
  138. <image class="submit-img {{ canSubmit ? '' : 'disabled' }}" src="/static/image/register/submit.png" mode="aspectFit"/>
  139. </view>
  140. </view>
  141. <!-- 性别选择器 -->
  142. <van-popup show="{{showPicker}}" round position="bottom" close-on-click-overlay="{{false}}">
  143. <van-picker
  144. show-toolbar
  145. columns="{{genders}}"
  146. bind:change="onPickerChange"
  147. bind:cancel="onCancel"
  148. bind:confirm="onConfirm"
  149. />
  150. </van-popup>
  151. <!-- 提交成功弹框 -->
  152. <van-popup class="registration" show="{{showRegistrationSuccess}}" round close-on-click-overlay="{{false}}">
  153. <view class="pop-content">
  154. <image class="pop-img" src="/static/image/register/yhq-logo.png" mode="aspectFit"/>
  155. <image class="pop-yhq" src="/static/image/register/yhq.png" mode="aspectFit"/>
  156. <view class="pop-card">
  157. <image class="pop-card-img" src="/static/image/register/yhq-bg.png" mode="aspectFit"/>
  158. <view class="pop-card-cont">
  159. <view class="pop-card-cont-lf">{{couponInfo.coupon_type}}</view>
  160. <view class="pop-card-cont-ri">
  161. <view class="m-ellipsis">{{couponInfo.coupon_name}}</view>
  162. <view class="pop-time">{{couponInfo.end_time}}到期</view>
  163. </view>
  164. </view>
  165. </view>
  166. <view class="receive" bindtap="onReceive" hover-class="btn-hover" hover-start-time="50">
  167. <image class="receive-img" src="/static/image/register/receive.png" mode="aspectFit"/>
  168. </view>
  169. </view>
  170. </van-popup>
  171. <!-- 协议弹窗 -->
  172. <van-dialog
  173. confirm-button-class="confirm-btn"
  174. use-slot
  175. title="{{agreementTitle}}"
  176. show="{{showAgreementModal}}"
  177. show-cancel-button="{{false}}"
  178. >
  179. <view class="dialog-box">
  180. <rich-text nodes="{{agreementContent}}" />
  181. </view>
  182. </van-dialog>
  183. </view>