register.wxml 7.3 KB

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