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() {
  386. self.$util.msg('授权失败', 2000)
  387. }
  388. })
  389. },
  390. async userAccountRegister(params) {
  391. // 注册
  392. try{
  393. this.isSubLoading = true
  394. await this.UserService.userAccountRegister(params)
  395. wxLogin.wxLoginAuthorize()
  396. this.isSubLoading = false
  397. this.modal1 = true
  398. }catch(error){
  399. this.$util.msg(error.msg, 2000)
  400. this.isSubLoading = false
  401. }
  402. },
  403. storeUpdataeStatus(data) {
  404. uni.setStorageSync('token', data.token)
  405. this.$store.commit('updateStatus', data)
  406. this.login(data)
  407. },
  408. getMobileCodeFn() {
  409. // 点击获取短信验证码
  410. if (this.params.bindMobile == '') {
  411. this.$util.msg('请输入手机号', 2000)
  412. return
  413. }
  414. if (!this.$reg.isMobile(this.params.bindMobile)) {
  415. this.$util.msg('请输入正确的手机号', 2000)
  416. return
  417. }
  418. this.codeParams.mobile = this.params.bindMobile
  419. this.getMobileCode(this.codeParams)
  420. },
  421. async getMobileCode(params){
  422. //获取短信
  423. try{
  424. this.isMobileDisabled = true
  425. await this.PublicService.GetRegisterMobileCode(params)
  426. this.$util.msg('验证短信已发送', 2000)
  427. const TIME_COUNT = 60
  428. if (!this.mobilTime) {
  429. this.mobilCount = TIME_COUNT
  430. this.isMobileDisabled = true
  431. this.mobilTime = setInterval(() => {
  432. if (this.mobilCount > 1 && this.mobilCount <= TIME_COUNT) {
  433. this.mobilCount--
  434. this.mobileCodeText = this.mobilCount + 's重新发送'
  435. } else {
  436. this.isMobileDisabled = false
  437. clearInterval(this.mobilTime)
  438. this.mobilTime = null
  439. this.mobileCodeText = '获取验证码'
  440. }
  441. }, 1000)
  442. }
  443. }catch(error){
  444. this.$util.msg(error.msg, 2000)
  445. this.isMobileDisabled = false
  446. }
  447. },
  448. // 三级联动选择
  449. showMulLinkageThreePicker() {
  450. this.isShowInput = true
  451. this.$refs.mpvueCityPicker.show()
  452. },
  453. onConfirm(e) {
  454. this.handleAddress = e.name
  455. this.params.townId = e.townCode
  456. this.params.cityId = e.cityCode
  457. this.params.provinceId = e.provinceCode
  458. },
  459. onTextareaInput(e) {
  460. //文本框获取焦点
  461. this.params.address = e.detail.value
  462. },
  463. showTextareaFocus() {
  464. //文本框获取焦点
  465. this.isShowInput = false
  466. this.textareaFocus = true
  467. },
  468. hideTextareaFocus() {
  469. //文本框失去焦点
  470. this.isShowInput = true
  471. this.textareaFocus = false
  472. },
  473. //上传
  474. async uploadFileImage(type){
  475. try{
  476. const res = await uploadFileImage()
  477. const data = JSON.parse(res.data).data
  478. switch (type){
  479. case 1:
  480. this.params.businessLicense = data
  481. break;
  482. case 2:
  483. this.params.shopPhoto = data
  484. break;
  485. case 3:
  486. this.params.medicalPracticeLicense = data
  487. break;
  488. }
  489. }catch(error){
  490. console.log('error',error)
  491. }
  492. },
  493. //预览
  494. handleViewImage(url) {
  495. this.isPreviewImage = true
  496. let mentuzArray = []
  497. mentuzArray.push(url)
  498. uni.previewImage({
  499. urls: mentuzArray,
  500. current: 0
  501. })
  502. },
  503. //删除
  504. handleDelete(type){
  505. switch (type){
  506. case 1:
  507. this.$util.modal('', '确定删除营业执照图片吗?', '确定', '取消', true, () => {
  508. this.params.businessLicense = ''
  509. })
  510. break;
  511. case 2:
  512. this.$util.modal('', '确定删除门头照图片吗?', '确定', '取消', true, () => {
  513. this.params.shopPhoto = ''
  514. })
  515. break;
  516. case 3:
  517. this.$util.modal('', '确定删除资质图片吗?', '确定', '取消', true, () => {
  518. this.params.medicalPracticeLicense = ''
  519. })
  520. break;
  521. }
  522. },
  523. handleClick(e) {
  524. //确认
  525. if (e.index == 1) {
  526. uni.navigateBack()
  527. }
  528. this.modal = false
  529. },
  530. handleClick1(){
  531. setTimeout(()=>{
  532. this.$api.switchTabTo('/pages/tabBar/user/user')
  533. },1000)
  534. }
  535. },
  536. onShow() {
  537. if (this.isPreviewImage) {
  538. this.isPreviewImage = false
  539. return
  540. }
  541. }
  542. }
  543. </script>
  544. <style lang="scss">
  545. .register {
  546. width: 100%;
  547. height: 100%;
  548. box-sizing: border-box;
  549. background-size: contain;
  550. .register-tabs{
  551. width: 100%;
  552. height: 40rpx;
  553. box-sizing: border-box;
  554. padding:0 160rpx;
  555. margin: 110rpx 0 40rpx 0;
  556. .tabs-item{
  557. float: left;
  558. line-height: 40rpx;
  559. font-size: $font-size-30;
  560. color: #B2B2B2;
  561. .iconfont{
  562. font-size: 40rpx;
  563. }
  564. &.active{
  565. color: $color-system;
  566. }
  567. &.line{
  568. width: 50rpx;
  569. height: 40rpx;
  570. margin: 0 20rpx;
  571. .iconfont{
  572. font-size: 58rpx;
  573. }
  574. }
  575. }
  576. }
  577. .register-main {
  578. width: 100%;
  579. height: auto;
  580. position: relative;
  581. .register-consult {
  582. width: 110rpx;
  583. height: 68rpx;
  584. background: linear-gradient(223deg, rgba(225, 86, 21, 0.6) 0%, rgba(225, 86, 10, 0.3) 100%);
  585. border-radius: 34rpx 0 0 34rpx;
  586. position: absolute;
  587. right: 0;
  588. bottom: 120rpx;
  589. text-align: left;
  590. line-height: 68rpx;
  591. padding-left: 20rpx;
  592. .icon-kefunv {
  593. font-size: 48rpx;
  594. color: #31313b;
  595. float: left;
  596. }
  597. .text {
  598. font-size: $font-size-24;
  599. display: block;
  600. float: left;
  601. width: 60rpx;
  602. line-height: 30rpx;
  603. color: #ffffff;
  604. margin-top: 6rpx;
  605. }
  606. }
  607. &.detailed {
  608. padding-bottom: 330rpx;
  609. }
  610. .register-row {
  611. width: 100%;
  612. height: auto;
  613. padding: 0 24rpx;
  614. margin-bottom: 30rpx;
  615. box-sizing: border-box;
  616. &.none {
  617. margin-bottom: 0;
  618. }
  619. .register-from {
  620. width: 100%;
  621. height: 80rpx;
  622. background: #ffffff;
  623. position: relative;
  624. border-bottom: 1px solid #e1e1e1;
  625. .label {
  626. text-align: left;
  627. font-size: $font-size-28;
  628. color: #666666;
  629. line-height: 80rpx;
  630. float: left;
  631. text{
  632. color: #F85050;
  633. }
  634. }
  635. .row-input {
  636. width: 440rpx;
  637. padding-left: 24rpx;
  638. font-size: $font-size-28;
  639. color: $text-color;
  640. line-height: 80rpx;
  641. float: left;
  642. height: 80rpx;
  643. box-sizing: border-box;
  644. &.none {
  645. color: #999999;
  646. }
  647. &.code {
  648. width: 330rpx;
  649. }
  650. }
  651. .row-btn {
  652. width: 180rpx;
  653. height: 64rpx;
  654. float: left;
  655. background: $btn-confirm;
  656. padding: 0;
  657. border-radius: 32rpx;
  658. .row-input {
  659. width: 180rpx;
  660. height: 64rpx;
  661. line-height: 64rpx;
  662. padding: 0;
  663. color: #ffffff;
  664. background: $btn-confirm;
  665. text-align: center;
  666. border-radius: 32rpx;
  667. font-size: 24rpx;
  668. &.none {
  669. background: #f7f7f7;
  670. }
  671. }
  672. &.disabled {
  673. background: #f7f7f7;
  674. .row-input {
  675. background: #f7f7f7;
  676. color: #999999;
  677. font-size: 24rpx;
  678. }
  679. }
  680. }
  681. &.btn {
  682. margin-top: 0;
  683. }
  684. }
  685. .icon-xiangyou {
  686. width: 88rpx;
  687. height: 88rpx;
  688. position: absolute;
  689. right: 0;
  690. top: 0;
  691. line-height: 88rpx;
  692. text-align: center;
  693. }
  694. &.text-textarea {
  695. background: #ffffff;
  696. .textarea {
  697. width: 100%;
  698. height: 120rpx;
  699. padding:24rpx 0 ;
  700. font-size: $font-size-28;
  701. color: $text-color;
  702. z-index: 1;
  703. border-bottom: 1px solid #e1e1e1;
  704. }
  705. .textarea.hide {
  706. opacity: 0;
  707. }
  708. .textarea.show {
  709. color: #999999;
  710. }
  711. }
  712. }
  713. .register-picture {
  714. width: 100%;
  715. height: auto;
  716. float: left;
  717. .label {
  718. float: left;
  719. font-size: $font-size-28;
  720. color: $text-color;
  721. line-height: 80rpx;
  722. width: 100%;
  723. text-align: left;
  724. text{
  725. color: #F85050;
  726. }
  727. }
  728. .upload-picture {
  729. float: left;
  730. height: auto;
  731. .upload-none {
  732. width: 210rpx;
  733. height: 210rpx;
  734. border: 1px dashed #B2B2B2;
  735. border-radius: 10rpx;
  736. display: flex;
  737. justify-content: center;
  738. flex-direction: column;
  739. align-items: center;
  740. font-size: $font-size-28;
  741. color: #B2B2B2;
  742. line-height: 50rpx;
  743. .iconfont {
  744. font-size: $font-size-28;
  745. }
  746. }
  747. .upload-image {
  748. width: 210rpx;
  749. height: 210rpx;
  750. border-radius: 10rpx;
  751. margin: 0 20rpx;
  752. position: relative;
  753. image {
  754. width: 210rpx;
  755. height: 210rpx;
  756. border-radius: 10rpx;
  757. }
  758. .upload-del {
  759. width: 40rpx;
  760. height: 40rpx;
  761. position: absolute;
  762. top: -20rpx;
  763. right: -20rpx;
  764. line-height: 40rpx;
  765. text-align: center;
  766. .iconfont {
  767. font-size: $font-size-40;
  768. color: #F85050;
  769. }
  770. }
  771. }
  772. }
  773. }
  774. .register-input {
  775. width: 654rpx;
  776. height: 40rpx;
  777. padding: 24rpx;
  778. margin: 0 auto;
  779. margin-bottom: 60rpx;
  780. background: #f7f7f7;
  781. border-radius: 14rpx;
  782. .input {
  783. width: 100%;
  784. height: 100%;
  785. background: #f7f7f7;
  786. font-size: $font-size-28;
  787. line-height: 40rpx;
  788. color: #333333;
  789. border-radius: 14rpx;
  790. }
  791. }
  792. .register-btn {
  793. width: 100%;
  794. height: 88rpx;
  795. border-radius: 44rpx;
  796. font-size: $font-size-28;
  797. line-height: 88rpx;
  798. color: #ffffff;
  799. margin: 40rpx auto;
  800. text-align: center;
  801. background: $btn-confirm;
  802. &.none {
  803. background: #FFF4E6;
  804. color: $color-system;
  805. margin-top: 0;
  806. }
  807. }
  808. }
  809. }
  810. .tui-alert-box {
  811. width: 100%;
  812. height: 100%;
  813. display: flex;
  814. align-items: center;
  815. justify-content: center;
  816. flex-direction: column;
  817. position: fixed;
  818. left: 0;
  819. top: 0;
  820. opacity: 1;
  821. background: rgba(51, 51, 51, 0.5);
  822. z-index: 99999;
  823. .tui-alert-content {
  824. width: 580rpx;
  825. height: 324rpx;
  826. border-radius: 16rpx;
  827. background-color: #ffffff;
  828. position: absolute;
  829. top: 0;
  830. bottom: 0;
  831. right: 0;
  832. left: 0;
  833. margin: auto;
  834. .tui-alert-main {
  835. width: 100%;
  836. height: 234rpx;
  837. box-sizing: border-box;
  838. padding: 60rpx 30rpx;
  839. line-height: 60rpx;
  840. font-size: $font-size-26;
  841. color: #666666;
  842. text-align: justify;
  843. .red {
  844. color: #F3B574;
  845. }
  846. }
  847. .tui-alert-btn {
  848. width: 100%;
  849. height: 90rpx;
  850. box-sizing: border-box;
  851. line-height: 90rpx;
  852. background: $btn-confirm;
  853. color: #ffffff;
  854. text-align: center;
  855. font-size: $font-size-28;
  856. border-radius: 0 0 16rpx 16rpx;
  857. }
  858. }
  859. }
  860. .tui-modal-custom {
  861. text-align: center;
  862. }
  863. .tui-modal-custom-text {
  864. font-size: 30rpx;
  865. color: #333;
  866. padding: 30rpx 0 50rpx;
  867. }
  868. .tui-button-custom{
  869. width: 420rpx;
  870. height: 84rpx;
  871. line-height: 84rpx;
  872. text-align: center;
  873. color: #FFFFFF;
  874. background: $btn-confirm;
  875. font-size: $font-size-28;
  876. margin: 15rpx auto;
  877. border-radius: 42rpx;
  878. }
  879. .tui-prompt-title {
  880. padding-bottom: 20rpx;
  881. font-size: 34rpx;
  882. }
  883. </style>