var api = require('../../../../utils/api.js') Component({ data: { personalInfo: { identityNo: '', // 身份证号 realName: '', // 姓名 sex: '', // 性别 mobile: '', // 手机号 smsCode: '', // 验证码 road: '', // 什么路 villageName: '', // 小区 dwellingPlace: '', // 楼栋号-单元室 partyFlag: '0' }, gridInfo: { gridName: '', // 网格名称 gridId: '' // 网格id }, wxInfo: { encryptedData: '', // 完整信息的加密数据 iv: '', // 初始向量 wxCode: '', // 微信cod }, smsCodeText: '获取验证码', // 获取验证码button内容 unionIdStatus: '0', // 是否完善过个人信息,完善过更新,未完善过增加 getMobileType: 'wx' // 获取手机号的方式,默认从微信获取,但是微信新获取部分用户会有各种莫名其妙的bug,所以增加手机号/验证码的方式 }, properties: { type: { type: String, value: 'resident' }, moreThanOneGrid: { type: Boolean, value: false }, selectedGrid: { type: Object, observer: function(value) { this.setData({ gridInfo: value }) } } }, lifetimes: { attached() { this.getPersonalInfo().then(res => { this.getGridList() }) this.checkWxUnionId() this.getWxCode() } }, methods: { // 身份证号 双向绑定 bindIdentityNoInput(e) { this.setData({ 'personalInfo.identityNo': e.detail.value }) console.log(this.data.personalInfo) }, // 姓名 双向绑定 bindRealNameInput(e) { this.setData({ 'personalInfo.realName': e.detail.value }) console.log(this.data.personalInfo) }, // 选择性别回调 bindSexChange(e) { this.setData({ 'personalInfo.sex': e.detail.value }) console.log(this.data.personalInfo) }, // 手机号 双向绑定 bindMobileInput(e) { this.setData({ 'personalInfo.mobile': e.detail.value }) console.log(this.data.personalInfo) }, // 验证码 双向绑定 bindSmsCodeInput(e) { this.setData({ 'personalInfo.smsCode': e.detail.value }) console.log(this.data.personalInfo) }, // 路 双向绑定 bindRoadInput(e) { this.setData({ 'personalInfo.road': e.detail.value }) console.log(this.data.personalInfo) }, // 小区 双向绑定 bindVillageNameInput(e) { this.setData({ 'personalInfo.villageName': e.detail.value }) console.log(this.data.personalInfo) }, // 楼栋号-单元室 双向绑定 bindDwellingPlaceInput(e) { this.setData({ 'personalInfo.dwellingPlace': e.detail.value }) console.log(this.data.personalInfo) }, // 获取验证码 getSmsCode() { if (!this.data.personalInfo.mobile) { this.showToast('请先输入手机号') return false } this.setData({ smsCodeText: '获取中...' }) const mobile = this.data.personalInfo.mobile api.sendSms(mobile).then(res => { this.showToast('验证码发送成功') let num = 60 this.setData({ smsCodeText: "60s后重新获取" }) const timer = setInterval(() => { if (num >= 1) { this.setData({ smsCodeText: `${num}s后重新获取` }) --num } else { clearInterval(timer) this.setData({ smsCodeText: '获取验证码' }) } }, 1000) }).catch(err => { console.log(err) this.setData({ smsCodeText: '获取验证码' }) }) }, // 获取手机号 getPhoneNumber(e) { if (e.detail.errMsg === 'getPhoneNumber:ok') { const para = { wxCode: '', encryptedData: e.detail.encryptedData, iv: e.detail.iv } const that = this wx.login({ success(res) { para.wxCode = res.code api.getWxPhone(para).then(data => { console.log('获取微信手机号', data) that.setData({ 'personalInfo.mobile': data.data }) }).catch(err => { console.log(err) }) } }) } }, // 获取之前完善的个人信息 getPersonalInfo() { return new Promise((resolve, reject) => { api.prepareComplete().then(res => { console.log('获取个人信息', res) for (const key in this.data.personalInfo) { this.data.personalInfo[key] = res.data[key] } for (const key in this.data.gridInfo) { this.data.gridInfo[key] = res.data[key] } this.setData({ personalInfo: this.data.personalInfo, gridInfo: this.data.gridInfo }) if (this.data.personalInfo.partyFlag === '1') { this.triggerEvent('selectTabChange', { tab: 'partyMember', partyFlag: '1' }) } resolve(true) }).catch(err => { console.log(err) reject(false) }) }) }, // 查看用户是否完善个人信息 checkWxUnionId() { api.checkWxUnionId().then(res => { console.log('查看用户是否已保存unionId', res) this.setData({ unionIdStatus: res.data // unionIdStatus: '0' }) }).catch(err => { this.setData({ unionIdStatus: '0' }) console.log(err) }) }, // 获取用户信息 getUserInfo(e) { if (e.detail.errMsg === 'getUserInfo:ok') { this.setData({ 'wxInfo.encryptedData': e.detail.encryptedData, 'wxInfo.iv': e.detail.iv }) this.getWxCode().then(() => { this.submitPersonalInfo() }).catch(() => { this.showToast('获取wxCode失败,请重新提交') }) } else { this.showToast('请授权,再完善个人信息') return false } }, // 获取wxCode getWxCode() { const that = this return new Promise((resolve, reject) => { wx.login({ success(res) { that.setData({ 'wxInfo.wxCode': res.code }) console.log('wxInfo', that.data.wxInfo) resolve(true) }, fail(err) { reject(false) } }) }) }, // 切换网格 changeGrid() { this.triggerEvent('changeGrid', { gridId: this.data.gridInfo.gridId }) }, // 获取当前用户所有网格 getGridList() { this.triggerEvent('getGridList', { gridId: this.data.gridInfo.gridId }) }, // 提交完善信息-从微信获取手机号方式 submitPersonalInfoByWx() { if (!this.data.personalInfo.identityNo) { if (this.data.type === 'partyMember') { this.showToast('请输入身份证号') return false } } if (!this.data.personalInfo.realName) { this.showToast('请填写姓名') return false } if (!this.data.personalInfo.sex) { this.showToast('请选择性别') return false } if (!this.data.personalInfo.mobile) { this.showToast('请填写手机号') return false } // if (!this.data.personalInfo.smsCode) { // this.showToast('请填写验证码') // return false // } if (!this.data.personalInfo.road) { this.showToast('请填写所在小区或所在道路') return false } if (this.data.personalInfo.road.length > 100) { this.showToast('小区或所在道路不能超过100个字') return false } const para = { partyFlag: this.data.type === 'partyMember' ? '1' : '0', identityNo: this.data.personalInfo.identityNo, mobile: this.data.personalInfo.mobile, smsCode: this.data.personalInfo.smsCode, realName: this.data.personalInfo.realName, sex: this.data.personalInfo.sex, road: this.data.personalInfo.road, villageName: this.data.personalInfo.villageName, dwellingPlace: this.data.personalInfo.dwellingPlace, gridId: this.data.gridInfo.gridId, wxCode: this.data.unionIdStatus === '0' ? this.data.wxInfo.wxCode : '', encryptedData: this.data.unionIdStatus === '0' ? this.data.wxInfo.encryptedData : '', iv: this.data.unionIdStatus === '0' ? this.data.wxInfo.iv : '' } if (this.data.personalInfo.partyFlag === '1' && this.data.type === 'resident') { wx.showModal({ content: '您已是党员,无须进行居民认证,居民认证后会取消党员身份,是否继续?', showCancel: true, cancelText: '否', confirmText: '是', confirmColor: '#000000', success: (e) => { if (e.confirm) { wx.showLoading({ title: '提交中...' }) api.completeResidentInfoV2(para).then(res => { wx.hideLoading() if (res.data.resultCode == 1) { wx.showModal({ title: '认证信息提交成功', showCancel: false, content: res.data.resultMsg, success: res => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) } }) } else { wx.showToast({ title: '认证成功', icon: 'none', duration: 2000, complete: () => { setTimeout(() => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) }, 2000) } }) } }) } else if (e.cancel) { return false } }, }) } else { wx.showLoading({ title: '提交中...' }) if (this.data.type === 'partyMember') { api.completePartyInfoV2(para).then(res => { wx.hideLoading() if (res.data.resultCode == 1) { wx.showModal({ title: '认证信息提交成功', showCancel: false, content: res.data.resultMsg, success: res => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) } }) } else { wx.showToast({ title: '认证成功', icon: 'none', duration: 2000, complete: () => { setTimeout(() => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) }, 2000) } }) } }) } else if (this.data.type === 'resident') { api.completeResidentInfoV2(para).then(res => { wx.hideLoading() if (res.data.resultCode == 1) { wx.showModal({ title: '认证信息提交成功', showCancel: false, content: res.data.resultMsg, success: res => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) } }) } else { wx.showToast({ title: '认证成功', icon: 'none', duration: 2000, complete: () => { setTimeout(() => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) }, 2000) } }) } }) } } }, // 提交完善信息,手机号输入方式 submitPersonalInfoBySelf() { if (!this.data.personalInfo.identityNo) { if (this.data.type === 'partyMember') { this.showToast('请输入身份证号') return false } } if (!this.data.personalInfo.realName) { this.showToast('请填写姓名') return false } if (!this.data.personalInfo.sex) { this.showToast('请选择性别') return false } if (!this.data.personalInfo.mobile) { this.showToast('请填写手机号') return false } if (!this.data.personalInfo.smsCode) { this.showToast('请填写验证码') return false } if (!this.data.personalInfo.road) { this.showToast('请填写所在街道') return false } const para = { partyFlag: this.data.type === 'partyMember' ? '1' : '0', identityNo: this.data.personalInfo.identityNo, mobile: this.data.personalInfo.mobile, smsCode: this.data.personalInfo.smsCode, realName: this.data.personalInfo.realName, sex: this.data.personalInfo.sex, road: this.data.personalInfo.road, villageName: this.data.personalInfo.villageName, dwellingPlace: this.data.personalInfo.dwellingPlace, gridId: this.data.gridInfo.gridId, wxCode: this.data.unionIdStatus === '0' ? this.data.wxInfo.wxCode : '', encryptedData: this.data.unionIdStatus === '0' ? this.data.wxInfo.encryptedData : '', iv: this.data.unionIdStatus === '0' ? this.data.wxInfo.iv : '' } if (this.data.personalInfo.partyFlag === '1' && this.data.type === 'resident') { wx.showModal({ content: '您已是党员,无须进行居民认证,居民认证后会取消党员身份,是否继续?', showCancel: true, cancelText: '否', confirmText: '是', confirmColor: '#000000', success: (e) => { if (e.confirm) { wx.showLoading({ title: '提交中...' }) api.completeResidentInfo(para).then(res => { wx.hideLoading() if (res.data.resultCode == 1) { wx.showModal({ title: '认证信息提交成功', showCancel: false, content: res.data.resultMsg, success: res => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) } }) } else { wx.showToast({ title: '认证成功', icon: 'none', duration: 2000, complete: () => { setTimeout(() => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) }, 2000) } }) } }) } else if (e.cancel) { return false } }, }) } else { wx.showLoading({ title: '提交中...' }) if (this.data.type === 'partyMember') { api.completePartyInfo(para).then(res => { wx.hideLoading() if (res.data.resultCode == 1) { wx.showModal({ title: '认证信息提交成功', showCancel: false, content: res.data.resultMsg, success: res => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) } }) } else { wx.showToast({ title: '认证成功', icon: 'none', duration: 2000, complete: () => { setTimeout(() => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) }, 2000) } }) } }) } else if (this.data.type === 'resident') { api.completeResidentInfo(para).then(res => { wx.hideLoading() if (res.data.resultCode == 1) { wx.showModal({ title: '认证信息提交成功', showCancel: false, content: res.data.resultMsg, success: res => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) } }) } else { wx.showToast({ title: '认证成功', icon: 'none', duration: 2000, complete: () => { setTimeout(() => { wx.reLaunch({ url: '/pages/indexNew/indexNew' }) }, 2000) } }) } }) } } }, submitPersonalInfo() { if (this.data.getMobileType === 'wx') { this.submitPersonalInfoByWx() } else if (this.data.getMobileType === 'self') { this.submitPersonalInfoBySelf() } }, // 代码简化,弹窗统一封装 showToast(title) { wx.showToast({ title: title, icon: 'none', duration: 2000 }) }, changeGetMobileType() { let type = 'wx' if (this.data.getMobileType === 'wx') { type = 'self' } else if (this.data.getMobileType === 'self') { type = 'wx' } this.setData({ getMobileType: type }) } } })