register.wxml 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <view class="container">
  2. <header text="活动报名" url="{{false}}"></header>
  3. <view class="content">
  4. <view class="register">
  5. <image class="register-img" src="{{baseUrl + '/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 class="error-text">{{raceNumberError}}</view>
  72. </van-field>
  73. </view>
  74. <!-- 参赛号码 -->
  75. <!-- <view class="from-li">
  76. <image class="from-li-img img-w2" src="/static/image/register/cshm.png" mode="aspectFit" />
  77. <van-field
  78. model:value="{{formData.competition_no}}"
  79. bind:input="onInput"
  80. data-field="competition_no"
  81. placeholder="请输入参赛号码"
  82. border="{{ false }}"
  83. />
  84. </view> -->
  85. <!-- 上传图片 -->
  86. <view class="from-li">
  87. <image class="from-li-img img-w3" src="/static/image/register/sc.png" mode="aspectFit" />
  88. <view class="uploader">
  89. <!-- 已选择文件 -->
  90. <block wx:if="{{filePath}}">
  91. <block wx:if="{{fileType === 'image'}}">
  92. <view class="preview-wrap">
  93. <image src="{{filePath}}" class="preview-img" mode="aspectFill" data-src="{{filePath}}" bindtap="previewImage"/>
  94. <view class="delete-btn" bindtap="removeFile">
  95. <van-icon name="cross" color="#fff" size="16" class="delete-btn-icon"/>
  96. </view>
  97. </view>
  98. </block>
  99. <block wx:elif="{{fileType === 'pdf'}}">
  100. <view class="preview-wrap-pdf">
  101. <view class="pdf-preview">📄 已选择 PDF 文件</view>
  102. <text class="delete-btn-pdf" bindtap="removeFile">✖</text>
  103. </view>
  104. </block>
  105. </block>
  106. <!-- 未选择文件 -->
  107. <block wx:if="{{!filePath}}">
  108. <view class="uploader-text" bindtap="chooseFile">
  109. <image class="uploader-img" src="/static/image/xj.png" mode="aspectFit"/>
  110. <view>历史完赛证明上传</view>
  111. </view>
  112. </block>
  113. </view>
  114. </view>
  115. </view>
  116. </view>
  117. <!-- 协议勾选 -->
  118. <view class="agree">
  119. <van-checkbox
  120. checked-color="#000000"
  121. icon-size="28rpx"
  122. value="{{checked}}"
  123. bind:change="onCheckbox"
  124. >
  125. 已读并承诺遵守
  126. </van-checkbox>
  127. <view>
  128. <text class="rules" data-type="rules" bindtap="showAgreement">《活动规则》</text>
  129. <text class="rules" data-type="liability" bindtap="showAgreement">《免责协议》</text>
  130. <text class="rules" data-type="privacy" bindtap="showAgreement">《隐私政策》</text>
  131. </view>
  132. </view>
  133. <!-- 提交按钮 -->
  134. <view
  135. class="submit"
  136. bindtap="onSubmit"
  137. hover-class="{{ canSubmit ? 'btn-hover' : '' }}"
  138. hover-start-time="50"
  139. >
  140. <image class="submit-img {{ canSubmit ? '' : 'disabled' }}" src="/static/image/register/submit.png" mode="aspectFit"/>
  141. </view>
  142. </view>
  143. <!-- 性别选择器 -->
  144. <van-popup show="{{showPicker}}" round position="bottom" close-on-click-overlay="{{false}}">
  145. <van-picker
  146. show-toolbar
  147. columns="{{genders}}"
  148. bind:cancel="onCancel"
  149. bind:confirm="onConfirm"
  150. />
  151. </van-popup>
  152. <!-- 提交成功弹框 -->
  153. <van-popup class="registration" show="{{showRegistrationSuccess}}" round close-on-click-overlay="{{false}}">
  154. <view class="pop-content">
  155. <image class="pop-img" src="{{baseUrl + '/static/image/register/yhq-logo.png'}}" mode="aspectFit"/>
  156. <image class="pop-yhq" src="/static/image/register/yhq.png" mode="aspectFit"/>
  157. <view class="pop-card">
  158. <image class="pop-card-img" src="/static/image/register/yhq-bg.png" mode="aspectFit"/>
  159. <view class="pop-card-cont">
  160. <view class="pop-card-cont-lf">
  161. <image class="canyin-img" src="/static/image/canyin.png" mode="aspectFit"/>
  162. <view>{{couponInfo.coupon_type}}</view>
  163. </view>
  164. <view class="pop-card-cont-ri">
  165. <view class="m-ellipsis">{{couponInfo.coupon_name}}</view>
  166. <view class="pop-time">{{couponInfo.end_time}}到期</view>
  167. </view>
  168. </view>
  169. </view>
  170. <view class="receive" bindtap="onReceive" hover-class="btn-hover" hover-start-time="50">
  171. <image class="receive-img" src="/static/image/register/receive.png" mode="aspectFit"/>
  172. </view>
  173. </view>
  174. </van-popup>
  175. <!-- 协议弹窗 -->
  176. <van-dialog
  177. confirm-button-class="confirm-btn"
  178. use-slot
  179. title="{{agreementTitle}}"
  180. show="{{showAgreementModal}}"
  181. show-cancel-button="{{false}}"
  182. >
  183. <view class="dialog-box">
  184. <rich-text nodes="{{agreementContent}}" />
  185. </view>
  186. </van-dialog>
  187. </view>