|
@@ -9,44 +9,53 @@
|
|
|
<image @click="editAvatar" :src="form.avatar?$method.splitImgHost(form.avatar, true):''" class="avatar"></image>
|
|
|
<view class="nick">{{form.realname}}</view>
|
|
|
<view>
|
|
|
- <view class="item">
|
|
|
+ <view class="item" @click="editNickName">
|
|
|
<view>我的昵称</view>
|
|
|
- <view @click="editNickName">{{form.nickname}}<u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
|
|
|
+ <view>{{form.nickname}}<u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
|
|
|
</view>
|
|
|
- <view class="item">
|
|
|
- <view>性别</view>
|
|
|
- <view class="rBox">
|
|
|
- <picker @change="bindPickerChangeSex" :value="form.sex" :range="array_sex">
|
|
|
- <view class="picker">{{ array_sex[form.sex] }}</view>
|
|
|
+ <view>
|
|
|
+ <picker @change="bindPickerChangeSex" :value="form.sex" :range="array_sex">
|
|
|
+ <view class="item">
|
|
|
+ <view>性别</view>
|
|
|
+ <view class="rBox">
|
|
|
+ <view class="picker">{{ array_sex[form.sex] }}</view>
|
|
|
+ <u-icon name="arrow-right" color="#999999" size="28"></u-icon>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</picker>
|
|
|
- <u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
|
|
|
</view>
|
|
|
- <view class="item">
|
|
|
- <view>年龄</view>
|
|
|
- <view class="rBox">
|
|
|
- <picker mode="date" :end="$method.getDate()" :value="form.userBirth" @change="bindDateChange">
|
|
|
- <view class="picker">{{ $method.getYears(form.userBirth) }} 岁</view>
|
|
|
- </picker>
|
|
|
- <u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
|
|
|
+ <view>
|
|
|
+ <picker mode="date" :end="$method.getDate()" :value="form.userBirth" @change="bindDateChange">
|
|
|
+ <view class="item">
|
|
|
+ <view>年龄</view>
|
|
|
+ <view class="rBox">
|
|
|
+ <view class="picker">{{ $method.getYears(form.userBirth) }} 岁</view>
|
|
|
+ <u-icon name="arrow-right" color="#999999" size="28"></u-icon>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </picker>
|
|
|
</view>
|
|
|
- <view class="item">
|
|
|
+ <view class="item" @click="editIdCard">
|
|
|
<view>关联学员身份</view>
|
|
|
- <view style="display: flex;" @click="editIdCard">
|
|
|
+ <view style="display: flex;">
|
|
|
<view style="text-align: right;">
|
|
|
<view>{{ form.realname }}</view>
|
|
|
<view>{{ form.idCard }}</view>
|
|
|
</view>
|
|
|
<u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
|
|
|
</view>
|
|
|
- <view class="item">
|
|
|
- <view>所在城市</view>
|
|
|
- <view class="rBox">
|
|
|
- <pick-regions :defaultRegion="defaultRegionCode" @getRegion="handleGetRegion2">
|
|
|
- <view class="picker">{{ form.province || '-' }} {{ form.city || '-' }} {{ form.district || '-' }}</view>
|
|
|
- </pick-regions>
|
|
|
- <u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
|
|
|
+ <view>
|
|
|
+ <pick-regions :defaultRegion="defaultRegionCode" @getRegion="handleGetRegion2">
|
|
|
+ <view class="item">
|
|
|
+ <view>所在城市</view>
|
|
|
+ <view class="rBox">
|
|
|
+ <view class="picker">{{ form.province || '-' }} {{ form.city || '-' }} {{ form.district || '-' }}</view>
|
|
|
+ <u-icon name="arrow-right" color="#999999" size="28"></u-icon>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </pick-regions>
|
|
|
</view>
|
|
|
- <view class="item" @click="showPhoneModal = true">
|
|
|
+ <view class="item" @click="showPhone()">
|
|
|
<view>手机号码</view>
|
|
|
<view>{{ form.telphone }}<u-icon name="arrow-right" color="#999999" size="28"></u-icon></view>
|
|
|
</view>
|
|
@@ -61,16 +70,40 @@
|
|
|
</view>
|
|
|
<u-modal v-model="n_show" @confirm="confirmNick" :show-cancel-button="true" title="修改昵称">
|
|
|
<view class="slot-content">
|
|
|
- <u-input v-model="nickname" placeholder="请输入昵称" />
|
|
|
+ <u-input v-model="nickname" type="nickname" placeholder="请输入昵称" />
|
|
|
</view>
|
|
|
</u-modal>
|
|
|
<u-modal v-model="id_show" @confirm="confirmId" :show-cancel-button="true" title="修改关联信息">
|
|
|
<view class="slot-content">
|
|
|
- <u-input v-model="realname" placeholder="请输入真实姓名" />
|
|
|
- <u-input v-model="idCard" placeholder="请输入身份证" />
|
|
|
+ <u-input v-model="realname" type="nickname" placeholder="请输入真实姓名" />
|
|
|
+ <u-input v-model="idCard" type="idcard" placeholder="请输入身份证" />
|
|
|
</view>
|
|
|
</u-modal>
|
|
|
|
|
|
+ <u-popup v-model="showPhoneModal" mode="bottom" class="modal" border-radius="32">
|
|
|
+ <view class="modal__content">
|
|
|
+ <view class="top">
|
|
|
+ <view class="top__line"></view>
|
|
|
+ <view class="top__text">更换手机号码</view>
|
|
|
+ </view>
|
|
|
+ <view class="form">
|
|
|
+ <u-form :model="telForm" ref="telForm">
|
|
|
+ <view class="input-wrap">
|
|
|
+ <u-form-item ref="tel" prop="tel"><u-input placeholder="手机号码" v-model="telForm.tel" /></u-form-item>
|
|
|
+ <u-form-item prop="code">
|
|
|
+ <u-input placeholder="验证码" v-model="telForm.code" />
|
|
|
+ <view slot="right" @click="getCode" class="getcode">{{codeTips}}</view>
|
|
|
+ </u-form-item>
|
|
|
+ </view>
|
|
|
+ <view class="btns">
|
|
|
+ <view class="cancel" @click="showPhoneModal = false">取消</view>
|
|
|
+ <view class="submit" :class="{able:canSubmit()}" @click="bindNewSubmit">确认更换</view>
|
|
|
+ </view>
|
|
|
+ </u-form>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </u-popup>
|
|
|
+ <u-verification-code seconds="60" ref="uCode" @change="codeChange"></u-verification-code>
|
|
|
<u-navbar title="我的资料" :border-bottom="false" background="{ background: '#ffffff',opacity:0.4; }" title-color="#ffffff" back-icon-color="#ffffff">
|
|
|
|
|
|
</u-navbar>
|
|
@@ -82,9 +115,14 @@
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
+ showPhoneModal:false,
|
|
|
form:{
|
|
|
avatar:'',
|
|
|
- userBirth:new Date()
|
|
|
+ userBirth:''
|
|
|
+ },
|
|
|
+ telForm:{
|
|
|
+ tel:'',
|
|
|
+ code:'',
|
|
|
},
|
|
|
array_sex: ['男', '女'],
|
|
|
n_show:false,
|
|
@@ -93,17 +131,45 @@ export default {
|
|
|
nickname:'',
|
|
|
realname:'',
|
|
|
idCard:'',
|
|
|
+ codeTips:'',
|
|
|
avatarUrl:'',
|
|
|
- avatarOssKey:''
|
|
|
+ avatarOssKey:'',
|
|
|
+ rules: {
|
|
|
+ tel: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入手机号',
|
|
|
+ // 可以单个或者同时写两个触发验证方式
|
|
|
+ trigger: ['change']
|
|
|
+ },
|
|
|
+ {
|
|
|
+ validator: (rule, value, callback) => {
|
|
|
+ // 上面有说,返回true表示校验通过,返回false表示不通过
|
|
|
+ // this.$u.test.mobile()就是返回true或者false的
|
|
|
+ return this.$u.test.mobile(value);
|
|
|
+ },
|
|
|
+ message: '手机号码格式不正确',
|
|
|
+ // 触发器可以同时用blur和change
|
|
|
+ trigger: ['change'],
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ code: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入验证码',
|
|
|
+ // 可以单个或者同时写两个触发验证方式
|
|
|
+ trigger: ['change'],
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
|
|
|
};
|
|
|
},
|
|
|
onShow(){
|
|
|
this.form = this.userInfo
|
|
|
- console.log(this.form)
|
|
|
+ console.log(this.form,'0999')
|
|
|
},
|
|
|
onLoad(option) {
|
|
|
-
|
|
|
},
|
|
|
methods: {
|
|
|
bindPickerChangeSex(e) {
|
|
@@ -278,6 +344,74 @@ export default {
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
+ },
|
|
|
+ showPhone() {
|
|
|
+ this.showPhoneModal = true;
|
|
|
+ this.$refs.telForm.setRules(this.rules)
|
|
|
+ },
|
|
|
+ canSubmit() {
|
|
|
+ if(this.telForm.tel && this.telForm.code) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+
|
|
|
+ codeChange(text) {
|
|
|
+ this.codeTips = text;
|
|
|
+ },
|
|
|
+ getCode() {
|
|
|
+ let that = this
|
|
|
+ if(that.$refs.uCode.canGetCode) {
|
|
|
+ if(that.$refs.tel.validateState == 'success') {
|
|
|
+ let datas = {tel:this.telForm.tel}
|
|
|
+ that.$api.bindNewSms(datas).then(
|
|
|
+ res => {
|
|
|
+ if (res.data.code == 200) {
|
|
|
+ that.$u.toast('验证码已发送');
|
|
|
+ // 通知验证码组件内部开始倒计时
|
|
|
+ that.$refs.uCode.start();
|
|
|
+ } else {
|
|
|
+ that.$u.toast(res.data.msg);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ err => {
|
|
|
+ console.log(err);
|
|
|
+ }
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ this.$refs.tel.onFieldChange()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ bindNewSubmit() {
|
|
|
+ let that = this
|
|
|
+ this.$refs.telForm.validate(valid => {
|
|
|
+ if(valid) {
|
|
|
+ let datas = {
|
|
|
+ tel:this.telForm.tel,
|
|
|
+ code:this.telForm.code,
|
|
|
+ }
|
|
|
+ that.$api.bindNewTel(datas).then(
|
|
|
+ res => {
|
|
|
+ if (res.data.code == 200) {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: '绑定成功',
|
|
|
+ showCancel:false,
|
|
|
+ success: function(resst) {
|
|
|
+ this.showPhoneModal = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ that.$u.toast(res.data.msg);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ err => {
|
|
|
+
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
},
|
|
|
computed: {...mapGetters(['userInfo'])},
|
|
@@ -358,4 +492,90 @@ export default {
|
|
|
margin: 0 auto;
|
|
|
margin-top: 50rpx;
|
|
|
}
|
|
|
+
|
|
|
+ .modal {
|
|
|
+ &__content {
|
|
|
+ position:relative;
|
|
|
+ width: 750rpx;
|
|
|
+ height: 1208rpx;
|
|
|
+ background: #FFFFFF;
|
|
|
+ box-shadow: 0px 0px 16rpx 4rpx #919CB2;
|
|
|
+ border-radius: 32rpx 32rpx 0rpx 0rpx ;
|
|
|
+ overflow: hidden;
|
|
|
+
|
|
|
+ .top {
|
|
|
+ border-bottom: 1rpx solid #eee;
|
|
|
+ &__line {
|
|
|
+ position: absolute;
|
|
|
+ top: 10rpx;
|
|
|
+ left: 50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ width: 80rpx;
|
|
|
+ height: 8rpx;
|
|
|
+ background-color: #999;
|
|
|
+ border-radius: 4rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ &__text {
|
|
|
+ height: 77rpx;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 90rpx;
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #999;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .form {
|
|
|
+ margin: 24rpx auto 0;
|
|
|
+ width: 686rpx;
|
|
|
+ height: 360rpx;
|
|
|
+ background: #FFFFFF;
|
|
|
+ border-radius: 24rpx 24rpx 24rpx 24rpx;
|
|
|
+
|
|
|
+ .input-wrap {
|
|
|
+ padding:20rpx 80rpx;
|
|
|
+
|
|
|
+ .getcode {
|
|
|
+ color:#007AFF;
|
|
|
+ font-size: 30rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .btns {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top:160rpx;
|
|
|
+ .cancel {
|
|
|
+ font-weight: bold;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 80rpx;
|
|
|
+ color:#007AFF;
|
|
|
+ width: 200rpx;
|
|
|
+ height: 80rpx;
|
|
|
+ font-size: 30rpx;
|
|
|
+ background: #F5F5F5;
|
|
|
+ border-radius: 40rpx 40rpx 40rpx 40rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .submit {
|
|
|
+ font-weight: bold;
|
|
|
+ opacity: 0.6;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 80rpx;
|
|
|
+ color:#fff;
|
|
|
+ font-size: 30rpx;
|
|
|
+ width: 438rpx;
|
|
|
+ height: 80rpx;
|
|
|
+ background: #007AFF;
|
|
|
+ border-radius: 40rpx 40rpx 40rpx 40rpx;
|
|
|
+
|
|
|
+ &.able {
|
|
|
+ opacity: 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
</style>
|