register.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892
  1. <template>
  2. <view class="container register" :style="{ paddingTop: CustomBar + 'px' }">
  3. <cu-custom :navbar-data="nvabarData" @navigateBack="modal = true"></cu-custom>
  4. <view class="register-tabs">
  5. <view class="tabs-item" :class="stepNum === 0 ? 'active' : '' ">
  6. <text class="iconfont icon-1_round_solid"></text>
  7. <text>账户信息</text>
  8. </view>
  9. <view class="tabs-item line">
  10. <text class="iconfont icon-hr"></text>
  11. </view>
  12. <view class="tabs-item" :class="stepNum === 1 ? 'active' : '' ">
  13. <text class="iconfont icon-2_round_solid"></text>
  14. <text>机构信息</text>
  15. </view>
  16. </view>
  17. <view class="register-main clearfix" v-if="stepNum === 0">
  18. <view class="register-row clearfix">
  19. <view class="register-from">
  20. <view class="label">手机号:</view>
  21. <input
  22. class="row-input"
  23. type="number"
  24. name="input"
  25. v-model="params.bindMobile"
  26. placeholder="请输入手机号"
  27. maxlength="11"
  28. />
  29. </view>
  30. </view>
  31. <view class="register-row clearfix">
  32. <view class="register-from">
  33. <view class="label">短信验证码:</view>
  34. <input
  35. class="row-input code"
  36. type="text"
  37. v-model="params.smsCode"
  38. placeholder="请输入验证码"
  39. maxlength="6"
  40. />
  41. <view class="row-btn" :class="[isMobileDisabled ? 'disabled' : '']">
  42. <button
  43. class="row-input"
  44. type="button"
  45. @click.stop="getMobileCodeFn"
  46. :disabled="isMobileDisabled"
  47. >
  48. {{ mobileCodeText }}
  49. </button>
  50. </view>
  51. </view>
  52. </view>
  53. <view class="register-row clearfix">
  54. <view class="register-from">
  55. <view class="label">登录密码:</view>
  56. <input
  57. class="row-input"
  58. type="password"
  59. name="input"
  60. v-model="params.password"
  61. placeholder="密码必须为8-16位字母数字组合"
  62. maxlength="16"
  63. />
  64. </view>
  65. </view>
  66. <view class="register-row clearfix">
  67. <view class="register-from">
  68. <view class="label">确认密码:</view>
  69. <input
  70. class="row-input"
  71. type="password"
  72. name="input"
  73. v-model="params.passWordConfirm"
  74. placeholder="请确认密码"
  75. maxlength="16"
  76. />
  77. </view>
  78. </view>
  79. <view class="register-main clearfix" style="margin-top: 180rpx;">
  80. <view class="register-row ">
  81. <view class="register-btn sub" @click.stop="handleCheckRegist">下一步</view>
  82. </view>
  83. </view>
  84. </view>
  85. <view class="register-main clearfix" v-if="stepNum === 1">
  86. <view class="register-row clearfix">
  87. <view class="register-from">
  88. <view class="label"><text>*</text>联系人</view>
  89. <input
  90. class="row-input"
  91. type="text"
  92. v-model="params.linkMan"
  93. placeholder="请输入联系姓名"
  94. placeholder-class="placeholder"
  95. maxlength="6"
  96. />
  97. </view>
  98. </view>
  99. <view class="register-row clearfix">
  100. <view class="register-from">
  101. <view class="label"><text>*</text>机构名称</view>
  102. <input
  103. class="row-input"
  104. type="text"
  105. v-model="params.name"
  106. placeholder="请输入您的机构名称"
  107. placeholder-class="placeholder"
  108. maxlength="30"
  109. />
  110. </view>
  111. </view>
  112. <view class="register-row clearfix">
  113. <view class="register-from" @click="showMulLinkageThreePicker">
  114. <view class="label"><text>*</text>机构地址</view>
  115. <text class="row-input" :class="handleAddress === '请选择机构所在地区' ? 'none' : ''">
  116. {{ handleAddress }}
  117. </text>
  118. <text class="iconfont icon-xiangyou"></text>
  119. </view>
  120. </view>
  121. <view class="register-row text-textarea clearfix">
  122. <view
  123. class="textarea"
  124. v-if="isShowInput"
  125. placeholder-class="placeholder"
  126. @click="showTextareaFocus"
  127. >{{
  128. params.address ? params.address : '详细地址:如道路、门牌号、小区等'
  129. }}</view
  130. >
  131. <textarea
  132. v-else
  133. class="textarea"
  134. type="text"
  135. v-model="params.address"
  136. placeholder="详细地址:如道路、门牌号、小区等"
  137. placeholder-class="placeholder"
  138. maxlength="25"
  139. @input="onTextareaInput"
  140. @focus="textareaFocus"
  141. @blur="hideTextareaFocus"
  142. :class="isShowInput ? '' : ''"
  143. />
  144. </view>
  145. <view class="register-row clearfix">
  146. <view class="register-picture">
  147. <view class="label"><text>*</text>营业执照</view>
  148. <view class="upload-picture">
  149. <view class="upload-none" v-if="!params.businessLicense" @click="uploadFileImage(1)">
  150. <text class="iconfont icon-shangchuantupian"></text>
  151. <text>选择图片</text>
  152. </view>
  153. <view class="upload-image" v-else>
  154. <image :src="params.businessLicense" mode="" @click="handleViewImage(params.businessLicense)"></image>
  155. <view class="upload-del" @click="handleDelete(1)">
  156. <text class="iconfont icon-shanchu"></text>
  157. </view>
  158. </view>
  159. </view>
  160. </view>
  161. </view>
  162. <view class="register-row clearfix">
  163. <view class="register-picture">
  164. <view class="label"><text>*</text>医疗执业许可证</view>
  165. <view class="upload-picture">
  166. <view class="upload-none" v-if="!params.medicalPracticeLicense" @click="uploadFileImage(3)">
  167. <text class="iconfont icon-shangchuantupian"></text>
  168. <text>选择图片</text>
  169. </view>
  170. <view class="upload-image" v-else>
  171. <image :src="params.medicalPracticeLicense" mode="" @click="handleViewImage(params.medicalPracticeLicense)"></image>
  172. <view class="upload-del" @click="handleDelete(3)">
  173. <text class="iconfont icon-shanchu"></text>
  174. </view>
  175. </view>
  176. </view>
  177. </view>
  178. </view>
  179. <view class="register-row ">
  180. <view class="register-btn sub" @click.stop="handleConfirm">提交审核</view>
  181. <view class="register-btn sub none" @click.stop="handleStep(0)">上一步</view>
  182. </view>
  183. </view>
  184. <!-- 地址 -->
  185. <mpvue-city-picker
  186. :themeColor="themeColor"
  187. ref="mpvueCityPicker"
  188. :pickerValueDefault="cityPickerValueDefault"
  189. @onCancel="onCancel"
  190. @onConfirm="onConfirm"
  191. >
  192. </mpvue-city-picker>
  193. <!-- 提交审核提示弹窗 -->
  194. <tui-modal :show="modal1" @cancel="modal1 = false" :custom="true" fadeIn >
  195. <view class="tui-modal-custom">
  196. <view class="tui-prompt-title">提交成功!</view>
  197. <view class="tui-modal-custom-text">您的资料将会在1-3个工作日内进行审核,审核通过后才能进行采购。</view>
  198. <view class="tui-button-custom" @click="handleClick1"> 确定 </view>
  199. </view>
  200. </tui-modal>
  201. <!-- 弹窗提示 -->
  202. <tui-modal
  203. :show="modal"
  204. @click="handleClick"
  205. @cancel="modal = false"
  206. :content="'注册尚未完成,确定放弃注册吗?'"
  207. :button="modalButton"
  208. color="#333"
  209. :size="32"
  210. shape="circle"
  211. :maskClosable="false"
  212. >
  213. </tui-modal>
  214. </view>
  215. </template>
  216. <script>
  217. import { mapState, mapMutations } from 'vuex'
  218. import wxLogin from '@/common/config/wxLogin.js'
  219. import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
  220. import { uploadFileImage } from '@/services/public.js'
  221. export default {
  222. components: {
  223. mpvueCityPicker
  224. },
  225. data() {
  226. return {
  227. CustomBar: this.CustomBar, // 顶部导航栏高度
  228. nvabarData: {
  229. //顶部自定义导航
  230. showCapsule: 1, // 是否显示左上角图标 1表示显示 0表示不显示,
  231. showSearch: 0,
  232. title: '机构注册', // 导航栏 中间的标题
  233. haveBack: true,
  234. textLeft: this.$store.state.isIphone
  235. },
  236. isPreviewImage: false, // 预览图片开关
  237. modal1:false, // 提交弹窗控制
  238. modal:false,
  239. modalButton: [
  240. {
  241. text: '取消',
  242. type: 'gray',
  243. plain: true //是否空心
  244. },
  245. {
  246. text: '确认',
  247. customStyle: {
  248. color: '#fff',
  249. bgColor: '#F3B574'
  250. },
  251. plain: false
  252. }
  253. ],
  254. stepNum:0,
  255. textareaFocus: false,
  256. isMobileDisabled: false, //手机验证码按钮控制
  257. mobilCount: '', //倒计时
  258. mobileCodeText: '获取验证码',
  259. mobilTime: null,
  260. params: {
  261. bindMobile: '',
  262. password: '',
  263. passWordConfirm: '',
  264. smsCode: '',
  265. avatarUrl: '',
  266. nickName: '',
  267. unionId: '',
  268. name:'',
  269. provinceId: '',
  270. cityId: '',
  271. townId:'',
  272. address: '',
  273. organizeType:1, //外部商城机构类型 0内部机构 1外部机构
  274. shopPhoto:'',
  275. businessLicense:'',
  276. medicalPracticeLicense:'',
  277. },
  278. codeParams:{
  279. mobile: '',
  280. isCheckCaptcha: 1,
  281. activateCodeType: 8,
  282. platformType: 2
  283. },
  284. handleAddress:'请选择机构所在地区',
  285. isCheckedCode:false,
  286. isSubLoading:false
  287. }
  288. },
  289. onLoad(option) {},
  290. computed: {
  291. ...mapState(['isWxAuthorize'])
  292. },
  293. methods: {
  294. ...mapMutations(['login', 'wxLogin']),
  295. // 切换
  296. handleStep(step) {
  297. this.stepNum = step
  298. },
  299. async handleCheckRegist(){
  300. if(this.isCheckedCode){
  301. this.stepNum = 1
  302. }else{
  303. try{
  304. this.handleCheck()
  305. await this.UserService.checkRegisterClub(this.params)
  306. this.isCheckedCode = true
  307. this.stepNum = 1
  308. }catch(error){
  309. this.$util.msg(error.msg, 2000)
  310. }
  311. }
  312. },
  313. handleCheck() {
  314. if (this.params.bindMobile == '') {
  315. this.$util.msg('请输入手机号', 2000)
  316. return
  317. }
  318. if (!this.$reg.isMobile(this.params.bindMobile)) {
  319. this.$util.msg('手机格式不正确', 2000)
  320. return
  321. }
  322. if (this.params.smsCode == '') {
  323. this.$util.msg('请输入手机验证码', 2000)
  324. return
  325. }
  326. if (!this.$reg.isMobileCode(this.params.smsCode)) {
  327. this.$util.msg('验证码格式不正确', 2000)
  328. return
  329. }
  330. if (this.params.password == '') {
  331. this.$util.msg('请输入密码', 2000)
  332. return
  333. }
  334. if (!this.$reg.checkPwd(this.params.password)) {
  335. this.$util.msg('密码必须为8-16位字母数字的组合', 2000)
  336. return
  337. }
  338. if (this.params.passWordConfirm == '') {
  339. this.$util.msg('请再次确认密码', 2000)
  340. return
  341. }
  342. if (this.params.passWordConfirm !== this.params.password) {
  343. this.$util.msg('两次输入的密码不一致', 2000)
  344. return
  345. }
  346. },
  347. handleConfirm(){
  348. // 提交审核
  349. if(this.isSubLoading) { return }
  350. if (this.params.name == '') {
  351. this.$util.msg('请输入机构名称', 2000)
  352. return
  353. }
  354. if (this.params.townId == '') {
  355. this.$util.msg('请选择机构地址', 2000)
  356. return
  357. }
  358. if (this.params.addressDetail == '') {
  359. this.$util.msg('请填写机构详细地址', 2000)
  360. return
  361. }
  362. if (this.params.businessLicense == '') {
  363. this.$util.msg('请上传营业执照', 2000)
  364. return
  365. }
  366. if (this.params.medicalPracticeLicense == '') {
  367. this.$util.msg('请上传医疗执业许可证', 2000)
  368. return
  369. }
  370. this.params.unionId = uni.getStorageSync('unionId')
  371. this.userProfile()
  372. },
  373. userProfile() {
  374. //获取用户微信个人信息
  375. const self = this
  376. wx.getUserProfile({
  377. desc: '丽格集采商城获取您的信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
  378. success(res) {
  379. console.log('微信获取用户信息新API', res)
  380. self.wxLogin(res.userInfo)
  381. self.params.nickName = res.userInfo.nickName
  382. self.params.avatarUrl = res.userInfo.avatarUrl
  383. self.userAccountRegister(self.params)
  384. },
  385. fail(error) {
  386. console.log('error', error)
  387. self.$util.msg('授权失败', 2000)
  388. }
  389. })
  390. },
  391. async userAccountRegister(params) {
  392. // 注册
  393. try{
  394. this.isSubLoading = true
  395. await this.UserService.userAccountRegister(params)
  396. wxLogin.wxLoginAuthorize()
  397. this.isSubLoading = false
  398. this.modal1 = true
  399. }catch(error){
  400. this.$util.msg(error.msg, 2000)
  401. this.isSubLoading = false
  402. }
  403. },
  404. storeUpdataeStatus(data) {
  405. uni.setStorageSync('token', data.token)
  406. this.$store.commit('updateStatus', data)
  407. this.login(data)
  408. },
  409. getMobileCodeFn() {
  410. // 点击获取短信验证码
  411. if (this.params.bindMobile == '') {
  412. this.$util.msg('请输入手机号', 2000)
  413. return
  414. }
  415. if (!this.$reg.isMobile(this.params.bindMobile)) {
  416. this.$util.msg('请输入正确的手机号', 2000)
  417. return
  418. }
  419. this.codeParams.mobile = this.params.bindMobile
  420. this.getMobileCode(this.codeParams)
  421. },
  422. async getMobileCode(params){
  423. //获取短信
  424. try{
  425. this.isMobileDisabled = true
  426. await this.PublicService.GetRegisterMobileCode(params)
  427. this.$util.msg('验证短信已发送', 2000)
  428. const TIME_COUNT = 60
  429. if (!this.mobilTime) {
  430. this.mobilCount = TIME_COUNT
  431. this.isMobileDisabled = true
  432. this.mobilTime = setInterval(() => {
  433. if (this.mobilCount > 1 && this.mobilCount <= TIME_COUNT) {
  434. this.mobilCount--
  435. this.mobileCodeText = this.mobilCount + 's重新发送'
  436. } else {
  437. this.isMobileDisabled = false
  438. clearInterval(this.mobilTime)
  439. this.mobilTime = null
  440. this.mobileCodeText = '获取验证码'
  441. }
  442. }, 1000)
  443. }
  444. }catch(error){
  445. this.$util.msg(error.msg, 2000)
  446. this.isMobileDisabled = false
  447. }
  448. },
  449. // 三级联动选择
  450. showMulLinkageThreePicker() {
  451. this.isShowInput = true
  452. this.$refs.mpvueCityPicker.show()
  453. },
  454. onConfirm(e) {
  455. this.handleAddress = e.name
  456. this.params.townId = e.townCode
  457. this.params.cityId = e.cityCode
  458. this.params.provinceId = e.provinceCode
  459. },
  460. onTextareaInput(e) {
  461. //文本框获取焦点
  462. this.params.address = e.detail.value
  463. },
  464. showTextareaFocus() {
  465. //文本框获取焦点
  466. this.isShowInput = false
  467. this.textareaFocus = true
  468. },
  469. hideTextareaFocus() {
  470. //文本框失去焦点
  471. this.isShowInput = true
  472. this.textareaFocus = false
  473. },
  474. //上传
  475. async uploadFileImage(type){
  476. try{
  477. const res = await uploadFileImage()
  478. const data = JSON.parse(res.data).data
  479. switch (type){
  480. case 1:
  481. this.params.businessLicense = data
  482. break;
  483. case 2:
  484. this.params.shopPhoto = data
  485. break;
  486. case 3:
  487. this.params.medicalPracticeLicense = data
  488. break;
  489. }
  490. }catch(error){
  491. console.log('error',error)
  492. }
  493. },
  494. //预览
  495. handleViewImage(url) {
  496. this.isPreviewImage = true
  497. let mentuzArray = []
  498. mentuzArray.push(url)
  499. uni.previewImage({
  500. urls: mentuzArray,
  501. current: 0
  502. })
  503. },
  504. //删除
  505. handleDelete(type){
  506. switch (type){
  507. case 1:
  508. this.$util.modal('', '确定删除营业执照图片吗?', '确定', '取消', true, () => {
  509. this.params.businessLicense = ''
  510. })
  511. break;
  512. case 2:
  513. this.$util.modal('', '确定删除门头照图片吗?', '确定', '取消', true, () => {
  514. this.params.shopPhoto = ''
  515. })
  516. break;
  517. case 3:
  518. this.$util.modal('', '确定删除资质图片吗?', '确定', '取消', true, () => {
  519. this.params.medicalPracticeLicense = ''
  520. })
  521. break;
  522. }
  523. },
  524. handleClick(e) {
  525. //确认
  526. if (e.index == 1) {
  527. uni.navigateBack()
  528. }
  529. this.modal = false
  530. },
  531. handleClick1(){
  532. setTimeout(()=>{
  533. this.$api.switchTabTo('/pages/tabBar/user/user')
  534. },1000)
  535. }
  536. },
  537. onShow() {
  538. if (this.isPreviewImage) {
  539. this.isPreviewImage = false
  540. return
  541. }
  542. }
  543. }
  544. </script>
  545. <style lang="scss">
  546. .register {
  547. width: 100%;
  548. height: 100%;
  549. box-sizing: border-box;
  550. background-size: contain;
  551. .register-tabs{
  552. width: 100%;
  553. height: 40rpx;
  554. box-sizing: border-box;
  555. padding:0 160rpx;
  556. margin: 110rpx 0 40rpx 0;
  557. .tabs-item{
  558. float: left;
  559. line-height: 40rpx;
  560. font-size: $font-size-30;
  561. color: #B2B2B2;
  562. .iconfont{
  563. font-size: 40rpx;
  564. }
  565. &.active{
  566. color: $color-system;
  567. }
  568. &.line{
  569. width: 50rpx;
  570. height: 40rpx;
  571. margin: 0 20rpx;
  572. .iconfont{
  573. font-size: 58rpx;
  574. }
  575. }
  576. }
  577. }
  578. .register-main {
  579. width: 100%;
  580. height: auto;
  581. position: relative;
  582. .register-consult {
  583. width: 110rpx;
  584. height: 68rpx;
  585. background: linear-gradient(223deg, rgba(225, 86, 21, 0.6) 0%, rgba(225, 86, 10, 0.3) 100%);
  586. border-radius: 34rpx 0 0 34rpx;
  587. position: absolute;
  588. right: 0;
  589. bottom: 120rpx;
  590. text-align: left;
  591. line-height: 68rpx;
  592. padding-left: 20rpx;
  593. .icon-kefunv {
  594. font-size: 48rpx;
  595. color: #31313b;
  596. float: left;
  597. }
  598. .text {
  599. font-size: $font-size-24;
  600. display: block;
  601. float: left;
  602. width: 60rpx;
  603. line-height: 30rpx;
  604. color: #ffffff;
  605. margin-top: 6rpx;
  606. }
  607. }
  608. &.detailed {
  609. padding-bottom: 330rpx;
  610. }
  611. .register-row {
  612. width: 100%;
  613. height: auto;
  614. padding: 0 24rpx;
  615. margin-bottom: 30rpx;
  616. box-sizing: border-box;
  617. &.none {
  618. margin-bottom: 0;
  619. }
  620. .register-from {
  621. width: 100%;
  622. height: 80rpx;
  623. background: #ffffff;
  624. position: relative;
  625. border-bottom: 1px solid #e1e1e1;
  626. .label {
  627. text-align: left;
  628. font-size: $font-size-28;
  629. color: #666666;
  630. line-height: 80rpx;
  631. float: left;
  632. text{
  633. color: #F85050;
  634. }
  635. }
  636. .row-input {
  637. width: 440rpx;
  638. padding-left: 24rpx;
  639. font-size: $font-size-28;
  640. color: $text-color;
  641. line-height: 80rpx;
  642. float: left;
  643. height: 80rpx;
  644. box-sizing: border-box;
  645. &.none {
  646. color: #999999;
  647. }
  648. &.code {
  649. width: 330rpx;
  650. }
  651. }
  652. .row-btn {
  653. width: 180rpx;
  654. height: 64rpx;
  655. float: left;
  656. background: $btn-confirm;
  657. padding: 0;
  658. border-radius: 32rpx;
  659. .row-input {
  660. width: 180rpx;
  661. height: 64rpx;
  662. line-height: 64rpx;
  663. padding: 0;
  664. color: #ffffff;
  665. background: $btn-confirm;
  666. text-align: center;
  667. border-radius: 32rpx;
  668. font-size: 24rpx;
  669. &.none {
  670. background: #f7f7f7;
  671. }
  672. }
  673. &.disabled {
  674. background: #f7f7f7;
  675. .row-input {
  676. background: #f7f7f7;
  677. color: #999999;
  678. font-size: 24rpx;
  679. }
  680. }
  681. }
  682. &.btn {
  683. margin-top: 0;
  684. }
  685. }
  686. .icon-xiangyou {
  687. width: 88rpx;
  688. height: 88rpx;
  689. position: absolute;
  690. right: 0;
  691. top: 0;
  692. line-height: 88rpx;
  693. text-align: center;
  694. }
  695. &.text-textarea {
  696. background: #ffffff;
  697. .textarea {
  698. width: 100%;
  699. height: 120rpx;
  700. padding:24rpx 0 ;
  701. font-size: $font-size-28;
  702. color: $text-color;
  703. z-index: 1;
  704. border-bottom: 1px solid #e1e1e1;
  705. }
  706. .textarea.hide {
  707. opacity: 0;
  708. }
  709. .textarea.show {
  710. color: #999999;
  711. }
  712. }
  713. }
  714. .register-picture {
  715. width: 100%;
  716. height: auto;
  717. float: left;
  718. .label {
  719. float: left;
  720. font-size: $font-size-28;
  721. color: $text-color;
  722. line-height: 80rpx;
  723. width: 100%;
  724. text-align: left;
  725. text{
  726. color: #F85050;
  727. }
  728. }
  729. .upload-picture {
  730. float: left;
  731. height: auto;
  732. .upload-none {
  733. width: 210rpx;
  734. height: 210rpx;
  735. border: 1px dashed #B2B2B2;
  736. border-radius: 10rpx;
  737. display: flex;
  738. justify-content: center;
  739. flex-direction: column;
  740. align-items: center;
  741. font-size: $font-size-28;
  742. color: #B2B2B2;
  743. line-height: 50rpx;
  744. .iconfont {
  745. font-size: $font-size-28;
  746. }
  747. }
  748. .upload-image {
  749. width: 210rpx;
  750. height: 210rpx;
  751. border-radius: 10rpx;
  752. margin: 0 20rpx;
  753. position: relative;
  754. image {
  755. width: 210rpx;
  756. height: 210rpx;
  757. border-radius: 10rpx;
  758. }
  759. .upload-del {
  760. width: 40rpx;
  761. height: 40rpx;
  762. position: absolute;
  763. top: -20rpx;
  764. right: -20rpx;
  765. line-height: 40rpx;
  766. text-align: center;
  767. .iconfont {
  768. font-size: $font-size-40;
  769. color: #F85050;
  770. }
  771. }
  772. }
  773. }
  774. }
  775. .register-input {
  776. width: 654rpx;
  777. height: 40rpx;
  778. padding: 24rpx;
  779. margin: 0 auto;
  780. margin-bottom: 60rpx;
  781. background: #f7f7f7;
  782. border-radius: 14rpx;
  783. .input {
  784. width: 100%;
  785. height: 100%;
  786. background: #f7f7f7;
  787. font-size: $font-size-28;
  788. line-height: 40rpx;
  789. color: #333333;
  790. border-radius: 14rpx;
  791. }
  792. }
  793. .register-btn {
  794. width: 100%;
  795. height: 88rpx;
  796. border-radius: 44rpx;
  797. font-size: $font-size-28;
  798. line-height: 88rpx;
  799. color: #ffffff;
  800. margin: 40rpx auto;
  801. text-align: center;
  802. background: $btn-confirm;
  803. &.none {
  804. background: #FFF4E6;
  805. color: $color-system;
  806. margin-top: 0;
  807. }
  808. }
  809. }
  810. }
  811. .tui-alert-box {
  812. width: 100%;
  813. height: 100%;
  814. display: flex;
  815. align-items: center;
  816. justify-content: center;
  817. flex-direction: column;
  818. position: fixed;
  819. left: 0;
  820. top: 0;
  821. opacity: 1;
  822. background: rgba(51, 51, 51, 0.5);
  823. z-index: 99999;
  824. .tui-alert-content {
  825. width: 580rpx;
  826. height: 324rpx;
  827. border-radius: 16rpx;
  828. background-color: #ffffff;
  829. position: absolute;
  830. top: 0;
  831. bottom: 0;
  832. right: 0;
  833. left: 0;
  834. margin: auto;
  835. .tui-alert-main {
  836. width: 100%;
  837. height: 234rpx;
  838. box-sizing: border-box;
  839. padding: 60rpx 30rpx;
  840. line-height: 60rpx;
  841. font-size: $font-size-26;
  842. color: #666666;
  843. text-align: justify;
  844. .red {
  845. color: #F3B574;
  846. }
  847. }
  848. .tui-alert-btn {
  849. width: 100%;
  850. height: 90rpx;
  851. box-sizing: border-box;
  852. line-height: 90rpx;
  853. background: $btn-confirm;
  854. color: #ffffff;
  855. text-align: center;
  856. font-size: $font-size-28;
  857. border-radius: 0 0 16rpx 16rpx;
  858. }
  859. }
  860. }
  861. .tui-modal-custom {
  862. text-align: center;
  863. }
  864. .tui-modal-custom-text {
  865. font-size: 30rpx;
  866. color: #333;
  867. padding: 30rpx 0 50rpx;
  868. }
  869. .tui-button-custom{
  870. width: 420rpx;
  871. height: 84rpx;
  872. line-height: 84rpx;
  873. text-align: center;
  874. color: #FFFFFF;
  875. background: $btn-confirm;
  876. font-size: $font-size-28;
  877. margin: 15rpx auto;
  878. border-radius: 42rpx;
  879. }
  880. .tui-prompt-title {
  881. padding-bottom: 20rpx;
  882. font-size: 34rpx;
  883. }
  884. </style>