196 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
<template>
 | 
						||
	<page-meta :page-font-size="fontValue+'px'" :root-font-size="fontValue+'px'"></page-meta>
 | 
						||
  <view class="container">
 | 
						||
    <!-- 顶部导航栏 -->
 | 
						||
<!--    <view class="header">-->
 | 
						||
<!--      <view class="back-icon" @click="goBack">-->
 | 
						||
<!--        <image class="icon" :src="require('@/static/images/icons/back.png')" mode="aspectFit"></image>-->
 | 
						||
<!--      </view>-->
 | 
						||
<!--    </view>-->
 | 
						||
 | 
						||
    <!-- 主要内容区域 -->
 | 
						||
    <view class="content">
 | 
						||
      <view class="title-section">
 | 
						||
        <text class="title">输入新的手机号</text>
 | 
						||
        <text class="subtitle">换绑手机号后,将使用新的手机号登录</text>
 | 
						||
      </view>
 | 
						||
 | 
						||
      <!-- 手机号输入框 -->
 | 
						||
      <view class="input-wrapper">
 | 
						||
        <input type="number" v-model="phoneNumber" placeholder="请输入手机号" maxlength="11" class="phone-input"/>
 | 
						||
        <view class="clear-icon" v-if="phoneNumber" @click="clearPhoneNumber">
 | 
						||
          <image class="icon" :src="require('@/static/images/my/cancel.png')" mode="aspectFit"></image>
 | 
						||
        </view>
 | 
						||
      </view>
 | 
						||
 | 
						||
      <!-- 获取验证码按钮 -->
 | 
						||
      <!-- <button class="verify-btn" :disabled="!isValidPhone" @click="handleGetVerifyCode">获取短信验证码</button> -->
 | 
						||
			
 | 
						||
			<button class="verify-btn" @click="handleGetVerifyCode">修改</button>
 | 
						||
    </view>
 | 
						||
  </view>
 | 
						||
</template>
 | 
						||
 | 
						||
<script>
 | 
						||
	
 | 
						||
	import {
 | 
						||
		getUserProfile,
 | 
						||
		updateUserProfile
 | 
						||
	} from "@/api/system/user"
 | 
						||
export default {
 | 
						||
  data() {
 | 
						||
    return { 
 | 
						||
		fontValue:uni.getStorageSync('fontSize') || 8,
 | 
						||
		phoneNumber: '',
 | 
						||
		countdown: 0,
 | 
						||
		userInfo: {}
 | 
						||
    }
 | 
						||
  },
 | 
						||
  computed: {
 | 
						||
    isValidPhone() {
 | 
						||
      return /^1[3-9]\d{9}$/.test(this.phoneNumber)
 | 
						||
    }
 | 
						||
  },
 | 
						||
	onLoad() {
 | 
						||
		this.getUserInfo()
 | 
						||
	},
 | 
						||
  methods: {
 | 
						||
		getUserInfo() {
 | 
						||
			this.$store.dispatch('GetInfo').then(res => {
 | 
						||
				console.log(res)
 | 
						||
				this.userInfo = res.user;
 | 
						||
				this.userInfo.postIds = res.postIds||[]
 | 
						||
				this.userInfo.roleIds = res.roleIds||[]
 | 
						||
			})
 | 
						||
		},
 | 
						||
		
 | 
						||
    goBack() {
 | 
						||
      uni.navigateBack()
 | 
						||
    },
 | 
						||
		
 | 
						||
    clearPhoneNumber() {
 | 
						||
      this.phoneNumber = ''
 | 
						||
    },
 | 
						||
		
 | 
						||
    handleGetVerifyCode() {
 | 
						||
		if (!this.isValidPhone) {
 | 
						||
			uni.showToast({ title: '请正确输入手机号', icon: 'none' })
 | 
						||
			return
 | 
						||
		} 
 | 
						||
			// this.userInfo.phonenumber = this.phoneNumber	
 | 
						||
			// updateUserProfile(this.userInfo).then(res => {
 | 
						||
			// 	uni.showToast({ title: '修改成功', icon: 'success',duration: 2000 });
 | 
						||
			// 	setTimeout(() => {
 | 
						||
			// 		uni.navigateBack()
 | 
						||
			// 	},2000)
 | 
						||
			// })
 | 
						||
 | 
						||
      // 这里添加获取验证码的逻辑
 | 
						||
      uni.navigateTo({
 | 
						||
        url: `/pages/mine/me/phoneCode?phone=${this.phoneNumber}`
 | 
						||
      })
 | 
						||
    }
 | 
						||
  }
 | 
						||
}
 | 
						||
