sign_up.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791
  1. <template>
  2. <view class="page_body">
  3. <view class="banner_container"><image :src="banner" mode="scaleToFill" class="banner_img" /></view>
  4. <view class="season">
  5. <view class="title">
  6. <image src="../../static/imgs/offline.png" mode="scaleToFill"></image>
  7. <text>第{{ userInfo.season }}届大卫博士创业{{ userInfo.season_type | activityType }}</text>
  8. </view>
  9. <view class="con">
  10. <view class="course_info">
  11. <view style="margin-right:102rpx;">
  12. <text>名额限制:</text>
  13. <text>{{ userInfo.is_limit && userInfo.limit_num ? userInfo.limit_num : '无限制' }}</text>
  14. <text v-if="userInfo.is_limit && userInfo.limit_num">名</text>
  15. </view>
  16. <view>
  17. <text>已报名:</text>
  18. <text class="count">
  19. <text>{{ userInfo.count }}</text>
  20. <text>人</text>
  21. </text>
  22. </view>
  23. </view>
  24. <view class="course_time">
  25. <text>时间:</text>
  26. <text>{{ getTime(userInfo.time_start) }}</text>
  27. <text>-</text>
  28. <text>{{ getTime(userInfo.time_end) }}</text>
  29. </view>
  30. </view>
  31. </view>
  32. <view class="block"></view>
  33. <view class="sign_info">
  34. <view class="user_con">
  35. <view class="user_title">请确认本人信息</view>
  36. <view class="info_fixed">
  37. <view class="info_con">
  38. <view class="label">昵称:</view>
  39. <view class="label_con">{{ userInfo.nickname }}</view>
  40. </view>
  41. <view class="info_con">
  42. <view class="label">手机号:</view>
  43. <view class="label_con">{{ userInfo.phone }}</view>
  44. </view>
  45. <view class="info_con">
  46. <view class="label">代理级别:</view>
  47. <view class="label_con">{{ userInfo.level }}</view>
  48. </view>
  49. </view>
  50. <view class="dynamic_info">
  51. <view class="info_con">
  52. <view class="label">
  53. <text>性别: </text>
  54. <text class="star">*</text>
  55. </view>
  56. <view class="label_con">
  57. <radio-group @change="e => signedInfo.sex = Number(e.detail.value)">
  58. <view
  59. v-for="(sex, i) in sexList"
  60. :key="i"
  61. class="radio_con"
  62. >
  63. <radio
  64. :value="sex"
  65. :checked="signedInfo.sex === sex"
  66. :disabled="signedRevise.sex"
  67. />
  68. <text>{{ sex ? '女' : '男' }}</text>
  69. </view>
  70. </radio-group>
  71. </view>
  72. </view>
  73. <view class="info_con">
  74. <view class="label">
  75. <text>身份证号: </text>
  76. <text class="star">*</text>
  77. </view>
  78. <view class="label_con">
  79. <textarea
  80. v-model="signedInfo.id_code"
  81. :disabled="signedRevise.id_code"
  82. auto-height
  83. placeholder='请输入身份证号'
  84. :class="brand ? 'textareaIp' : ''"
  85. maxlength="18"
  86. />
  87. </view>
  88. </view>
  89. <view class="info_con">
  90. <view class="label">
  91. <text>来自哪里: </text>
  92. <text class="star">*</text>
  93. </view>
  94. <template v-if="signedRevise.province">
  95. <view class="label_con">
  96. {{ baseInfo_region.join('-') }}
  97. </view>
  98. </template>
  99. <template v-else>
  100. <picker
  101. mode="region"
  102. :value="baseInfo_region"
  103. @change="RegionChange2"
  104. >
  105. <view class="picker flexB">
  106. <view class="address_name">
  107. <text v-if="baseInfo_region[0] != null">
  108. {{ baseInfo_region.join('-') }}
  109. </text>
  110. <text v-else>省-市-区</text>
  111. </view>
  112. <text class="iconfont iconyoujiantou" style="color:#999;"></text>
  113. </view>
  114. </picker>
  115. </template>
  116. </view>
  117. <view class="info_con">
  118. <view class="label">
  119. <text>详细地址</text>
  120. <text class="star">*</text>
  121. </view>
  122. <view class="label_con">
  123. <textarea
  124. v-model="signedInfo.detail"
  125. :disabled="signedRevise.detail"
  126. auto-height
  127. placeholder="请输入详细地址"
  128. :class="brand ? 'textareaIp' : ''"
  129. />
  130. </view>
  131. </view>
  132. <view class="info_con">
  133. <view class="label">
  134. <text>参加次数: </text>
  135. <text class="star">*</text>
  136. </view>
  137. <view class="label_con">
  138. <input
  139. v-model="join_num"
  140. :disabled="Number(userInfo.season_type) ? Boolean(signedRevise.join_two_num) : Boolean(signedRevise.join_one_num)"
  141. type="number"
  142. placeholder="请输入参加次数"
  143. />
  144. </view>
  145. </view>
  146. </view>
  147. <view class="dynamic_info" v-if="formList.length > 0">
  148. <view class="info_con" v-for="(item, idx) in formList" :key="item.id">
  149. <view class="label">
  150. <text>{{ item.form_name }}</text>
  151. <text class="star">*</text>
  152. </view>
  153. <radio-group @change="radioChange($event, item.id, idx)" v-if="item.style == 1">
  154. <label v-for="(temp, index) in item.form_value" :key="index">
  155. <view class="radio_con">
  156. <radio
  157. :value="temp"
  158. :checked="item.form_default === temp"
  159. />
  160. <!-- :disabled="signedInfo.sex && item.form_name === '性别'" -->
  161. <!-- :checked="index === current" -->
  162. <text>{{ temp }}</text>
  163. </view>
  164. </label>
  165. </radio-group>
  166. <checkbox-group @change="checkboxChange($event, item.id, idx)" v-if="item.style == 2">
  167. <label v-for="(temp, index) in item.form_value" :key="index">
  168. <view class="check_con">
  169. <checkbox :value="index" />
  170. <text>{{ item.form_value[index] }}</text>
  171. </view>
  172. </label>
  173. </checkbox-group>
  174. <view v-if="item.style == 3" class="label_con">
  175. <textarea
  176. v-model="item.form_default"
  177. auto-height
  178. :placeholder="'请输入' + item.form_name"
  179. :class="brand ? 'textareaIp' : ''"
  180. />
  181. </view>
  182. <template v-if="item.style === 4">
  183. <picker
  184. mode="region"
  185. @change="RegionChange($event, item.id, idx)"
  186. :value="region"
  187. >
  188. <view class="picker flexB">
  189. <view class="address_name">
  190. <text v-if="region[0] != null">
  191. {{ region.join('-') }}
  192. </text>
  193. <text v-else>省-市-区</text>
  194. </view>
  195. <text class="iconfont iconyoujiantou" style="color:#999;"></text>
  196. </view>
  197. </picker>
  198. <view>
  199. <view class="label">
  200. <text>详细地址</text>
  201. <text class="star">*</text>
  202. </view>
  203. <view class="label_con">
  204. <textarea
  205. auto-height
  206. placeholder="请输入详细地址"
  207. v-model="address"
  208. :class="brand ? 'textareaIp' : ''"
  209. />
  210. </view>
  211. </view>
  212. </template>
  213. </view>
  214. </view>
  215. </view>
  216. </view>
  217. <view class="submit_container">
  218. <view
  219. @click.stop="toSignUp"
  220. class="sign_up flexC"
  221. >
  222. 支付¥{{ userInfo.cost }} 报名
  223. </view>
  224. </view>
  225. </view>
  226. </template>
  227. <script>
  228. import { toSign, poyStatus, getFrom, subFrom, userSignUpInfo } from '../../api/sign.js';
  229. export default {
  230. data() {
  231. return {
  232. userInfo: {}, //用户信息
  233. payStatus: true, //支付按钮是否能点击
  234. tab_type: 1, //tab切换 1 信息填写 2 课程介绍 3报名须知
  235. formList: [], //问题列表
  236. params: {
  237. id: [],
  238. value: []
  239. },
  240. banner: '', //banner图
  241. region: [], //地址区域选择
  242. address: '', //详细地址
  243. state: '', //订阅消息状态
  244. brand: false, //手机品牌
  245. signedInfo: {},
  246. signedRevise: {},
  247. sexList: [0, 1],
  248. baseInfo_region: [],
  249. join_num: ''
  250. };
  251. },
  252. onLoad(options) {
  253. this.banner = options.banner;
  254. this.getFrom()
  255. },
  256. onShow() {
  257. this.getSystem();
  258. if (!uni.getStorageSync('token')) {
  259. uni.showModal({
  260. content: '登录过期,请重新登录',
  261. showCancel: false,
  262. success: res => {
  263. if (res.confirm) {
  264. uni.switchTab({
  265. url: '../index/index'
  266. });
  267. }
  268. }
  269. });
  270. }
  271. this.userInfo = uni.getStorageSync('userInfo');
  272. if (+this.userInfo.season_type === 1) {
  273. uni.setNavigationBarTitle({
  274. title: '密训营报名'
  275. });
  276. } else {
  277. uni.setNavigationBarTitle({
  278. title: '实战营报名'
  279. });
  280. }
  281. this.getFormSignedInfo()
  282. },
  283. methods: {
  284. // 报名
  285. async toSignUp() {
  286. const f = this.checkError()
  287. if(!f) return false
  288. const res = await uni.getSetting({ withSubscriptions: true })
  289. const go = () => {
  290. const f_len = this.formList.length
  291. f_len ? this.formSign() : this.toSubmitNoOther()
  292. }
  293. let s;
  294. try {
  295. const [, { subscriptionsSetting: { itemSettings: _s } }] = await uni.getSetting({ withSubscriptions: true })
  296. s = _s
  297. } catch(e) {
  298. go()
  299. return false
  300. }
  301. const tmplIds = [
  302. 'BTmiw1Lr630I5ADYVX8Pzy75e4M7OmtgUBcCPVj7CKo',
  303. 'dgL9BVJ65H7aeGJuQB3J9H3EqlqYsN2GRj_wWrGLVkQ',
  304. '__-SjTtxTWmfAVwOyy7J9WXBuu8P7pJsJOXM6xCDSWw',
  305. ]
  306. const t_alen = tmplIds.length
  307. let t_len = 0
  308. if(s) {
  309. const s_k = Object.keys(s)
  310. const s_v = Object.values(s)
  311. t_len = tmplIds.filter(id => s_k.indexOf(id) !== -1).length
  312. }
  313. if(!s || t_len !== t_alen) {
  314. uni.requestSubscribeMessage({
  315. tmplIds,
  316. success(res) {
  317. console.log(res)
  318. const _o = Object.assign({}, res)
  319. Reflect.deleteProperty(_o, 'errMsg')
  320. const a_len = Object.values(_o).filter(s => s === 'accept').length
  321. if(a_len !== t_alen){
  322. uni.showModal({
  323. title: '提示',
  324. content: '请选择订阅服务,以便我们通知您活动信息',
  325. showCancel: false
  326. })
  327. } else {
  328. go()
  329. }
  330. },
  331. fail() {
  332. uni.showModal({
  333. title: '失败',
  334. content: '打开订阅服务失败',
  335. showCancel: false
  336. })
  337. }
  338. })
  339. } else {
  340. go()
  341. }
  342. },
  343. // 错误检测
  344. checkError() {
  345. const em = new Map([
  346. [1, '请选择您的性别'],
  347. [2, '请填写您的身份证号'],
  348. [3, '请填写真实的身份证号'],
  349. [4, '请选择您来自哪里'],
  350. [5, '请填写您的详细地址'],
  351. [6, '请填写您参加的次数'],
  352. [7, '请正确填写您参加的次数']
  353. ])
  354. const e_fn = s => {
  355. uni.showModal({
  356. title:'提示',
  357. content: em.get(s),
  358. showCancel: false
  359. })
  360. return false
  361. }
  362. const { sex, id_code, detail } = this.signedInfo
  363. if(!sex && sex !== 0) return e_fn(1)
  364. if(!id_code) return e_fn(2)
  365. const id_reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
  366. if(!id_reg.test(id_code)) return e_fn(3)
  367. const rlen = this.baseInfo_region.length
  368. if(!rlen) return e_fn(4)
  369. if(!detail) return e_fn(5)
  370. const n = this.join_num
  371. if(!n) return e_fn(6)
  372. const n_reg = /^\d{1,}$/
  373. if(!n_reg.test(n)) return e_fn(7);
  374. return true
  375. },
  376. getFormSignedInfo(cb) {
  377. userSignUpInfo().then(res => {
  378. if(res.code === 200) {
  379. this.signedInfo = res.data
  380. this.join_num = Number(this.userInfo.season_type) ? String(res.data.join_two_num) : String(res.data.join_one_num)
  381. if(res.data.province) {
  382. this.baseInfo_region = [res.data.province, res.data.city, res.data.area]
  383. }
  384. Object.keys(res.data).forEach(k => {
  385. this.signedRevise[k] = res.data[k] === 0
  386. })
  387. cb && cb(res.data)
  388. }
  389. })
  390. },
  391. //获取手机版本动态设置textarea的padinng值 解决安卓机跟ios的textarea的高度不一致
  392. getSystem() {
  393. uni.getSystemInfo({
  394. success: res => {
  395. if (res.brand == 'iPhone') {
  396. this.brand = true;
  397. }
  398. }
  399. });
  400. },
  401. RegionChange2(e) {
  402. this.baseInfo_region = e.detail.value;
  403. },
  404. // 区域选择
  405. RegionChange(e, id, idx) {
  406. this.region = e.detail.value;
  407. this.$set(this.formList[idx], 'form_default', e.detail.value);
  408. },
  409. //单选
  410. radioChange(e, id, idx) {
  411. this.$set(this.formList[idx], 'form_default', e.detail.value);
  412. },
  413. //多选
  414. checkboxChange(e, id, idx) {
  415. this.$set(this.formList[idx], 'form_default', e.detail.value);
  416. },
  417. // 获取要填写的表单名称
  418. getFrom() {
  419. getFrom().then(res => {
  420. if (res.code == 200) {
  421. let list = res.data.list;
  422. list.map(i => {
  423. this.$set(i, 'form_default', '');
  424. });
  425. this.formList = list;
  426. } else {
  427. uni.showModal({
  428. content: res.message || '请求失败',
  429. showCancel: false
  430. });
  431. }
  432. });
  433. },
  434. /*提交表单
  435. * @params id 获取的表单label的id
  436. * @params value 与表单label对应的value值
  437. * @params address 详细地址
  438. */
  439. formSign() {
  440. let that = this;
  441. let id = [];
  442. let value = [];
  443. if (this.formList) {
  444. let list = this.formList;
  445. for (var i = 0; i < list.length; i++) {
  446. if (list[i].style == 4 && !this.address) {
  447. uni.showModal({
  448. content: '详细地址不能为空',
  449. showCancel: false
  450. });
  451. return false;
  452. }
  453. if (!list[i].form_default) {
  454. uni.showModal({
  455. content: list[i].form_name + '不能为空',
  456. showCancel: false
  457. });
  458. break;
  459. }
  460. if (list[i].get_verify.value) {
  461. let reg = new RegExp(list[i].get_verify.value);
  462. if (!reg.test(list[i].form_default)) {
  463. uni.showModal({
  464. content: `${list[i].form_name}要求为: ${list[i].get_verify.name}` || list[i].form_name + '格式不正确',
  465. showCancel: false
  466. });
  467. return false;
  468. }
  469. }
  470. id.push(list[i].id);
  471. value.push(list[i].form_default);
  472. }
  473. if (id.length == this.formList.length && value.length == this.formList.length) {
  474. subFrom({
  475. id,
  476. value,
  477. address: this.address || this.signedInfo.detail,
  478. base_info: {
  479. region: this.baseInfo_region,
  480. id_code: this.signedInfo.id_code,
  481. detail: this.signedInfo.detail,
  482. sex: this.signedInfo.sex,
  483. join_one_num: Number(this.userInfo.season_type) ? this.join_num : '',
  484. join_two_num: Number(this.userInfo.season_type) ? this.join_num : ''
  485. }
  486. }).then(res => {
  487. if (res.code == 200) {
  488. this.toPay();
  489. } else {
  490. uni.showModal({
  491. content: res.message || '提交信息失败',
  492. showCancel: false
  493. });
  494. }
  495. });
  496. }
  497. }
  498. },
  499. toSubmitNoOther() {
  500. subFrom({
  501. id: [],
  502. value: [],
  503. address: this.address || this.signedInfo.detail,
  504. base_info: {
  505. region: this.baseInfo_region,
  506. id_code: this.signedInfo.id_code,
  507. detail: this.signedInfo.detail,
  508. sex: this.signedInfo.sex,
  509. join_one_num: Number(this.userInfo.season_type) ? this.join_num : '',
  510. join_two_num: Number(this.userInfo.season_type) ? this.join_num : ''
  511. }
  512. }).then(res => {
  513. if (res.code == 200) {
  514. this.toPay();
  515. } else {
  516. uni.showModal({
  517. content: res.message || '提交信息失败',
  518. showCancel: false
  519. });
  520. }
  521. });
  522. },
  523. // 支付报名
  524. toPay() {
  525. const _this = this
  526. toSign().then(res => {
  527. if (res.code === 200) {
  528. uni.requestPayment({
  529. provider: 'weixin',
  530. ...res.data,
  531. success() {
  532. _this.poyStatus();
  533. },
  534. fail() {
  535. uni.showModal({
  536. title: '失败',
  537. content: '支付失败',
  538. showCancel: false
  539. });
  540. },
  541. complete() {
  542. _this.payStatus = true;
  543. }
  544. });
  545. } else {
  546. uni.showModal({
  547. content: res.message || '报名失败',
  548. showCancel: false
  549. });
  550. _this.payStatus = true;
  551. }
  552. }).catch(e => {
  553. _this.payStatus = true;
  554. });
  555. },
  556. getTime(date) {
  557. if (date != NaN) {
  558. var time = new Date(Number(date) * 1000);
  559. var year = time.getFullYear();
  560. var month = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1;
  561. var day = time.getDate() < 10 ? '0' + time.getDate() : time.getDate();
  562. var nowDate = year + '年' + month + '月' + day + '日';
  563. return nowDate;
  564. }
  565. },
  566. //支付状态
  567. poyStatus() {
  568. poyStatus().then(res => {
  569. console.log(res);
  570. if (res.code == 200) {
  571. uni.redirectTo({
  572. url: '../sign_up_suce/sign_up_suce'
  573. });
  574. }
  575. });
  576. }
  577. }
  578. };
  579. </script>
  580. <style>
  581. page {
  582. height: 100%;
  583. width: 100%;
  584. background-color: #fff;
  585. }
  586. radio .wx-radio-input {
  587. border-radius: 50%;
  588. border: 2rpx solid #999;
  589. background: transparent !important;
  590. width: 40rpx;
  591. height: 40rpx;
  592. }
  593. radio .wx-radio-input.wx-radio-input-checked::before {
  594. border-radius: 100%;
  595. width: 60%;
  596. height: 60%;
  597. content: '';
  598. background-color: #ea4a42;
  599. transform: translate(-50%, -50%) scale(1);
  600. -webkit-transform: translate(-50%, -50%) scale(1);
  601. }
  602. radio .wx-radio-input.wx-radio-input-checked {
  603. border-color: #ea4a42;
  604. }
  605. checkbox .wx-checkbox-input {
  606. border: 2rpx solid #999;
  607. background: transparent !important;
  608. width: 40rpx;
  609. height: 40rpx;
  610. }
  611. checkbox .wx-checkbox-input.wx-checkbox-input-checked {
  612. border-color: #ea4a42;
  613. }
  614. checkbox .wx-checkbox-input.wx-checkbox-input-checked::before {
  615. width: 60%;
  616. height: 60%;
  617. background: #ea4a42;
  618. content: '';
  619. transform: translate(-50%, -50%) scale(1);
  620. -webkit-transform: translate(-50%, -50%) scale(1);
  621. }
  622. </style>
  623. <style lang="scss" scoped>
  624. .block {
  625. height: 15rpx;
  626. width: 100%;
  627. background-color: #f5f5f5;
  628. }
  629. .page_body {
  630. padding-bottom: 200rpx;
  631. overflow-x: hidden;
  632. .banner_container {
  633. width: 730rpx;
  634. height: 369rpx;
  635. margin: 0 auto;
  636. .banner_img {
  637. width: 100%;
  638. height: 100%;
  639. }
  640. }
  641. .season {
  642. width: 100%;
  643. padding: 20rpx 30rpx;
  644. box-sizing: box-sizing;
  645. .title {
  646. display: flex;
  647. align-items: center;
  648. font-size: 36rpx;
  649. color: #333;
  650. font-weight: 500;
  651. image {
  652. height: 44rpx;
  653. width: 44rpx;
  654. font-size: 32rpx;
  655. color: #333;
  656. margin-right: 17rpx;
  657. }
  658. }
  659. .course_info {
  660. display: flex;
  661. .count {
  662. font-weight: bold;
  663. font-size: 28rpx;
  664. color: #ea4a41;
  665. }
  666. }
  667. .course_info > view,
  668. .course_time {
  669. display: flex;
  670. align-items: center;
  671. font-size: 26rpx;
  672. color: #333;
  673. &::before {
  674. content: '';
  675. display: block;
  676. width: 10rpx;
  677. height: 10rpx;
  678. border-radius: 50%;
  679. margin-right: 14rpx;
  680. background-color: #ea4a41;
  681. }
  682. }
  683. .course_time,
  684. .course_info {
  685. margin-top: 33rpx;
  686. }
  687. }
  688. .sign_info {
  689. width: 100%;
  690. background: #fff;
  691. .user_con {
  692. width: 90%;
  693. margin: 0 auto;
  694. .user_title {
  695. font-size: 32rpx;
  696. color: #333;
  697. padding: 35rpx 0rpx;
  698. text-align: center;
  699. font-weight: bold;
  700. }
  701. .label {
  702. font-size: 28rpx;
  703. margin: 30rpx 0 20rpx;
  704. .star {
  705. color: #f00;
  706. margin-left: 10rpx;
  707. font-size: 40rpx;
  708. }
  709. }
  710. .label_con {
  711. font-size: 32rpx;
  712. font-weight: 600;
  713. padding-bottom: 15rpx;
  714. image {
  715. height: 40rpx;
  716. width: 40rpx;
  717. margin-right: 10rpx;
  718. flex-shrink: 0;
  719. }
  720. }
  721. textarea {
  722. width: 100%;
  723. padding: 10rpx 0;
  724. }
  725. .textareaIp {
  726. padding: 0;
  727. }
  728. .info_con {
  729. border-bottom: 1rpx solid #bfbfbf;
  730. .picker {
  731. display: flex;
  732. align-items: center;
  733. min-height: 82rpx;
  734. border-bottom: 1rpx solid #bfbfbf;
  735. .address_name {
  736. width: 90%;
  737. text {
  738. font-size: 32rpx;
  739. font-weight: 600;
  740. }
  741. }
  742. image {
  743. height: 37rpx;
  744. width: 39rpx;
  745. }
  746. }
  747. .check_con,
  748. .radio_con {
  749. width: 100%;
  750. display: flex;
  751. justify-content: flex-start;
  752. align-items: center;
  753. padding-bottom: 15rpx;
  754. text {
  755. font-size: 32rpx;
  756. font-weight: 600;
  757. margin-left: 20rpx;
  758. }
  759. }
  760. }
  761. }
  762. }
  763. .submit_container {
  764. width: 100%;
  765. position: fixed;
  766. left: 0;
  767. bottom: 0;
  768. z-index: 9999;
  769. height: 118rpx;
  770. background-color: #fff;
  771. .sign_up {
  772. width: 690rpx;
  773. height: 90rpx;
  774. margin: 0 auto;
  775. background-color: #ea4a41;
  776. font-size: 36rpx;
  777. border-radius: 45rpx;
  778. color: #ffffff;
  779. }
  780. }
  781. }
  782. </style>