15 changed files with 734 additions and 4 deletions
@ -0,0 +1,81 @@ |
|||||
|
// pages/user/profile/index.js
|
||||
|
let app = getApp(); |
||||
|
import util from "../../../utils/util" |
||||
|
import WeCropper from '../../../we-cropper/we-cropper.min.js'; |
||||
|
import userApi from "../../../utils/https/user" |
||||
|
let device = wx.getSystemInfoSync(),rect = wx.getMenuButtonBoundingClientRect(); // 获取设备信息
|
||||
|
const width = device.windowWidth // 示例为一个与屏幕等宽的正方形裁剪框
|
||||
|
let menuHeight = (rect.top - device.statusBarHeight) * 2 + rect.height + device.statusBarHeight; |
||||
|
let height = device.windowHeight - menuHeight; |
||||
|
Page({ |
||||
|
|
||||
|
/** |
||||
|
* 页面的初始数据 |
||||
|
*/ |
||||
|
data: { |
||||
|
|
||||
|
info:null, |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面加载 |
||||
|
*/ |
||||
|
onLoad: function (options) { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
goSetting (e) { |
||||
|
let type = e.currentTarget.dataset.type; |
||||
|
wx.navigateTo({ |
||||
|
url: '/subPackages/password/setting/setting?type='+type, |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面初次渲染完成 |
||||
|
*/ |
||||
|
onReady: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面显示 |
||||
|
*/ |
||||
|
onShow: function () { |
||||
|
// userApi.user_post("user/getMyInfo",{}).then(res=>{
|
||||
|
// this.setData({
|
||||
|
// info:res.data,
|
||||
|
// })
|
||||
|
// })
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面隐藏 |
||||
|
*/ |
||||
|
onHide: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面卸载 |
||||
|
*/ |
||||
|
onUnload: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 页面相关事件处理函数--监听用户下拉动作 |
||||
|
*/ |
||||
|
onPullDownRefresh: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 页面上拉触底事件的处理函数 |
||||
|
*/ |
||||
|
onReachBottom: function () { |
||||
|
|
||||
|
} |
||||
|
}) |
||||
@ -0,0 +1,5 @@ |
|||||
|
{ |
||||
|
"usingComponents": { |
||||
|
"title":"/pages/component/TitleHeader" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
<!--pages/user/profile/index.wxml--> |
||||
|
|
||||
|
<title title="支付密码"></title> |
||||
|
|
||||
|
<view bindtap="goSetting" data-type="add" class="profile-item" > |
||||
|
<text>设置支付密码</text> |
||||
|
<view class="info" wx:if="{{info&&info.password}}">已设置</view> |
||||
|
<view class="iconfont icon-you"></view> |
||||
|
</view> |
||||
|
<view bindtap="goSetting" data-type="edit" class="profile-item" > |
||||
|
<text>修改密码</text> |
||||
|
<view class="info"></view> |
||||
|
<view class="iconfont icon-you"></view> |
||||
|
</view> |
||||
|
<view bindtap="goSetting" data-type="reset" class="profile-item"> |
||||
|
<text>忘记密码</text> |
||||
|
<view class="info"></view> |
||||
|
<view class="iconfont icon-you"></view> |
||||
|
</view> |
||||
@ -0,0 +1,29 @@ |
|||||
|
/* pages/user/profile/index.wxss */ |
||||
|
.profile-item { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
font-size: 30rpx; |
||||
|
color: #333; |
||||
|
height: 118rpx; |
||||
|
margin: 0 30rpx; |
||||
|
border-bottom: 1rpx solid #D8D8D8; |
||||
|
} |
||||
|
.profile-item text { |
||||
|
font-weight: 500; |
||||
|
flex-shrink: 0; |
||||
|
} |
||||
|
.profile-item .info { |
||||
|
flex: 1; |
||||
|
text-align: right; |
||||
|
} |
||||
|
.profile-item .iconfont { |
||||
|
flex-shrink: 0; |
||||
|
} |
||||
|
.profile-item .info image { |
||||
|
display: inline-block; |
||||
|
width: 80rpx; |
||||
|
height: 80rpx; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,238 @@ |
|||||
|
|
||||
|
import util from "../../../utils/util.js" |
||||
|
import user from "../../../utils/https/user.js" |
||||
|
import https from "../../../utils/https.js" |
||||
|
var app = getApp(); |
||||
|
Page({ |
||||
|
|
||||
|
/** |
||||
|
* 页面的初始数据 |
||||
|
*/ |
||||
|
data: { |
||||
|
type:'add', |
||||
|
title: '', |
||||
|
|
||||
|
editConfrim: false, |
||||
|
vcode: '',//验证码内容
|
||||
|
isFoucs: true, |
||||
|
|
||||
|
inputData: { |
||||
|
phone: '', |
||||
|
code: '', |
||||
|
password: '', |
||||
|
confirmPassword: '', |
||||
|
}, |
||||
|
canSubmit: false, |
||||
|
|
||||
|
code:"", |
||||
|
buttonText:"获取验证码", |
||||
|
sendFlag:true, |
||||
|
regToken:null, |
||||
|
codeId:null, |
||||
|
|
||||
|
|
||||
|
isApproval: false |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面加载 |
||||
|
*/ |
||||
|
onLoad: function (options) { |
||||
|
this.setData({ |
||||
|
type: options.type||'add', |
||||
|
title: options.type=='reset'?'忘记密码':options.type=='edit'?'修改密码':'设置支付密码', |
||||
|
editConfrim: options.type == 'edit'?true:false |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
// 编辑输入原密码
|
||||
|
passwordChange: function (e) { |
||||
|
let val = e.detail.value |
||||
|
this.setData({ |
||||
|
vcode: val |
||||
|
}) |
||||
|
if (val.length==6) { |
||||
|
// 验证密码
|
||||
|
this.setData({editConfrim: false}) |
||||
|
} |
||||
|
}, |
||||
|
handleFoucs() { |
||||
|
this.setData({ |
||||
|
isFoucs: true |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
// 输入框
|
||||
|
inputChange:function(e){ |
||||
|
let inputData = this.data.inputData |
||||
|
let keyname =e.currentTarget.dataset.keyname; |
||||
|
inputData[keyname] = e.detail.value |
||||
|
this.setData({ |
||||
|
inputData: inputData |
||||
|
}) |
||||
|
|
||||
|
let canSubmit = false |
||||
|
if (this.data.type == 'edit' && inputData.password && inputData.confirmPassword) { |
||||
|
canSubmit = true |
||||
|
} |
||||
|
if (this.data.type != 'edit' && inputData.phone && inputData.code && inputData.password && inputData.confirmPassword) { |
||||
|
canSubmit = true |
||||
|
} |
||||
|
this.setData({canSubmit: canSubmit}) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
// 获取验证码
|
||||
|
getCode:function(){ |
||||
|
// 如果已经在发送则不能继续发送验证码
|
||||
|
if (!this.data.sendFlag){ |
||||
|
return false; |
||||
|
} |
||||
|
if(!this.data.inputData.phone){ |
||||
|
wx.showToast({ |
||||
|
title: '请输入手机号', |
||||
|
icon:"none" |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
if(!util.isTel(this.data.inputData.phone)){ |
||||
|
wx.showToast({ |
||||
|
title: '请输入正确的手机号码', |
||||
|
icon: "none" |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
// 获取验证码则需要改变按钮的文字
|
||||
|
this.setData({ |
||||
|
buttonText:"发送中...", |
||||
|
sendFlag:false |
||||
|
}) |
||||
|
let service = "user/getMobileCodeForChange",data={ |
||||
|
mobile:this.data.inputData.phone, |
||||
|
},api = user.user_post; |
||||
|
if(this.data.regToken){ |
||||
|
service="user/getMobileCodeForBind"; |
||||
|
data.openid = this.data.regToken |
||||
|
api = user._post |
||||
|
} |
||||
|
api(service, data).then(res=>{ |
||||
|
console.log('sendmsg',res) |
||||
|
if(res.code==1){ |
||||
|
// 发送成功 即接口调用成功
|
||||
|
this.setData({ |
||||
|
buttonText: "发送成功", |
||||
|
sendFlag: false, |
||||
|
codeId: res.data.id |
||||
|
}) |
||||
|
// 获取成功之后需要马上改变成倒计时
|
||||
|
let time = 59; |
||||
|
var timer = setInterval(() => { |
||||
|
// 倒计时结束需要重置可发送验证码状态和按钮文字
|
||||
|
if (time < 0) { |
||||
|
// 清除定时器
|
||||
|
clearInterval(timer) |
||||
|
this.setData({ |
||||
|
buttonText: "重新发送", |
||||
|
sendFlag: true |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
this.setData({ |
||||
|
buttonText: time + "秒后重新发送" |
||||
|
}) |
||||
|
time--; |
||||
|
}, 1000) |
||||
|
} |
||||
|
else { |
||||
|
this.setData({ |
||||
|
buttonText: "重新发送", |
||||
|
sendFlag: true |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
}) |
||||
|
|
||||
|
}, |
||||
|
// 绑定
|
||||
|
submit:function(){ |
||||
|
if(!this.data.inputData.code){ |
||||
|
wx.showToast({ |
||||
|
title: '请输入验证码', |
||||
|
icon: "none" |
||||
|
}) |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
let service = "user/changeMobile" |
||||
|
let data={smsCode:this.data.inputData.code,mobile:this.data.inputData.phone,smsCodeId:this.data.codeId} |
||||
|
let api = user.user_post; |
||||
|
if(this.data.regToken){ |
||||
|
service = "user/wxBindPhoneAndLogin" |
||||
|
data.openid = this.data.regToken |
||||
|
data.fromSource = "WECHATXCX" |
||||
|
if(app.globalData.category_id){ |
||||
|
data.category_id = app.globalData.category_id; |
||||
|
} |
||||
|
api = user._post |
||||
|
} |
||||
|
api(service,data).then(res=>{ |
||||
|
if(res.code==1){ |
||||
|
|
||||
|
setTimeout(()=>{ |
||||
|
wx.navigateBack({ |
||||
|
delta:1 |
||||
|
}) |
||||
|
},500) |
||||
|
// if(this.data.regToken){
|
||||
|
// https.set_logininfo(res);
|
||||
|
// }
|
||||
|
|
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面初次渲染完成 |
||||
|
*/ |
||||
|
onReady: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面显示 |
||||
|
*/ |
||||
|
onShow: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面隐藏 |
||||
|
*/ |
||||
|
onHide: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面卸载 |
||||
|
*/ |
||||
|
onUnload: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 页面相关事件处理函数--监听用户下拉动作 |
||||
|
*/ |
||||
|
onPullDownRefresh: function () { |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 页面上拉触底事件的处理函数 |
||||
|
*/ |
||||
|
onReachBottom: function () { |
||||
|
|
||||
|
} |
||||
|
}) |
||||
@ -0,0 +1,5 @@ |
|||||
|
{ |
||||
|
"usingComponents": { |
||||
|
"title-header": "/pages/component/TitleHeader" |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,50 @@ |
|||||
|
<!--pages/user/bindtel/index.wxml--> |
||||
|
<view> |
||||
|
<title-header title="{{title}}"></title-header> |
||||
|
|
||||
|
<view wx:if="{{editConfrim}}"> |
||||
|
<view class="edit-tip">输入支付密码</view> |
||||
|
<view class="passward-box-container"> |
||||
|
<input type="number" password="true" class="show-code" wx:for="{{6}}" disabled |
||||
|
wx:key="index" value="{{vcode[index]}}" catch:tap="handleFoucs"/> |
||||
|
</view> |
||||
|
|
||||
|
<input type="number" password="true" maxlength="6" focus="{{isFoucs}}" bindinput="passwordChange" class="passward-box" /> |
||||
|
|
||||
|
</view> |
||||
|
|
||||
|
<view wx:else> |
||||
|
<view class="bind-box"> |
||||
|
<view class="bind-item" wx:if="{{type!='edit'}}"> |
||||
|
<view class="bind-item-left">手机号</view> |
||||
|
<input type="number" bindinput="inputChange" data-keyname="phone" class="weui-input" auto-focus placeholder="请输入您的手机号" /> |
||||
|
</view> |
||||
|
<view class="bind-item" wx:if="{{type!='edit'}}"> |
||||
|
<view class="bind-item-left">验证码</view> |
||||
|
<input type="number" bindinput="inputChange" data-keyname="code" class="weui-input" placeholder="请输入验证码" /> |
||||
|
<button class="vaild-number" type="primary" size="mini" bindtap="getCode">{{buttonText}}</button> |
||||
|
</view> |
||||
|
|
||||
|
<view class="bind-item" wx:if="{{type=='reset'}}"> |
||||
|
<view class="bind-item-left">修改支付密码</view> |
||||
|
<input type="number" password="true" maxlength="6" bindinput="inputChange" data-keyname="password" class="weui-input" placeholder="请设置新的支付密码" /> |
||||
|
</view> |
||||
|
<view class="bind-item" wx:if="{{type=='add'}}"> |
||||
|
<view class="bind-item-left">设置支付密码</view> |
||||
|
<input type="number" password="true" maxlength="6" bindinput="inputChange" data-keyname="password" class="weui-input" placeholder="请设置您的支付密码" /> |
||||
|
</view> |
||||
|
<view class="bind-item" wx:if="{{type=='edit'}}"> |
||||
|
<view class="bind-item-left">输入新密码</view> |
||||
|
<input type="number" password="true" maxlength="6" bindinput="inputChange" data-keyname="password" class="weui-input" placeholder="请设置新的支付密码" /> |
||||
|
</view> |
||||
|
|
||||
|
<view class="bind-item"> |
||||
|
<view class="bind-item-left">再次填写密码</view> |
||||
|
<input type="number" password="true" maxlength="6" bindinput="inputChange" data-keyname="confirmPassword" class="weui-input" placeholder="再次填写您的支付密码" /> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="btn {{canSubmit?'':'disabled'}}" bindtap="submit">确 定</view> |
||||
|
</view> |
||||
|
|
||||
|
|
||||
|
</view> |
||||
@ -0,0 +1,91 @@ |
|||||
|
/* pages/user/bindtel/index.wxss */ |
||||
|
.bind-box { |
||||
|
background: white; |
||||
|
} |
||||
|
.bind-item { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
margin: 0 20rpx; |
||||
|
height: 120rpx; |
||||
|
line-height: 120rpx; |
||||
|
font-size: 28rpx; |
||||
|
border-bottom: 1rpx solid #EEE; |
||||
|
} |
||||
|
.bind-item .weui-input { |
||||
|
flex: 1; |
||||
|
} |
||||
|
.bind-item-left { |
||||
|
width: 249rpx; |
||||
|
} |
||||
|
.bind-item image { |
||||
|
width: 200rpx; |
||||
|
height: 60rpx; |
||||
|
} |
||||
|
.btn { |
||||
|
margin:0rpx auto; |
||||
|
margin-top: 74rpx; |
||||
|
width: 697rpx; |
||||
|
height: 73rpx; |
||||
|
background: #D62829; |
||||
|
border-radius: 37rpx; |
||||
|
line-height: 73rpx; |
||||
|
font-weight: bold; |
||||
|
font-size: 35rpx; |
||||
|
color: #FFFFFF; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.btn.disabled{ |
||||
|
background: #CCCCCC; |
||||
|
} |
||||
|
|
||||
|
.vaild-number{ |
||||
|
width: 197rpx !important; |
||||
|
height: 53rpx !important; |
||||
|
font-size: 27rpx !important; |
||||
|
color: #0C898F !important; |
||||
|
background: none !important; |
||||
|
line-height: 53rpx !important; |
||||
|
padding: 0 !important; |
||||
|
text-align: center; |
||||
|
border: 1px solid #0C898F; |
||||
|
border-radius: 27rpx; |
||||
|
font-weight: 500 !important; |
||||
|
} |
||||
|
|
||||
|
.edit-tip{ |
||||
|
padding: 66rpx 0; |
||||
|
text-align: center; |
||||
|
font-weight: bold; |
||||
|
font-size: 31rpx; |
||||
|
color: #000000; |
||||
|
} |
||||
|
.passward-box-container{ |
||||
|
width: 697rpx; |
||||
|
height: 93rpx; |
||||
|
margin: 0 auto; |
||||
|
position: relative; |
||||
|
border-radius: 7rpx; |
||||
|
border: 1px solid #999999; |
||||
|
display: flex; |
||||
|
box-sizing: border-box; |
||||
|
padding: 16rpx 0; |
||||
|
|
||||
|
} |
||||
|
.show-code{ |
||||
|
flex: 1; |
||||
|
height: 100%; |
||||
|
border-right: 1px solid #999999; |
||||
|
text-align: center; |
||||
|
font-size: 20rpx; |
||||
|
} |
||||
|
.show-code:last-of-type { |
||||
|
border: none; |
||||
|
} |
||||
|
.passward-box{ |
||||
|
width: 0; |
||||
|
height: 0; |
||||
|
border: none; |
||||
|
opacity: 0; |
||||
|
color: rgba(0,0,0,0); |
||||
|
} |
||||
Loading…
Reference in new issue