锦水居民端小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

484 lines
13 KiB

5 years ago
const api = require('../../../../utils/api')
5 years ago
import {
$wuxDialog
} from '../../../../dist/index'
5 years ago
const app = getApp()
5 years ago
import { $wuxActionSheet } from '../../../../dist/index'
const config = require('../../../../utils/config')
5 years ago
Page({
/**
* 页面的初始数据 全部为必填项
*/
data: {
5 years ago
realName: '', //真实姓名
mobile: '', //手机号
identityNo: '', //身份证号码
road: '', //所在道路
villageName: '', //小区名
dwellingPlace: '', //住处(楼栋-单元-房间)
gridId: Number, //居住网格id
gridName: '',
wxCode: '', //用户unionId为空时 传入
encryptedData: '', //用户unionId为空时 传入
iv: '', //用户unionId为空时 传入
introduce: '', //自我介绍
5 years ago
volunteerNickname:'',//昵称
volunteerSignature:'',//签名
volunteerFaceImg:'',//头像
5 years ago
unionIdStatus: '0',
wait: 60,
smsCode: '',
btntxt: '获取验证码',
dialogTitle: '',
dialogContent: '',
dialogConfirmText: '',
dialogCancelText: '',
getMobileType: 'wx',
5 years ago
smsCodeText: '获取验证码',
uploadImageList: [],
5 years ago
},
5 years ago
onLoad: function(options) {
5 years ago
this.getPrepareComplete().then(res => {
this.getGridList()
})
this.checkWxUnionId()
this.getWxCode()
},
5 years ago
bindRealNameInput(e) {
5 years ago
this.setData({
realName: e.detail.value
})
},
5 years ago
bindMobileInput(e) {
5 years ago
this.setData({
mobile: e.detail.value
})
},
5 years ago
nickname(e){
this.setData({
volunteerNickname: e.detail.value
})
},
5 years ago
bindSmsCodeInput(e) {
5 years ago
this.setData({
smsCode: e.detail.value
})
},
5 years ago
bindIdentityNoInput(e) {
5 years ago
this.setData({
identityNo: e.detail.value
})
},
5 years ago
adInputStreet(e) {
5 years ago
this.setData({
road: e.detail.value
})
},
5 years ago
adInputCommunity(e) {
5 years ago
this.setData({
villageName: e.detail.value
})
},
5 years ago
adInputBuilding(e) {
5 years ago
this.setData({
dwellingPlace: e.detail.value
})
},
5 years ago
adInputIntroduce(e) {
5 years ago
this.setData({
introduce: e.detail.value
})
},
5 years ago
volunteerSignature(e) {
this.setData({
volunteerSignature: e.detail.value
})
},
5 years ago
// 查看用户是否完善个人信息
checkWxUnionId() {
api.checkWxUnionId().then(res => {
console.log('查看用户是否已保存unionId', res)
this.setData({
unionIdStatus: res.data
})
}).catch(err => {
this.setData({
unionIdStatus: '0'
})
console.log(err)
})
},
// 获取wxCode
getWxCode() {
const that = this
wx.login({
success(res) {
that.setData({
wxCode: res.code
})
}
})
},
// 获取用户信息
getUserInfo(e) {
this.setData({
encryptedData: e.detail.encryptedData,
iv: e.detail.iv
})
5 years ago
if (e.detail.iv) {
5 years ago
this.submission()
5 years ago
} else {
5 years ago
wx.showToast({
title: '您拒绝了获取信息,无法完成认证',
icon: 'none',
duration: 3000
})
}
5 years ago
},
// 拉取 用户信息
getPrepareComplete() {
return new Promise((resolve, reject) => {
api.prepareComplete().then(res => {
console.log('拉取用户信息', res)
this.setData({
identityNo: res.data.identityNo,
realName: res.data.realName,
mobile: res.data.mobile,
road: res.data.road,
villageName: res.data.villageName,
dwellingPlace: res.data.dwellingPlace,
state: res.data.state,
gridId: res.data.gridId,
5 years ago
gridName: res.data.gridName,
volunteerNickname:res.data.volunteerNickname,
volunteerSignature:res.data.volunteerSignature,
volunteerFaceImg:res.data.volunteerFaceImg,
introduce:res.data.introduce
5 years ago
})
resolve(true)
}).catch(err => {
reject(false)
})
})
},
// 获取所有网格
getGridList() {
api.getGridList().then(res => {
console.log('获取所有网格', res)
const buttonList = []
res.data.forEach(item => {
if (item.gridId !== this.data.gridId) {
buttonList.push({
id: item.gridId,
text: item.grid
})
}
})
this.setData({
gridList: res.data,
changeGridList: buttonList
})
}).catch(err => {
this.setData({
gridList: []
})
console.log(err)
})
},
// 志愿者认证提交
submission() {
if (!this.data.realName) {
this.showToast('请输入姓名')
return false
}
5 years ago
if (this.data.realName.length > 20) {
this.showToast('姓名不能超过20个字')
return false
}
5 years ago
if (!this.data.identityNo) {
this.showToast('请输入身份证号')
return false
}
5 years ago
if (this.data.getMobileType === 'wx') {
5 years ago
if (!this.data.mobile) {
this.showToast('请获取手机号')
return false
}
} else if (this.data.getMobileType === 'self') {
if (!this.data.mobile) {
this.showToast('请输入手机号')
return false
}
if (!this.data.smsCode) {
this.showToast('请输入验证码')
return false
}
}
5 years ago
if(!this.data.volunteerFaceImg){
this.showToast('请上传头像')
return false
}
if(!this.data.volunteerNickname){
this.showToast('请输入昵称')
return false
}
if(!this.data.volunteerSignature){
this.showToast('请输入签名')
return false
}
5 years ago
if (!this.data.road) {
5 years ago
this.showToast('请填写所在小区或所在道路')
return false
5 years ago
}
5 years ago
if (this.data.road.length > 100) {
5 years ago
this.showToast('小区或所在道路不能超过100个字')
5 years ago
return false
}
5 years ago
if (!this.data.introduce) {
this.showToast('请输入自我介绍')
return false
}
if (!this.data.introduce.length > 200) {
this.showToast('自我介绍输入内容不超过200字')
return false
}
const params = {
smsCode: this.data.smsCode,
realName: this.data.realName,
mobile: this.data.mobile,
identityNo: this.data.identityNo,
road: this.data.road,
villageName: this.data.villageName,
dwellingPlace: this.data.dwellingPlace,
gridId: this.data.gridId,
introduce: this.data.introduce,
5 years ago
volunteerFaceImg:this.data.volunteerFaceImg,
volunteerNickname:this.data.volunteerNickname,
volunteerSignature:this.data.volunteerSignature,
5 years ago
wxCode: this.data.unionIdStatus === '1' ? '' : this.data.wxCode,
encryptedData: this.data.unionIdStatus === '1' ? '' : this.data.encryptedData,
iv: this.data.unionIdStatus === '1' ? '' : this.data.iv
}
wx.showLoading({
title: '正在提交',
})
5 years ago
api.authenticate(params).then(res => {
5 years ago
wx.hideLoading()
let state = res.data.userState
app.globalData.infoCompleted = state
wx.removeStorageSync('token')
wx.setStorageSync('token', res.data.token)
this.setData({
dialogVisible: !this.data.dialogVisible,
dialogTitle: '志愿者认证',
dialogContent: ['您已认证成功,快去报名吧'],
dialogConfirmText: '是',
dialogCancelText: '否'
})
})
},
5 years ago
confirmDialog() {
5 years ago
wx.navigateBack({
delta: 1
})
},
5 years ago
changeGetMobileType() {
5 years ago
let type = 'wx'
if (this.data.getMobileType === 'wx') {
type = 'self'
} else if (this.data.getMobileType === 'self') {
type = 'wx'
}
this.setData({
getMobileType: type
})
},
// 获取验证码
5 years ago
getSmsCode() {
5 years ago
if (!this.data.mobile) {
this.showToast('请先输入手机号')
return false
}
this.setData({
smsCodeText: '获取中...'
})
const mobile = this.data.mobile
api.sendSms(mobile).then(res => {
this.showToast('验证码发送成功')
let num = 60
this.setData({
smsCodeText: "60s后重新获取"
})
const timer = setInterval(() => {
if (num >= 1) {
this.setData({
5 years ago
smsCodeText: `${num}s后重新获取`
})
--num
5 years ago
} else {
clearInterval(timer)
this.setData({
smsCodeText: '获取验证码'
})
}
}, 1000)
5 years ago
}).catch(err => {
5 years ago
console.log(err)
this.setData({
smsCodeText: '获取验证码'
})
})
},
// 获取手机号
5 years ago
getPhoneNumber(e) {
5 years ago
if (e.detail.errMsg === 'getPhoneNumber:ok') {
const para = {
wxCode: '',
encryptedData: e.detail.encryptedData,
iv: e.detail.iv
}
const that = this
wx.login({
5 years ago
success(res) {
5 years ago
para.wxCode = res.code
api.getWxPhone(para).then(data => {
console.log('获取微信手机号', data)
that.setData({
mobile: data.data
})
}).catch(err => {
console.log(err)
})
}
})
}
},
// 代码简化,弹窗统一封装
5 years ago
showToast(title) {
5 years ago
wx.showToast({
title: title,
icon: 'none',
duration: 2000
})
},
5 years ago
// 上传头像
// 选择图片 上传弹窗 - 上传图片方式 - 选择图片 - 上传图片 - 回调赋值
chooseImage () {
const _this = this
_this.setData({
uploadImageList: [],
})
$wuxActionSheet().showSheet({
buttons: [
{ text: '拍照' },
{ text: '从相册中获取' },
],
className: 'dialog-class',
buttonClicked(index) {
console.log(':::::::::::::'+index)
if (index === 0) {
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['camera'],
success (res) {
const uploadImageList = [..._this.data.uploadImageList]
uploadImageList.push({
uploaded: false,
ossUrl: '',
imgUrl: res.tempFilePaths[0],
imageId: ++_this.data.imageId
})
_this.setData({
uploadImageList
})
wx.uploadFile({
url: `${config.BASEURL()}group/topic/upload`,
filePath: res.tempFilePaths[0],
name: 'file',
header: {
'Content-type': 'multipart/form-data'
},
success (fileRes){
uploadImageList[uploadImageList.length - 1].uploaded = true
uploadImageList[uploadImageList.length - 1].ossUrl = JSON.parse(fileRes.data).data
_this.setData({
uploadImageList
})
_this.setData({
volunteerFaceImg:uploadImageList[0].ossUrl
})
console.log('>>>>>>>>>>>'+_this.data.volunteerFaceImg)
}
})
}
})
} else if (index === 1) {
wx.chooseImage({
count: 3 - _this.data.uploadImageList.length,
sizeType: ['original', 'compressed'],
sourceType: ['album'],
success (res) {
const uploadImageList = []
const endIndex = _this.data.uploadImageList.length
res.tempFilePaths.forEach(item => {
uploadImageList.push({
uploaded: false,
ossUrl: '',
imgUrl: item,
imageId: ++_this.data.imageId
})
})
_this.setData({
uploadImageList: [..._this.data.uploadImageList,...uploadImageList]
})
uploadImageList.forEach((item, index) => {
return (function (index) {
wx.uploadFile({
url: `${config.BASEURL()}group/topic/upload`,
filePath: res.tempFilePaths[index],
name: 'file',
header: {
'Content-type': 'multipart/form-data'
},
success (fileRes){
uploadImageList[index].uploaded = true
uploadImageList[index].ossUrl = JSON.parse(fileRes.data).data
_this.data.uploadImageList = _this.data.uploadImageList.slice(0, endIndex)
_this.setData({
uploadImageList: [..._this.data.uploadImageList, ...uploadImageList]
})
// _this.data.setData({
// volunteerFaceImg:uploadImageList[0].ossUrl
// })
_this.setData({
volunteerFaceImg:uploadImageList[0].ossUrl
})
}
})
})(index)
})
}
})
}
return true
},
cancelText: '取消',
cancel() {},
destructiveButtonClicked() {},
})
},
5 years ago
})