// case/pages/register/register.js import {throttle} from "../../../utils/util" import {hostConfig} from "../../../utils/config" import {getArea,getHospital,getOfficeList,getPosition,smsRegister,sendSms,getCaptcha} from "../../../api/api" import {base64src} from "../../../utils/base64ToImg" const host=hostConfig().host; const app=getApp(); Page({ /** * 页面的初始数据 */ data: { showImprove:false, showSuccess:false, img_host:app.hostConfig().imghost, showArea:false, areaColumns:[ { values: [1,2], className: 'column1', }, { values: [3,4], className: 'column2', defaultIndex: 0 }, ], hospitalColumns:[], officeColumns:[], positionColumns:[], showHospital:false, showOffice:false, showPosition:false, showNext:false, fileList:[], disabled:false, county_id:'', hospital_name:'', hospital_uuid:'', mobile:'', name:'', office_name:'', office_uuid:'', password:'', position_uuid:'', certificate:'', certificate_img:'', codeActive:true, msg:'获取验证码', captchaUuid:'', captchaCode:'', loginDevice:5, imgCode:'', sms:'', timer:null, time:59, smsType:1, showCrop:false, width: 250, //宽度 height: 250, //高度 max_width: 300, max_height: 300, disable_rotate: true, //是否禁用旋转 disable_ratio: false, //锁定比例 limit_move: true, //是否限制移动 }, closeCrop(){ this.setData({ showCrop:false }) }, submit() { this.setData({ showCrop:false }) this.cropper.getImg((obj) => { this.uploadImg(obj) }); }, cropperload(e) { console.log('cropper加载完成'); }, initCrop(options){ this.cropper = this.selectComponent("#image-cropper"); if(options.imgSrc){ this.setData({ src: options.imgSrc }); } // if(!options.imgSrc){ // this.cropper.upload(); //上传图片 // } }, loadimage(e) { this.cropper.imgReset(); }, onConfirmSuccess(){ this.setData({ showSuccess:false }) app.method.navigateTo({ url:"/case/pages/mobileLogin/mobileLogin" }) }, opeArea(){ this.setData({ showArea:true }) }, openOffice(){ this.setData({ showOffice:true, }) }, openPosition(){ this.setData({ showPosition:true, }) }, onChange(e){ const {value} = e.detail; const {id}=e.currentTarget.dataset; // console.log(value,id) this.setData({ [id]: value }); }, onChangeArea(event){ const { picker, value, index } = event.detail; const provinceId=value[0].id; this.handleGetArea(provinceId) }, confirmArea(event){ const {value} = event.detail; const countyId=value[1].id; this.setData({ county_id:countyId, showArea:false }); this.handleGetHospital(countyId) }, cancelArea(){ this.setData({ showArea:false }) }, confirmHospital(event){ let {value}=event.detail; this.setData({ showHospital:false, hospital_uuid:value.uuid, hospital_name:value.name }) }, cancelHospital(){ this.setData({ showHospital:false }) }, confirmOffice(event){ let {value}=event.detail; this.setData({ office_name:value.officeName, office_uuid:value.officeUuid, showOffice:false }) }, cancelOffice(){ this.setData({ showOffice:false }) }, confirmPosition(event){ let {value}=event.detail; this.setData({ position_uuid:value.uuid, position_name:value.name, showPosition:false }) }, cancelPosition(){ this.setData({ showPosition:false }) }, goNext(){ let {mobile,sms,password,captchaCode}=this.data; if(!/^1[3456789]\d{9}$/.test(mobile)){ wx.showToast({ title: `请输入有效的手机号码!`, icon: 'none', }); return false; }; if(!captchaCode){ wx.showToast({ title: `请输入图形验证码`, icon: 'none', }); return false; } if(!sms){ wx.showToast({ title: `请输入短信验证码`, icon: 'none', }); return false; } if(!(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$/.test(password))){ wx.showToast({ title: `请输入6-16位字母、数字组合密码!`, icon: 'none', }); return false; } this.setData({ showNext:true }) }, showNext(){ this.setData({ showNext:false }) }, handleGetArea(id){ getArea({ parent:id }).then(res=>{ if(id){ let obj='areaColumns[1].values'; this.setData({ [obj]:res }) }else{ let obj='areaColumns[0].values'; this.setData({ [obj]:res }) this.handleGetArea(res[0].id) } }).catch(error=>{ console.log(error) }) }, handleGetHospital(countyId){ getHospital(countyId).then(res=>{ this.setData({ showHospital:true, hospitalColumns:res.concat({uuid:1,name:'其他医院'}) }) }) }, handleGetOffice(){ getOfficeList({}).then(res=>{ this.setData({ officeColumns:res }) }).catch(error=>{ console.log(error) }) }, handleGetPosition(){ getPosition().then(res=>{ this.setData({ positionColumns:res }) }) }, handleSmsRegister:throttle(function(){ let {mobile,name,sms,password,captchaCode,hospital_uuid,hospital_name,office_name,office_uuid,position_uuid,certificate,certificate_img,county_id}=this.data; if(!/^1[3456789]\d{9}$/.test(mobile)){ wx.showToast({ title: `请输入有效的手机号码!`, icon: 'none', }); return false; }; if(!captchaCode){ wx.showToast({ title: `请输入图形验证码`, icon: 'none', }); return false; } if(!sms){ wx.showToast({ title: `请输入短信验证码`, icon: 'none', }); return false; } if(!(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$/.test(password))){ wx.showToast({ title: `请输入6-16位字母、数字组合密码!`, icon: 'none', }); return false; } if(!(/^[\u4E00-\u9FA5·]{2,20}$/.test(name))){ wx.showToast({ title: `请输入您的真实姓名`, icon: 'none', }); return false; } if(!hospital_uuid){ wx.showToast({ title: `请选择医院`, icon: 'none', }); return false; } if(!office_uuid){ wx.showToast({ title: `请选择科室`, icon: 'none', }); return false; } if(!position_uuid){ wx.showToast({ title: `请选择职称`, icon: 'none', }); return false; } if(!certificate_img){ wx.showToast({ title: `请上传执业医师资格证或工作胸牌`, icon: 'none', }); return false; } smsRegister({ mobile, name, sms, password, hospital_uuid, hospital_name, office_name, office_uuid, county_id, position_uuid, certificate, certificate_img }).then(res=>{ this.setData({ showSuccess:true, }) }) }), handleThrottle:throttle(function(){ this.getCode() }), handleGetCaptcha(){ getCaptcha().then(res=>{ base64src(res.captchaBase64Image,(img)=>{ this.setData({ imgCode:img, captchaUuid:res.captchaUuid }) }) }) }, getCode(){ if(this.data.disabled)return; let {mobile,captchaCode,captchaUuid,loginDevice,smsType}=this.data; if(!/^1[3456789]\d{9}$/.test(mobile)){ wx.showToast({ title: `请输入有效的手机号码!`, icon: 'none', }); return false; }; if(!captchaCode){ wx.showToast({ title: `图形验证码不能为空`, icon: 'none', }); return false; } sendSms({ mobile, captchaCode, captchaUuid, smsType, loginDevice }).then((res)=>{ let timer=setInterval(() => { if (this.data.time == 0) { clearInterval(this.data.timer); this.setData({ time:59, msg:'重新获取验证码', disabled:false, codeActive:true, }) } else { let msg= this.data.time + " s 后重新发送"; this.setData({ disabled:true, msg:msg, codeActive:false, }) let time=this.data.time--; this.setData({ msg:time + " s 后重新发送" }) } }, 1000); this.setData({ timer:timer }) }).catch(()=>{ this.handleGetCaptcha(); }); }, uploadImg(file){ let THIS=this; wx.showLoading({ title: '图片上传中', mask: true }) // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式 wx.uploadFile({ url: host+'/user/uoloadImg', // 仅为示例,非真实的接口地址 filePath: file.url, name: 'file', formData: file, success(res) { let result=JSON.parse(res.data); wx.hideLoading(); if(result.code==200){ THIS.setData({ certificate_img:result.data }); }else{ wx.showToast({ title:result.msg, icon:'none' }) } }, complete(res){ console.log(res) } }); }, afterRead(event) { const { file } = event.detail; this.setData({ showCrop:true, src:file.url }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { this.handleGetCaptcha(); this.handleGetArea(''); this.handleGetOffice(); this.handleGetPosition(); this.initCrop(options); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ // onShareAppMessage() { // } })