Bladeren bron

‘我的’

wkyy 2 jaren geleden
bovenliggende
commit
02d15ad5b7

+ 18 - 0
apis/parents/mine.js

@@ -7,4 +7,22 @@ export function studentList() {
 		method: 'post',
 		url: url
 	})
+}
+
+export function changePhone(data) {
+	var url='/mobile/regUser/changePhone';
+	return requestStudent({
+		method: 'get',
+		data: data,
+		url: url
+	})
+}
+
+export function updateRegUser(data) {
+	var url='/mobile/regUser/updateRegUser';
+	return requestStudent({
+		method: 'post',
+		data: data,
+		url: url
+	})
 }

+ 1 - 2
pages/parents/classSchedule/classSchedule.vue

@@ -27,7 +27,7 @@
 					{{item.week}}
 				</view>
 				<view class="day ">
-					{{item.day}}
+					{{parseInt(item.day.slice(8))}}
 				</view>
 			</view>
 		</view>
@@ -191,7 +191,6 @@
 				return (myyear + "-" + mymonth + "-" + myweekday);
 			},
 			beforeWeek() {
-				console.log(this.activeClass)
 				this.weekDate = [];
 				this.weekDate1 = new Date(this.weekDate1.setDate(this.weekDate1.getDate() - 7));
 				this.getWeekDate();

+ 92 - 7
pages/parents/mine/changePhoneNumber/changePhoneNumber.vue

@@ -6,36 +6,121 @@
 		<view class="login-form">
 			<view class="login-form-item">
 				<view class="input">
-					<u-input  type="number" placeholder="请输入手机号" placeholder-style="font-size:16px;color:#ccc;"/>
+					<u-input  type="number" v-model="form.telephone" placeholder="填写新手机号" placeholder-style="font-size:16px;color:#ccc;"/>
 				</view>
 			</view>
 			<view class="login-form-item">
 				<view class="input">
-					<u-input    type="number" placeholder="请输入验证码" placeholder-style="font-size:16px;color:#ccc;"/>
-					<view class="code" >获取验证码</view>
+					<u-input type="number" v-model="form.verifyCode" placeholder="请输入验证码" placeholder-style="font-size:16px;color:#ccc;"/>
+					<view class="code" :style="isCodeTipsColor ? 'color: #999999;' : ''" @click="getCode">{{codeTips}}</view>
+					<u-verification-code :seconds="sendMsgSecond" ref="uCode" @change="codeChange" @end="end" @start="start" change-text="已发送(Xs)">
+					</u-verification-code>
 				</view>
 			</view>
 		</view>
 		
-		<u-button class="login-btn" type="success" shape="circle" >确定修改</u-button>
+		<u-button class="login-btn" type="success" shape="circle" @click="confirmChange">确定修改</u-button>
 		
 		
 	</view>
 </template>
 
 <script>
-	
+	import * as loginApi from '@/apis/login.js'
+	import * as mineApi from '@/apis/parents/mine.js'
+	import {
+		checkPhone
+	} from '@/apis/utils'
 	
 	export default {
 		data() {
 			return {
-
+				form: {
+					telephone: '',
+					verifyCode: '',
+				},
+				isSendMsgIng: false,
+				isCodeTipsColor: false,
+				sendMsgSecond: 60,
+				codeTips: '',
 			}
 		},
 		methods: {
+			confirmChange() {
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				mineApi.changePhone(this.form).then((response) => {
+					uni.hideLoading();
+					uni.navigateTo({
+						url: '/pages/parents/mine/changePhoneNumber/changeResult'
+					})
+				}).catch(error => {
+					uni.showToast({
+						title: error,
+						icon: "none"
+					})
+				})
+			},
+			codeChange(text) {
+				this.codeTips = text;
+			},
+			start() {
+				if (!this.isSendMsgIng) {
+					uni.showLoading({
+						title: "加载中",
+						mask: true,
+					})
+					loginApi.getVerifyCode(this.form.telephone).then((response) => {
+						uni.hideLoading();
+						this.carhelp.set("getvcodetime", new Date().getTime());
 			
-
+						if (!"") {
+							//倒计时
+							uni.showToast({
+								title: "发送成功"
+							})
+						} else {
+							uni.showToast({
+								title: "您的验证码已经发送[5分钟有效],请勿重复点击"
+							})
+						}
+					}).catch(error => {
+						uni.showToast({
+							title: error,
+							icon: "none"
+						})
+					})
+				}
+			},
+			//倒计时
+			end() {
+				this.sendMsgSecond = 60;
+				this.isSendMsgIng = false;
+				this.isCodeTipsColor = false;
+			},
+			// 获取验证码
+			getCode() {
+				if (this.$refs.uCode.canGetCode) {} else {
+					uni.showToast({
+						title: '倒计时结束后再发送',
+						icon: "none"
+					})
+					return
+				}
+			
+				var checkPhoneResult = checkPhone(this.form.telephone);
 			
+				if (checkPhoneResult !== true) {
+					uni.showToast({
+						title: checkPhoneResult,
+					})
+					return;
+				}
+				this.$refs.uCode.start();
+				this.isCodeTipsColor = true;
+			},
 		}, 
 		
 	}

+ 1 - 1
pages/parents/mine/changePhoneNumber/changeResult.vue

@@ -17,7 +17,7 @@
 				  </view>
 			   </view>
 		</view>
-		<button class="login">立即登录</button>
+		<button class="login" @click="gotoUrl('pages/parents/login/login')">立即登录</button>
 	</view>
 </template>
 

+ 128 - 6
pages/parents/mine/editProfile.vue

@@ -1,10 +1,15 @@
 <template>
 	<view>
 		<u-navbar title="编辑个人信息" >
-			<slot name="right">保存</slot>
+			<view class="slot-wrap" @click="save">
+				保存
+			</view>
 		</u-navbar>
-		<view class="photo">
-			<img src="../../../assets/img/editPhoto.png" alt="">
+		<view class="photo" @click="uploadPhoto">
+			<u-avatar v-if="form.headImg != null" class="avatar"
+				:src="form.headImg+'?x-oss-process=image/resize,m_fill,w_256,h_256'" size="160">
+				<img src="" alt="">
+			</u-avatar>
 			<view class="edit-photo">
 				<img src="../../../assets/img/md-camera_alt@1x(1).png" alt="">
 			</view>
@@ -18,7 +23,7 @@
 				昵称
 			</view>
 			<view class="name">
-				<input type="text" name="" id="" placeholder="用户191012" style="text-align: right;">
+				<input type="text" name="" id="" v-model="form.nickName" style="text-align: right;">
 			</view>
 			
 		</view>
@@ -27,14 +32,131 @@
 </template>
 
 <script>
+	import * as loginApi from '@/apis/login.js'
+	import * as mineApi from '@/apis/parents/mine.js'
+	
 	export default {
 		data() {
 			return {
-				
+				form: {
+					headImg: '',
+					nickName: ''
+				}
 			}
 		},
+		onReady() {
+			this.getParentsInfo();
+		},
 		methods: {
-			
+			getParentsInfo() {
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				loginApi.findByOpenId({
+					openId: this.carhelp.getOpenId()
+				}).then((response) => {
+					uni.hideLoading();
+					this.form.headImg = response.data.regUser.headImg;
+					this.form.nickName = response.data.regUser.nickName;
+				}).catch(error => {
+					uni.showToast({
+						title: error,
+						icon: "none"
+					})
+				})
+			},
+			save() {
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				mineApi.updateRegUser(this.form).then((response) => {
+					uni.hideLoading();
+					uni.navigateBack({
+						
+					})
+				}).catch(error => {
+					uni.showToast({
+						title: error,
+						icon: "none"
+					})
+				})
+			},
+			uploadPhoto() {
+				let _self = this;
+				
+				const crop = {
+					quality: 100,
+					width: 600,
+					height: 600,
+					resize: true
+				};
+				
+				// 上传图片
+				uni.chooseImage({
+					count: 1,
+					crop,
+					success: async (res) => {
+						//(res);
+						let tempFile = res.tempFiles[0],
+							avatar_file = {
+								// #ifdef H5
+								extname: tempFile.name.split('.')[tempFile.name.split('.').length - 1],
+								// #endif
+								// #ifndef H5
+								extname: tempFile.path.split('.')[tempFile.path.split('.').length - 1]
+								// #endif
+							},
+							filePath = res.tempFilePaths[0]
+							
+						// #ifndef APP-PLUS
+						//(`filePath=${filePath}`)
+						
+						//非app端用前端组件剪裁头像,app端用内置的原生裁剪
+						let fileData = await new Promise((callback) => {
+							uni.navigateTo({
+								url: '/pages/teacher/editProfile/cropImage?path=' + filePath +
+									`&options=${JSON.stringify(crop)}`,
+								animationType: "fade-in",
+								events: {
+									success: url => {
+										callback(url)
+									}
+								}
+							});
+						})
+						// #endif
+						
+						//返回 base64 图片
+						//(fileData);
+						
+						var token = _self.carhelp.getToken()
+						
+						uni.showLoading({
+							title: '上传中'
+						});
+						
+						uni.request({
+						    url: process.car.BASE_URL + "uploadBase64",
+							method: 'POST',
+						    data: {
+						        photoBase64Data: fileData
+						    },
+						    header: {
+						        'Authorization': token,
+								'content-type': 'application/x-www-form-urlencoded'
+						    },
+						    success: (res) => {
+								let jsonData = res.data;
+						        _self.form.headImg = jsonData.data;
+										// _self.save();
+								uni.hideLoading();
+						    }
+						});
+					}
+				});
+			},
 		}
 	}
 </script>

+ 34 - 7
pages/parents/mine/mine.vue

@@ -1,12 +1,15 @@
 <template>
 	<view>
-		<view class="head">
+		<view class="head" @click="toEditProfile">
 			<view class="photo">
-				<img src="../../../assets/img/minePhoto.png" alt="">
+				<u-avatar v-if="form.headImg != null" class="avatar"
+					:src="form.headImg+'?x-oss-process=image/resize,m_fill,w_256,h_256'" size="112">
+					<img src="" alt="">
+				</u-avatar>
 			</view>
 			<view class="infos">
 				<view class="name">
-					用户191012
+					{{form.nickName}}
 				</view>
 				<view class="modification">
 					点击修改个人信息
@@ -126,7 +129,7 @@
 					</view>
 				</view>
 			</view>
-			<view class="item">
+			<view class="item" @click="gotoUrl('pages/parents/mine/changePhoneNumber/changePhoneNumber')">
 				<view class="title">
 					<view class="icon">
 						<img src="../../../assets/img/riLine-smartphone-line@1x(1).png" alt="">
@@ -241,7 +244,10 @@
 		},
 		data() {
 			return {
-				parentsInfo: {},
+				form: {
+					headImg: '',
+					nickName: ''
+				},
 				show: false,
 				title: '退出账号',
 				content: '是否退出当前账号?',
@@ -249,11 +255,27 @@
 			}
 		},
 		onReady() {
+			this.getParentsInfo();
 			this.getStudentList();
 		},
 		methods: {
 			getParentsInfo() {
-
+				uni.showLoading({
+					title: "加载中",
+					mask: true,
+				})
+				loginApi.findByOpenId({
+					openId: this.carhelp.getOpenId()
+				}).then((response) => {
+					uni.hideLoading();
+					this.form.headImg = response.data.regUser.headImg;
+					this.form.nickName = response.data.regUser.nickName;
+				}).catch(error => {
+					uni.showToast({
+						title: error,
+						icon: "none"
+					})
+				})
 			},
 			getStudentList() {
 				uni.showLoading({
@@ -291,7 +313,12 @@
 						icon: "none"
 					})
 				})
-			}
+			},
+			toEditProfile() {
+				uni.navigateTo({
+					url: '/pages/parents/mine/editProfile'
+				})
+			},
 		}
 	}
 </script>

+ 2 - 1
pages/teacher/editProfile/editProfile.vue

@@ -4,7 +4,8 @@
 		<view class="main">
 			
 			<view class="photo" @click="uploadPhoto">
-				<u-avatar v-if="form.headImg != null" class="avatar" :src="form.headImg+'?x-oss-process=image/resize,m_fill,w_256,h_256'" size="216">
+				<u-avatar v-if="form.headImg != null" class="avatar"
+					:src="form.headImg+'?x-oss-process=image/resize,m_fill,w_256,h_256'" size="216">
 					<img src="" alt="">
 				</u-avatar>
 				<!-- <img src="../../../assets/img/photowoman.png" alt=""> -->