</script>
 | 
						||
 | 
						||
<style lang="scss">
 | 
						||
.container {
 | 
						||
  min-height: 100vh;
 | 
						||
  background-color: #fff;
 | 
						||
}
 | 
						||
 | 
						||
.header {
 | 
						||
  padding: 44px 32rpx 0;
 | 
						||
  height: 88rpx;
 | 
						||
  display: flex;
 | 
						||
  align-items: center;
 | 
						||
 | 
						||
  .back-icon {
 | 
						||
    padding: 20rpx;
 | 
						||
    margin-left: -20rpx;
 | 
						||
 | 
						||
    .icon {
 | 
						||
      width: 40rpx;
 | 
						||
      height: 40rpx;
 | 
						||
    }
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
.content {
 | 
						||
  padding: 32rpx;
 | 
						||
}
 | 
						||
 | 
						||
.title-section {
 | 
						||
  margin-bottom: 48rpx;
 | 
						||
 | 
						||
  .title {
 | 
						||
    font-size: 40rpx;
 | 
						||
    font-weight: 500;
 | 
						||
    color: #333;
 | 
						||
    margin-bottom: 16rpx;
 | 
						||
    display: block;
 | 
						||
  }
 | 
						||
 | 
						||
  .subtitle {
 | 
						||
    font-size: 28rpx;
 | 
						||
    color: #999;
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
.input-wrapper {
 | 
						||
  position: relative;
 | 
						||
  margin-bottom: 48rpx;
 | 
						||
 | 
						||
  .phone-input {
 | 
						||
    width: 100%;
 | 
						||
    height: 96rpx;
 | 
						||
    background: #F5F5F5;
 | 
						||
    border-radius: 48rpx;
 | 
						||
    padding: 0 88rpx 0 48rpx;
 | 
						||
    font-size: 32rpx;
 | 
						||
    color: #333;
 | 
						||
 | 
						||
    &::placeholder {
 | 
						||
      color: #999;
 | 
						||
    }
 | 
						||
  }
 | 
						||
 | 
						||
  .clear-icon {
 | 
						||
    position: absolute;
 | 
						||
    right: 32rpx;
 | 
						||
    top: 50%;
 | 
						||
    transform: translateY(-50%);
 | 
						||
    padding: 16rpx;
 | 
						||
 | 
						||
    .icon {
 | 
						||
      width: 32rpx;
 | 
						||
      height: 32rpx;
 | 
						||
    }
 | 
						||
  }
 | 
						||
}
 | 
						||
 | 
						||
.verify-btn {
 | 
						||
  width: 100%;
 | 
						||
  height: 72rpx;
 | 
						||
  background: #FF8126;
 | 
						||
  color: #fff;
 | 
						||
  font-size: 28rpx;
 | 
						||
  font-weight: 500;
 | 
						||
  border-radius: 44rpx;
 | 
						||
  display: flex;
 | 
						||
  align-items: center;
 | 
						||
  justify-content: center;
 | 
						||
  border: none;
 | 
						||
 | 
						||
  &:disabled {
 | 
						||
    opacity: 0.5;
 | 
						||
  }
 | 
						||
 | 
						||
  &:active {
 | 
						||
    opacity: 0.9;
 | 
						||
  }
 | 
						||
}
 | 
						||
</style>
 | 
						||
 |