register.vue 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042
  1. <template>
  2. <view class="container register">
  3. <view class="register-tab">
  4. <view class="nav-item" :class="{ current: tabCurrentIndex === 1 }" >
  5. 账户信息<view class="line"></view>
  6. </view>
  7. <view class="nav-item" :class="{ current: tabCurrentIndex === 2 }" >
  8. 基本信息<view class="line"></view>
  9. </view>
  10. <view class="nav-item" :class="{ current: tabCurrentIndex === 3 }" >
  11. 详细信息
  12. </view>
  13. </view>
  14. <view class="register-main clearfix" v-if="tabCurrentIndex === 1">
  15. <view class="register-row clearfix">
  16. <view class="register-from">
  17. <view class="label">邮箱:</view>
  18. <input class="row-input" type="text" v-model="registerEmail" placeholder="请输入您的常用邮箱" maxlength="30"/>
  19. </view>
  20. </view>
  21. <view class="register-row clearfix">
  22. <view class="register-from code">
  23. <view class="label">邮箱验证码:</view>
  24. <input class="row-input" type="text" v-model="regEmailCode" placeholder="请输入邮箱验证码" maxlength="6"/>
  25. </view>
  26. <view class="register-from btn" :class="[isDisabled === true ? 'disabled' : 'none']">
  27. <button class="row-input" type="button" @click.stop="getEmailCode" :disabled="isDisabled">获取验证码</button>
  28. </view>
  29. </view>
  30. <view class="register-row clearfix">
  31. <view class="register-from">
  32. <view class="label">登录密码:</view>
  33. <input class="row-input" type="password" v-model="password" placeholder="密码必须为8-16位字母数字组合" maxlength="20"/>
  34. </view>
  35. </view>
  36. <view class="register-row clearfix">
  37. <view class="register-from">
  38. <view class="label">确认密码:</view>
  39. <input class="row-input" type="password" v-model="passwordCheck" placeholder="请确认密码" maxlength="20"/>
  40. </view>
  41. </view>
  42. <view class="register-row clearfix">
  43. <view class="register-btn" @click="steps(2)">下一步</view>
  44. </view>
  45. </view>
  46. <view class="register-main clearfix" v-if="tabCurrentIndex === 2">
  47. <view class="register-row clearfix">
  48. <view class="register-from">
  49. <view class="label">机构名称:</view>
  50. <input class="row-input" type="text" v-model="clubName" placeholder="请输入您的机构名称" maxlength="30"/>
  51. </view>
  52. </view>
  53. <view class="register-row clearfix">
  54. <view class="register-from">
  55. <view class="label">联系人:</view>
  56. <input class="row-input" type="text" v-model="clubContact" placeholder="请输入联系姓名" maxlength="6"/>
  57. </view>
  58. </view>
  59. <view class="register-row clearfix">
  60. <view class="register-from">
  61. <view class="label">手机号:</view>
  62. <input class="row-input" type="number" v-model="registerEmail" placeholder="请输入手机号" maxlength="11"/>
  63. </view>
  64. </view>
  65. <view class="register-row clearfix">
  66. <view class="register-from imgcode">
  67. <view class="label">图形验证码:</view>
  68. <input class="row-input" type="text" v-model="regEmailCode" placeholder="请输入图形验证码" maxlength="6"/>
  69. </view>
  70. <view class="register-from img-btn">
  71. <view class="vscodeimg">
  72. <image src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2158189919,2752757953&fm=26&gp=0.jpg" mode=""></image>
  73. </view>
  74. <view class="vscod-refresh">
  75. <text class="iconfont icon-shuaxin"></text>
  76. <text class="ref-text">刷新</text>
  77. </view>
  78. </view>
  79. </view>
  80. <view class="register-row clearfix">
  81. <view class="register-from code">
  82. <view class="label">短信验证码:</view>
  83. <input class="row-input" type="text" v-model="regEmailCode" placeholder="请输入短信验证码" maxlength="6"/>
  84. </view>
  85. <view class="register-from btn" :class="[isDisabled === true ? 'disabled' : 'none']">
  86. <button class="row-input" type="button" @click.stop="getEmailCode" :disabled="isDisabled">获取验证码</button>
  87. </view>
  88. </view>
  89. <view class="register-row clearfix">
  90. <view class="register-btn" @click="steps(3)">下一步</view>
  91. </view>
  92. <view class="register-row clearfix">
  93. <view class="register-btn none" @click="steps(1)">上一步</view>
  94. </view>
  95. </view>
  96. <view class="register-main detailed clearfix" v-if="tabCurrentIndex === 3">
  97. <view class="register-tips"><text class="iconfont icon-gantanhao-yuankuang">详细信息请尽量填写,有利于快速审核通过</text></view>
  98. <view class="register-row clearfix">
  99. <view class="register-from">
  100. <view class="label">机构简称:</view>
  101. <input class="row-input" type="text" v-model="clubContact" placeholder="请输入您的机构简称" maxlength="16"/>
  102. </view>
  103. </view>
  104. <view class="register-row clearfix">
  105. <view class="register-from" @click="showMulLinkageThreePicker">
  106. <view class="label">机构地址:</view>
  107. <text class="row-input" :class="addressData.address === '请选择机构所在地区' ? 'none' : ''">
  108. {{addressData.address}}
  109. </text>
  110. <text class="iconfont icon-xiayibu"></text>
  111. </view>
  112. </view>
  113. <view class="register-row text-textarea clearfix">
  114. <view class="textarea show" v-if="isShowInput">{{addressData.addressDetail ? addressData.addressDetail :'详细地址:如道路、门牌号、小区等'}}</view>
  115. <textarea v-else
  116. class="textarea"
  117. type="text"
  118. v-model="addressData.addressDetail"
  119. placeholder="详细地址:如道路、门牌号、小区等"
  120. placeholder-class="placeholder"
  121. maxlength="50"
  122. @input="onTextareaInput"
  123. :class="isShowInput ? '':''"
  124. />
  125. </view>
  126. <view class="register-row clearfix">
  127. <view class="register-from">
  128. <view class="label">营业执照编号:</view>
  129. <input class="row-input" type="text" v-model="clubContact" placeholder="请填写社会统一信用代码" maxlength="16"/>
  130. </view>
  131. </view>
  132. <view class="register-row clearfix">
  133. <view class="register-picture">
  134. <view class="label">营业执照:</view>
  135. <view class="upload-picture">
  136. <view class="upload-none" v-if="uploadBusinessImage === ''" @click="chooseBusinessImage"><text class="iconfont icon-jiahao"></text></view>
  137. <view class="upload-image" v-else>
  138. <image :src="uploadBusinessImage" mode="" @click="viewBusinessImage"></image>
  139. <view class="upload-del" @click="delBusinessImage">
  140. <text class='iconfont icon-shanchu1'></text>
  141. </view>
  142. </view>
  143. </view>
  144. </view>
  145. </view>
  146. <view class="register-row clearfix">
  147. <view class="register-picture">
  148. <view class="label">门头照:</view>
  149. <view class="upload-picture">
  150. <view class="upload-none" v-if="uploadMentuzImage === ''" @click="chooseMentuzImage"><text class="iconfont icon-jiahao"></text></view>
  151. <view class="upload-image" v-else>
  152. <image :src="uploadMentuzImage" mode="" @click="viewMentuzImage"></image>
  153. <view class="upload-del" @click="delMentuzImage">
  154. <text class='iconfont icon-shanchu1'></text>
  155. </view>
  156. </view>
  157. </view>
  158. </view>
  159. </view>
  160. <view class="register-row clearfix">
  161. <view class="register-from picker">
  162. <view class="label">机构类型:</view>
  163. <picker @change="bindPickerChange" :value="index" :range="organizationTypeList" range-key="name">
  164. <view class="row-input" :class="[isOrganizationType == 0 ? 'none' : '']">{{organizationTypeList[typtIndex].name}}</view>
  165. </picker>
  166. <text class="iconfont icon-xiayibu"></text>
  167. </view>
  168. </view>
  169. <view class="register-row clearfix" v-if="isOrganizationType == 1">
  170. <view class="register-from radio">
  171. <radio-group @change="radioChange">
  172. <label class="row-input" v-for="(item, index) in beautyList" :key="item.value">
  173. <radio class="row-radio" :value="item.value" :checked="index === current" color="#E15616"/>
  174. <view class="row-text">{{item.name}}</view>
  175. </label>
  176. </radio-group>
  177. </view>
  178. </view>
  179. <view class="register-row clearfix" v-show="isDepartment">
  180. <view class="register-from">
  181. <view class="label">科室:</view>
  182. <input class="row-input keshi" type="text" v-model="clubContact" placeholder="请填写经营的科室,至少三个,用逗号隔开" maxlength="16"/>
  183. </view>
  184. </view>
  185. <view class="register-row clearfix" v-if="isOrganizationType == 1">
  186. <view class="register-picture">
  187. <view class="label zz">医疗执业许可证:</view>
  188. <view class="upload-picture">
  189. <view class="upload-none" v-if="uploadMedicalImage === ''" @click="chooseMedicalImage"><text class="iconfont icon-jiahao"></text></view>
  190. <view class="upload-image" v-else>
  191. <image :src="uploadMedicalImage" mode="" @click="viewMedicalImage"></image>
  192. <view class="upload-del" @click="delMedicalImage">
  193. <text class='iconfont icon-shanchu1'></text>
  194. </view>
  195. </view>
  196. </view>
  197. </view>
  198. </view>
  199. <view class="register-row clearfix" v-if="isOrganizationType == 1">
  200. <view class="register-from group">
  201. <view class="label">主营内容:</view>
  202. <checkbox-group class="content-class" @change="chooseMaleLike" >
  203. <label class="item" v-for="(item, index) in mentuzCampList" :key="index" :class="{on: item.checked}">
  204. <checkbox :value="item.value"></checkbox>
  205. <text class="item-text">{{item.name}}</text>
  206. </label>
  207. </checkbox-group>
  208. </view>
  209. <view class="register-from group btn">
  210. <view class="content-class btn">
  211. <view class="item" @click="showAustomItem">
  212. <text class="item-text">其他</text>
  213. </view>
  214. </view>
  215. </view>
  216. <view class="register-from group btn" v-show="isShowAustomItem">
  217. <view class="content-class btn">
  218. <input class="row-input" type="text" v-model="customItemValue" placeholder="请输入自定义项目" @blur="onBlurInput" maxlength="5"/>
  219. <button type="default"
  220. class="confirm-btn"
  221. :class="[isDisabled === true ? 'disabled' : 'none']"
  222. :disabled="isDisabled"
  223. @click.stop="addCustomItem"
  224. >确认添加</button>
  225. </view>
  226. </view>
  227. </view>
  228. <view class="register-row clearfix" v-if="isOrganizationType == 2">
  229. <view class="register-from group">
  230. <view class="label">主营内容:</view>
  231. <checkbox-group class="content-class" @change="chooseMaleLikes">
  232. <label class="item" v-for="(item, index) in medicaCampList" :key="index" :class="{on: item.checked}">
  233. <checkbox :value="item.value"></checkbox>
  234. <text class="item-text">{{item.name}}</text>
  235. </label>
  236. </checkbox-group>
  237. </view>
  238. <view class="register-from group btn">
  239. <view class="content-class btn">
  240. <view class="item" @click="showAustomItem">
  241. <text class="item-text">其他</text>
  242. </view>
  243. </view>
  244. </view>
  245. <view class="register-from group btn" v-show="isShowAustomItem">
  246. <view class="content-class btn">
  247. <input class="row-input" type="text" v-model="customItemValue" placeholder="请输入自定义项目" @blur="onBlurInput" maxlength="5"/>
  248. <button type="default"
  249. class="confirm-btn"
  250. :class="[isDisabled === true ? 'disabled' : 'none']"
  251. :disabled="isDisabled"
  252. @click.stop="addCustomItem"
  253. >确认添加</button>
  254. </view>
  255. </view>
  256. </view>
  257. <view class="register-fiexd clearfix">
  258. <view class="register-agree">
  259. <view class="agree-text" @tap.stop="agreeCheck()">
  260. <button class="checkbox iconfont" :class="[isCheck?'icon-gouxuan':'icon-weigouxuan']"></button>
  261. 我已阅读并同意<text>《机构协议》</text><text>《用户协议》</text>及<text>《隐私权政策》</text>
  262. </view>
  263. </view>
  264. <view class="register-row ">
  265. <view class="register-btn sub">提交审核</view>
  266. </view>
  267. <view class="register-row clearfix">
  268. <view class="register-btn none" @click="steps(2)">上一步</view>
  269. </view>
  270. </view>
  271. <mpvue-city-picker :themeColor="themeColor"
  272. ref="mpvueCityPicker"
  273. :pickerValueDefault="cityPickerValueDefault"
  274. @onCancel="onCancel"
  275. @onConfirm="onConfirm">
  276. </mpvue-city-picker>
  277. </view>
  278. </view>
  279. </template>
  280. <script>
  281. import { mapMutations } from 'vuex';
  282. import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
  283. import uniTag from '@/components/uni-tag/uni-tag.vue';
  284. import authorize from '@/common/config/authorize.js'
  285. import URLCONFIG from '@/common/config/config.js'
  286. var self;
  287. export default{
  288. components:{
  289. uniTag,
  290. mpvueCityPicker
  291. },
  292. data() {
  293. return{
  294. isDisabled:true,
  295. tabCurrentIndex:3,
  296. isShowInput:false,
  297. isCheck:false, //是否全选
  298. uploadBusinessImage:'',
  299. uploadMentuzImage:'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1431188283,1203112303&fm=26&gp=0.jpg',
  300. uploadMedicalImage:'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1431188283,1203112303&fm=26&gp=0.jpg',
  301. isOrganizationType:0,
  302. organizationTypeList:[
  303. {name:'请选择机构类型',value:0},
  304. {name:'医美',value:1},
  305. {name:'生美',value:2}
  306. ],
  307. beautyList:[{value:'1',name:'诊所'},{value:'2',name:'门诊'},{value:'3',name:'医院'}],
  308. mentuzCampList:[{value:'1',name:'整形'},{value:'2',name:'轻医美'},{value:'3',name:'皮肤科'}],
  309. medicaCampList:[
  310. {value:'1',name:'美容'},
  311. {value:'2',name:'美体'},
  312. {value:'3',name:'美发'},
  313. {value:'4',name:'皮肤管理'},
  314. {value:'5',name:'光电'},
  315. {value:'6',name:'综合类'},
  316. {value:'7',name:'中医养生'},
  317. {value:'8',name:'spa'}
  318. ],
  319. typtIndex:0,
  320. organizationType:0,
  321. current:0,
  322. isDepartment:false, //是否显示科室
  323. isShowAustomItem:false, //是否显示其他添加
  324. customItemValue:'', //自定义项目
  325. invitationCode:'', //获取用户登录的邀请码
  326. isToast:false, //控制显示未输入邀请码提示
  327. isUserInfo:false, //控制显示授权弹窗
  328. nickName:'', //存储用户名
  329. userInfo:'', //存储微信用户授权信息
  330. isSuccess:false,
  331. toestText:'',
  332. telPhone:'',
  333. registerType:'', //跳转类型
  334. alertText:'',
  335. listType: '',
  336. listVal: '',
  337. detilType:'',
  338. id:'',//商品ID
  339. addressData:{
  340. addressID:'',
  341. address:'请选择机构所在地区',
  342. userID: '', //用户id ,只在新增收货地址时传
  343. shouHuoRen: '', //收货人
  344. mobile:'', //收货人手机
  345. townID:'', //区ID
  346. addressDetail: '', //地址
  347. defaultFlag:0, //是否默认收货地址(0 不是默认,1 默认)
  348. },
  349. }
  350. },
  351. onLoad(option) {
  352. console.log(option)
  353. self = this;
  354. self.registerType = option.type;
  355. self.id = option.id
  356. if(option.listType) {
  357. self.listType = option.listType;
  358. self.listVal = option.listVal;
  359. }
  360. },
  361. methods:{
  362. ...mapMutations(['register']),
  363. goregister() {
  364. self.$api.get('/register/isEnabled',{userOrganizeID:self.userOrganizeID,invitationCode:self.invitationCode}, res => {
  365. if (res.code == "1") {
  366. //查看此微信用户是否已经授权过
  367. authorize.getSetting().then(res =>{
  368. // console.log('是否已授权',res);//0:为取消授权 1:为已授权 2:为未操作
  369. if(res == 2){
  370. self.isUserInfo = true
  371. }else{
  372. self.isUserInfo = false
  373. self.wxGetUserInfo()
  374. }
  375. })
  376. }else if(res.code =='0'){
  377. self.toestText ='请输入邀请码';
  378. self.alertText ='邀请码';
  379. self.telPhone = res.msg;
  380. self.isToast = true;
  381. }else if(res.code =='-2'){
  382. self.toestText ='邀请码已失效';
  383. self.alertText ='新邀请码';
  384. self.telPhone = res.msg;
  385. self.isToast = true;
  386. }else if(res.code =='-3'){
  387. self.toestText ='邀请码已被使用';
  388. self.alertText ='新邀请码';
  389. self.telPhone = res.msg;
  390. self.isToast = true;
  391. }else{
  392. uni.showToast({icon:'none', title: res.msg, duration: 3000});
  393. self.isUserInfo = false
  394. }
  395. })
  396. },
  397. // 三级联动选择
  398. showMulLinkageThreePicker() {
  399. this.isShowInput = true
  400. this.$refs.mpvueCityPicker.show()
  401. },
  402. onConfirm(e) {
  403. // console.log('地址',e);
  404. this.addressData.address = e.name;
  405. this.addressData.townID = e.cityCode;
  406. },
  407. bindPickerChange(e) {
  408. console.log('picker发送选择改变,携带值为:' + e.target)
  409. this.typtIndex = e.target.value
  410. this.isOrganizationType = e.target.value
  411. },
  412. radioChange(e) {
  413. let _value = e.target.value
  414. if( _value == '2' || _value == '3'){
  415. this.isDepartment = true
  416. }else{
  417. this.isDepartment = false
  418. }
  419. for (let i = 0; i < this.beautyList.length; i++) {
  420. if (this.beautyList[i].value === _value) {
  421. this.current = i;
  422. break;
  423. }
  424. }
  425. },
  426. chooseMaleLike(e){
  427. let items = this.mentuzCampList
  428. let values = e.detail.value
  429. for (var i = 0, lenI = items.length; i < lenI; ++i) {
  430. const item = items[i]
  431. if(values.indexOf(item.value) >= 0){
  432. this.$set(item,'checked',true)
  433. }else{
  434. this.$set(item,'checked',false)
  435. }
  436. }
  437. },
  438. chooseMaleLikes(e){
  439. let items = this.medicaCampList
  440. let values = e.detail.value
  441. for (var i = 0, lenI = items.length; i < lenI; ++i) {
  442. const item = items[i]
  443. if(values.indexOf(item.value) >= 0){
  444. this.$set(item,'checked',true)
  445. }else{
  446. this.$set(item,'checked',false)
  447. }
  448. }
  449. },
  450. onTextareaInput(e){
  451. this.addressData.addressDetail = e.detail.value;
  452. // console.log(this.addressData.addressDetail)
  453. },
  454. chooseBusinessImage() {
  455. let self = this;
  456. uni.chooseImage({
  457. count: 1, //默认1
  458. sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
  459. sourceType: ['album','camera'], //从相册选择
  460. success: (res) => {
  461. const tempFilePaths = res.tempFilePaths;
  462. const uploadTask = uni.uploadFile({
  463. url : 'https://mall-b.caimei365.com/formData/MultiPictareaddData',
  464. filePath: tempFilePaths[0],
  465. name: 'file',
  466. formData: {
  467. 'user': 'test'
  468. },
  469. success: function (data) {
  470. console.log(data.data);
  471. self.uploadBusinessImage = res.tempFilePaths
  472. },
  473. error : function(e){
  474. console.log(e);
  475. }
  476. })
  477. },
  478. })
  479. },
  480. chooseMentuzImage() {
  481. let self = this;
  482. uni.chooseImage({
  483. count: 1, //默认1
  484. sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
  485. sourceType: ['album','camera'], //从相册选择
  486. success: (res) => {
  487. const tempFilePaths = res.tempFilePaths;
  488. const uploadTask = uni.uploadFile({
  489. url : 'https://mall-b.caimei365.com/formData/MultiPictareaddData',
  490. filePath: tempFilePaths[0],
  491. name: 'file',
  492. formData: {
  493. 'user': 'test'
  494. },
  495. success: function (res) {
  496. console.log(res.data);
  497. self.uploadMentuzImage = res.data
  498. },
  499. error : function(e){
  500. console.log(e);
  501. }
  502. })
  503. }
  504. });
  505. },
  506. chooseMedicalImage() {
  507. let self = this;
  508. uni.chooseImage({
  509. count: 1, //默认1
  510. sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
  511. sourceType: ['album','camera'], //从相册选择
  512. success: (res) => {
  513. const tempFilePaths = res.tempFilePaths;
  514. const uploadTask = uni.uploadFile({
  515. url : 'https://mall-b.caimei365.com/formData/MultiPictareaddData',
  516. filePath: tempFilePaths[0],
  517. name: 'file',
  518. formData: {
  519. 'user': 'test'
  520. },
  521. success: function (res) {
  522. console.log(res.data);
  523. self.uploadMedicalImage = res.data
  524. },
  525. error : function(e){
  526. console.log(e);
  527. }
  528. })
  529. }
  530. });
  531. },
  532. viewMentuzImage(e) {
  533. let self = this
  534. uni.previewImage({
  535. urls: self.uploadMentuzImage,
  536. current: e.currentTarget.dataset.url
  537. });
  538. },
  539. viewBusinessImage(e) {
  540. let self = this
  541. uni.previewImage({
  542. urls: self.uploadBusinessImage,
  543. current: e.currentTarget.dataset.url
  544. });
  545. },
  546. viewMedicalImage(e) {
  547. let self = this
  548. uni.previewImage({
  549. urls: self.uploadMedicalImage,
  550. current: e.currentTarget.dataset.url
  551. });
  552. },
  553. delBusinessImage(){
  554. this.uploadBusinessImage = ''
  555. },
  556. delMentuzImage(){
  557. this.uploadMentuzImage = ''
  558. },
  559. delMedicalImage(){
  560. this.uploadMedicalImage = ''
  561. },
  562. agreeCheck() {
  563. this.isCheck = !this.isCheck
  564. },
  565. onBlurInput(e){//
  566. if(e.detail.value ===''){
  567. this.isDisabled = true
  568. }else{
  569. this.isDisabled = false
  570. }
  571. },
  572. getEmailCode(){
  573. this.isDisabled = true
  574. },
  575. showAustomItem() {
  576. this.isShowAustomItem = !this.isShowAustomItem
  577. },
  578. addCustomItem(){
  579. if(this.isOrganizationType == 1){
  580. let item = {value:`${this.mentuzCampList.length+1}`,name:this.customItemValue}
  581. this.mentuzCampList.push(item)
  582. }else{
  583. let item = {value:`${this.medicaCampList.length+1}`,name:this.customItemValue}
  584. this.medicaCampList.push(item)
  585. }
  586. },
  587. steps(index) {//$attrstab切换
  588. console.log(index)
  589. this.tabCurrentIndex = index;
  590. }
  591. }
  592. }
  593. </script>
  594. <style lang="scss">
  595. .register{
  596. width: 100%;
  597. height: auto;
  598. border-top: 1px solid #F7F7F7;
  599. .model-warp.none{
  600. display: none;
  601. }
  602. .model-warp.show{
  603. display: block;
  604. }
  605. .register-tab{
  606. width: 570rpx;
  607. height: 60rpx;
  608. padding: 60rpx 90rpx;
  609. position: relative;
  610. .nav-item{
  611. width: 142rpx;
  612. background: #FFFFFF;
  613. line-height: 60rpx;
  614. border-radius: 30rpx;
  615. text-align: center;
  616. color: #999999;
  617. font-size:$font-size-sb;
  618. float: left;
  619. margin-right: 72rpx;
  620. position: relative;
  621. .line{
  622. height: 3rpx;
  623. width: 50rpx;
  624. background: #999999;
  625. position: absolute;
  626. right: -58rpx;
  627. top: 32rpx;
  628. }
  629. &:last-child{
  630. margin-right: 0;
  631. }
  632. &.current{
  633. color:#FFFFFF;
  634. background: $color-system;
  635. }
  636. }
  637. }
  638. .register-main{
  639. width: 100%;
  640. height: auto;
  641. &.detailed{
  642. padding-bottom: 330rpx;
  643. }
  644. .register-tips{
  645. display: flex;
  646. flex-direction: column;
  647. align-items: center;
  648. line-height: 44rpx;
  649. font-size: $font-size-sm;
  650. color: #FF0000;
  651. margin-bottom: 40rpx;
  652. .iconfont{
  653. font-size: $font-size-sm;
  654. }
  655. }
  656. .register-row{
  657. width: 702rpx;
  658. height: auto;
  659. padding: 0 24rpx;
  660. margin-bottom: 20rpx;
  661. .register-from{
  662. width: 654rpx;
  663. height: 40rpx;
  664. padding: 24rpx;
  665. background: $sub-bg-color;
  666. border-radius: 14rpx;
  667. position: relative;
  668. .label{
  669. text-align: left;
  670. font-size: $font-size-base;
  671. color: $text-color;
  672. line-height: 40rpx;
  673. float: left;
  674. }
  675. .row-input{
  676. width: 440rpx;
  677. padding-left:10rpx;
  678. font-size: $font-size-base;
  679. color: $text-color;
  680. line-height: 40rpx;
  681. float: left;
  682. height: 40rpx;
  683. &.none{
  684. color: #999999;
  685. }
  686. &.keshi{
  687. width: 550rpx;
  688. }
  689. }
  690. &.img-btn{
  691. width: 220rpx;
  692. height: 88rpx;
  693. padding: 0;
  694. float: left;
  695. background: #FFFFFF;
  696. display: block;
  697. .vscodeimg{
  698. width: 150rpx;
  699. height: 88rpx;
  700. float: left;
  701. display: flex;
  702. flex-direction: column;
  703. align-items: center;
  704. border-radius: 14rpx;
  705. image{
  706. width: 150rpx;
  707. height: 88rpx;
  708. border-radius: 14rpx;
  709. }
  710. }
  711. .vscod-refresh{
  712. width: 70rpx;
  713. float: right;
  714. text-align: right;
  715. display: flex;
  716. flex-direction: column;
  717. align-items: center;
  718. line-height: 44rpx;
  719. .icon-shuaxin{
  720. font-size: 48rpx;
  721. color: #333333;
  722. }
  723. .ref-text{
  724. font-size: 24rpx;
  725. color: #333333;
  726. }
  727. }
  728. }
  729. &.imgcode{
  730. width: 410rpx;
  731. float: left;
  732. margin-right: 20rpx;
  733. .row-input{
  734. width: 230rpx;
  735. }
  736. }
  737. &.code{
  738. width: 410rpx;
  739. float: left;
  740. margin-right: 20rpx;
  741. .row-input{
  742. width: 230rpx;
  743. }
  744. }
  745. &.btn{
  746. width: 176rpx;
  747. float: left;
  748. .row-input{
  749. width: 176rpx;
  750. padding: 0;
  751. background: #F7F7F7;
  752. text-align: center;
  753. }
  754. &.none{
  755. background: $btn-confirm;
  756. .row-input{
  757. color: #FFFFFF;
  758. background: $btn-confirm;
  759. }
  760. }
  761. &.disabled{
  762. .row-input{
  763. color: #999999;
  764. }
  765. }
  766. }
  767. &.picker{
  768. padding: 0 24rpx;
  769. width: 654rpx;
  770. height: 88rpx;
  771. line-height: 88rpx;
  772. .label{
  773. line-height: 88rpx;
  774. }
  775. .row-input{
  776. width: 470rpx;
  777. height: 88rpx;
  778. line-height: 88rpx;
  779. padding-left: 30rpx;
  780. }
  781. }
  782. &.radio{
  783. padding: 0 24rpx;
  784. width: 654rpx;
  785. height: 288rpx;
  786. .row-input{
  787. width: 100%;
  788. height: 88rpx;
  789. line-height: 88rpx;
  790. padding-left: 0;
  791. }
  792. .row-radio{
  793. float: left;
  794. }
  795. .row-text{
  796. width: 100rpx;
  797. text-align: center;
  798. float: left;
  799. }
  800. }
  801. &.group{
  802. padding: 0 24rpx;
  803. width: 654rpx;
  804. height: auto;
  805. background: #FFFFFF;
  806. margin-top: 30rpx;
  807. .row-input{
  808. width: 100%;
  809. height: 88rpx;
  810. line-height: 88rpx;
  811. padding-left: 0;
  812. }
  813. .row-radio{
  814. float: left;
  815. }
  816. .row-text{
  817. width: 100rpx;
  818. text-align: center;
  819. float: left;
  820. }
  821. }
  822. &.btn{
  823. margin-top: 0;
  824. }
  825. .content-class {
  826. width: 520rpx;
  827. margin: 20rpx auto;
  828. display: flex;
  829. flex-flow: row wrap;
  830. justify-content: space-between;
  831. &.btn{
  832. margin: 0 auto;
  833. margin-left: 126rpx;
  834. }
  835. .row-input{
  836. display: flex;
  837. width: 220rpx;
  838. height: 40rpx;
  839. padding: 24rpx;
  840. text-align: left;
  841. border-radius: 10rpx;
  842. font-size: $font-size-base;
  843. color: $text-color;
  844. }
  845. .confirm-btn{
  846. width: 200rpx;
  847. height: 88rpx;
  848. border-radius: 10rpx;
  849. line-height: 88rpx;
  850. text-align: center;
  851. &.none{
  852. color: #FFFFFF;
  853. background: $btn-confirm;
  854. }
  855. &.disabled{
  856. color: #999999;
  857. }
  858. }
  859. .item {
  860. width: 156rpx;
  861. height: 60rpx;
  862. font-size:$font-size-base;
  863. line-height: 60rpx;
  864. border-radius:10rpx;
  865. margin-bottom: 20rpx;
  866. text-align: center;
  867. box-sizing: border-box;
  868. border: 1rpx solid #EFEFEF;
  869. checkbox {
  870. display: none;
  871. }
  872. }
  873. .on {
  874. border-color: $color-system;
  875. color:$color-system;
  876. }
  877. }
  878. }
  879. .icon-xiayibu{
  880. width: 88rpx;
  881. height: 88rpx;
  882. position: absolute;
  883. right: 0;
  884. top: 0;
  885. line-height: 88rpx;
  886. text-align: center;
  887. }
  888. &.text-textarea{
  889. background: #FFFFFF;
  890. .textarea{
  891. width: 654rpx;
  892. height: 180rpx;
  893. background: #F7F7F7;
  894. padding: 24rpx;
  895. font-size: $font-size-base;
  896. color: $text-color;
  897. z-index: 1;
  898. border-radius: 14rpx;
  899. }
  900. .textarea.hide{
  901. opacity: 0;
  902. }
  903. .textarea.show{
  904. color: #999999;
  905. }
  906. }
  907. }
  908. .register-picture{
  909. height: 102rpx;
  910. margin: 40rpx 0 0 0;
  911. .label{
  912. float: left;
  913. font-size: $font-size-base;
  914. color: $text-color;
  915. line-height: 102rpx;
  916. width: 150rpx;
  917. text-align: right;
  918. &.zz{
  919. width: 230rpx;
  920. }
  921. }
  922. .upload-picture{
  923. float: left;
  924. height: 100rpx;
  925. .upload-none{
  926. width: 100rpx;
  927. height: 100rpx;
  928. text-align: center;
  929. line-height: 100rpx;
  930. color: #999999;
  931. border: 1px solid #999999;
  932. border-radius: 10rpx;
  933. margin: 0 20rpx;
  934. .iconfont{
  935. font-size: $font-size-base;
  936. }
  937. }
  938. .upload-image{
  939. width: 100rpx;
  940. height: 100rpx;
  941. border-radius: 10rpx;
  942. margin: 0 20rpx;
  943. position: relative;
  944. image{
  945. width: 100rpx;
  946. height: 100rpx;
  947. border-radius: 10rpx;
  948. }
  949. .upload-del{
  950. width: 40rpx;
  951. height: 40rpx;
  952. position: absolute;
  953. top: -20rpx;
  954. right: -20rpx;
  955. line-height: 40rpx;
  956. text-align: center;
  957. .iconfont{
  958. font-size: $font-size-lg;
  959. color: #999999;
  960. }
  961. }
  962. }
  963. }
  964. }
  965. .register-input{
  966. width: 654rpx;
  967. height: 40rpx;
  968. padding: 24rpx;
  969. margin: 0 auto;
  970. margin-bottom: 60rpx;
  971. background: #F7F7F7;
  972. border-radius: 14rpx;
  973. .input{
  974. width: 100%;
  975. height: 100%;
  976. background: #F7F7F7;
  977. font-size: $font-size-base;
  978. line-height: 40rpx;
  979. color: #333333;
  980. border-radius: 14rpx;
  981. }
  982. }
  983. .register-fiexd{
  984. width: 100%;
  985. height: auto;
  986. position: fixed;
  987. bottom: 0;
  988. left: 0;
  989. z-index: 999;
  990. background: #FFFFFF;
  991. .register-agree{
  992. display: flex;
  993. flex-direction: column;
  994. align-items: center;
  995. margin: 32rpx 0;
  996. .agree-text{
  997. .checkbox{
  998. float: left;
  999. margin: 4rpx 6rpx 0 0;
  1000. color: #999999;
  1001. font-size: $font-size-lg;
  1002. &.icon-gouxuan{
  1003. color: $color-system;
  1004. }
  1005. }
  1006. font-size: 20rpx;
  1007. line-height: 44rpx;
  1008. color: #999999;
  1009. text{
  1010. color:#0091FF;
  1011. }
  1012. }
  1013. }
  1014. }
  1015. .register-btn{
  1016. width: 702rpx;
  1017. height: 88rpx;
  1018. border-radius: 14rpx;
  1019. font-size: $font-size-base;
  1020. line-height: 88rpx;
  1021. color: #FFFFFF;
  1022. margin: 0 auto;
  1023. text-align: center;
  1024. background: $btn-confirm;
  1025. margin-top: 96rpx;
  1026. &.none{
  1027. background: #FFFFFF;
  1028. color: $text-color;
  1029. margin-top: 0;
  1030. }
  1031. &.sub{
  1032. margin-top: 0;
  1033. }
  1034. }
  1035. }
  1036. }
  1037. </style>