282 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			282 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
|  | <template> | |||
|  | 	<view class="content"> | |||
|  | 		<view class="container"> | |||
|  | 			<view class="my-header"> | |||
|  | 				<view class="my-icons" @click="goBack"> <uni-icons type="left" size="16"></uni-icons> </view> | |||
|  | 				<view class="my-text">{{title}}</view> | |||
|  | 				<view class="my-icons"></view> | |||
|  | 			</view> | |||
|  | 			 | |||
|  | 			<!-- 修改用户昵称 --> | |||
|  | 			<view v-if="editType == 0" class="pBox"> | |||
|  | 				<u-form :model="form" ref="uForm"> | |||
|  | 					<u-form-item label="昵称" prop="name"> | |||
|  | 						<u-input v-model="form.name" clearable :border="false" placeholder="请填写昵称"/> | |||
|  | 					</u-form-item> | |||
|  | 				</u-form> | |||
|  | 				<view class="but-sub" @click="submit">提交保存</view> | |||
|  | 			</view> | |||
|  | 			 | |||
|  | 			<!-- 修改用户手机号 --> | |||
|  | 			<view v-if="editType == 1" class="pBox"> | |||
|  | 				<u-form :model="form" ref="uForm"> | |||
|  | 					<u-form-item label="手机号" prop="mobile" label-width="70px"> | |||
|  | 						<u-input v-model="mobile" clearable :border="false" placeholder="请填写手机号"/> | |||
|  | 					</u-form-item> | |||
|  | 					<u-form-item label="验证码" prop="code" label-width="70px"> | |||
|  | 						<u-input v-model="code" clearable :border="false" placeholder="请填写验证码"/> | |||
|  | 						<u-button slot="right" :disabled="isCode" size="mini" type="success" @click="getCode">{{codeText}}</u-button> | |||
|  | 					</u-form-item> | |||
|  | 				</u-form> | |||
|  | 				<view class="but-sub" @click="submit">保存变更</view> | |||
|  | 			</view> | |||
|  | 			 | |||
|  | 			<!-- 修改用户车牌号 --> | |||
|  | 			<view v-if="editType == 2" class="pBox"> | |||
|  | 				<view></view> | |||
|  | 				<u-form :model="form" ref="uForm"> | |||
|  | 					<u-form-item label="车牌号" prop="mobile" label-width="70px"> | |||
|  | 						<u-input v-model="form.carNo" @focus="show = true" clearable :border="false" placeholder="请输入车牌号"/> | |||
|  | 					</u-form-item> | |||
|  | 				</u-form> | |||
|  | 				<view class="but-sub" @click="submit">保存</view> | |||
|  | 			</view> | |||
|  | 			<!-- <u-keyboard ref="uKeyboard" :tips="value" mode="number" @cancel="show = false" @confirm="submitAmount" --> | |||
|  | 				<!-- @change="valChange" @backspace="backspace" v-model="pic" :show="show" mode="car"></u-keyboard> --> | |||
|  | 			<u-keyboard ref="uKeyboard" mode="car" v-model="value" :show="show" @cancel="show = false"  | |||
|  | 				@confirm="submitAmount" @change="valChange" @backspace="backspace" :tips="value"></u-keyboard> | |||
|  | 		</view> | |||
|  | 	</view> | |||
|  | </template> | |||
|  | 
 | |||
|  | <script> | |||
|  | 	import request from "../../utils/request"; | |||
|  | 	export default { | |||
|  | 		data() { | |||
|  | 			return { | |||
|  | 				pic:0, | |||
|  | 				value:"", | |||
|  | 				show:false, | |||
|  | 				// 标题
 | |||
|  | 				title: '修改昵称', | |||
|  | 				// 修改类型
 | |||
|  | 				editType:2, | |||
|  | 				// 提交表单
 | |||
|  | 				form:{}, | |||
|  | 				// 手机号
 | |||
|  | 				mobile: "", | |||
|  | 				// 验证码
 | |||
|  | 				code:"", | |||
|  | 				codeText: '获取验证码', | |||
|  | 				// 是否正在获取验证码
 | |||
|  | 				isCode:false, | |||
|  | 				timestamp:60, | |||
|  | 				rules: { | |||
|  | 					name: [ | |||
|  | 						{ | |||
|  | 							required: true,message: '请填写昵称', | |||
|  | 							// 可以单个或者同时写两个触发验证方式
 | |||
|  | 							trigger: 'blur,change' | |||
|  | 						} | |||
|  | 					], | |||
|  | 					mobile: [ | |||
|  | 						{ required: true, message: '请输入手机号', trigger: ['change','blur'], }, | |||
|  | 						{ | |||
|  | 							// 自定义验证函数,见上说明
 | |||
|  | 							validator: (rule, value, callback) => { | |||
|  | 								// 上面有说,返回true表示校验通过,返回false表示不通过
 | |||
|  | 								// this.$u.test.mobile()就是返回true或者false的
 | |||
|  | 								return this.$u.test.mobile(value); | |||
|  | 							}, | |||
|  | 							message: '手机号码不正确', | |||
|  | 							// 触发器可以同时用blur和change
 | |||
|  | 							trigger: ['change','blur'], | |||
|  | 						} | |||
|  | 					] | |||
|  | 				} | |||
|  | 			} | |||
|  | 		}, | |||
|  | 		onLoad(e) { | |||
|  | 			this.editType = e.editType | |||
|  | 			if (this.editType == 0){ | |||
|  | 				this.title = "修改昵称" | |||
|  | 			}else if(this.editType == 1){ | |||
|  | 				this.title = "修改手机号" | |||
|  | 			}else if(this.editType == 2){ | |||
|  | 				this.title = "我的车" | |||
|  | 			}else{ | |||
|  | 				this.title = "支付密码" | |||
|  | 			} | |||
|  | 		}, | |||
|  | 		// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
 | |||
|  | 		onReady() { | |||
|  | 			// this.$refs.uForm.setRules(this.rules);
 | |||
|  | 		}, | |||
|  | 		onShow() { | |||
|  | 			this.getUser() | |||
|  | 		}, | |||
|  | 		components: { | |||
|  | 
 | |||
|  | 		}, | |||
|  | 		methods: { | |||
|  | 			// 数字键盘确定按钮
 | |||
|  | 			submitAmount(){ | |||
|  | 				if (this.value!=""){ | |||
|  | 					this.show = false | |||
|  | 				}else{ | |||
|  | 					uni.showToast({ | |||
|  | 						title:"请输入车牌号", | |||
|  | 						icon:"error" | |||
|  | 					}) | |||
|  | 				} | |||
|  | 			}, | |||
|  | 			valChange(val) { | |||
|  | 				// 按键震动
 | |||
|  | 				uni.vibrateShort({ | |||
|  | 					success: function () {} | |||
|  | 				}); | |||
|  | 				// 将每次按键的值拼接到value变量中,注意+=写法
 | |||
|  | 				this.value += val; | |||
|  | 				this.form.carNo += val; | |||
|  | 			}, | |||
|  | 			// 退格键被点击
 | |||
|  | 			backspace() { | |||
|  | 				uni.vibrateShort({ | |||
|  | 					success: function () {} | |||
|  | 				}); | |||
|  | 				// 删除value的最后一个字符
 | |||
|  | 				if (this.value.length) { | |||
|  | 					this.value = this.value.substr(0, this.value.length - 1); | |||
|  | 					this.form.carNo = this.value | |||
|  | 				} | |||
|  | 			}, | |||
|  | 			// 倒计时60s
 | |||
|  | 			countdown(){ | |||
|  | 				let _this = this | |||
|  | 				setInterval(() => { | |||
|  | 				    // countdown减1
 | |||
|  | 				    _this.timestamp--; | |||
|  | 					_this.codeText = _this.timestamp+"秒重新获取" | |||
|  | 				    // 如果倒计时为0,清除定时器
 | |||
|  | 				    if(_this.timestamp === 0) { | |||
|  | 						_this.isCode = false | |||
|  | 						_this.timestamp = 60 | |||
|  | 				    } | |||
|  | 				}, 1000); | |||
|  | 			}, | |||
|  | 			// 获取验证码
 | |||
|  | 			getCode() { | |||
|  | 				this.isCode = true | |||
|  | 				// 调用后端接口
 | |||
|  | 				this.countdown() | |||
|  | 			}, | |||
|  | 			// 查询当前登录用户信息
 | |||
|  | 			getUser(){ | |||
|  | 				request({ | |||
|  | 					url: 'business/userManager/user/getUser', | |||
|  | 					method: 'get', | |||
|  | 				}).then(res => { | |||
|  | 					if (res.data != null && res.data != "" && res.data != undefined) { | |||
|  | 						this.form = res.data | |||
|  | 					} | |||
|  | 				}) | |||
|  | 			}, | |||
|  | 			// 提交表单
 | |||
|  | 			submit(){ | |||
|  | 				// this.$refs.uForm.validate(valid => {
 | |||
|  | 				// 	if (valid) {
 | |||
|  | 				// 		console.log('验证通过');
 | |||
|  | 						request({ | |||
|  | 							url: 'business/userManager/user/edit', | |||
|  | 							method: 'put', | |||
|  | 							data:this.form, | |||
|  | 						}).then(res => { | |||
|  | 							if (res.code == 200) { | |||
|  | 								uni.navigateTo({ | |||
|  | 									url:"/pagesMy/setup/index" | |||
|  | 								}) | |||
|  | 							} | |||
|  | 						}) | |||
|  | 				// 	} else {
 | |||
|  | 				// 		console.log('验证失败');
 | |||
|  | 				// 	}
 | |||
|  | 				// });
 | |||
|  | 			}, | |||
|  | 			goBack() { | |||
|  | 				uni.navigateBack() | |||
|  | 			} | |||
|  | 		} | |||
|  | 	} | |||
|  | </script> | |||
|  | 
 | |||
|  | <style scoped lang="scss"> | |||
|  | 	.pBox{ | |||
|  | 		width: 90%; | |||
|  | 		margin: 0 auto; | |||
|  | 	} | |||
|  | 	.but-sub{ | |||
|  | 		width: 100%; | |||
|  | 		height: 45px; | |||
|  | 		line-height: 45px; | |||
|  | 		margin: 0 auto; | |||
|  | 		margin-top: 20px; | |||
|  | 		background-color: #2b7aff; | |||
|  | 		color: white; | |||
|  | 		border-radius: 10px; | |||
|  | 		text-align: center; | |||
|  | 	} | |||
|  | 	.content { | |||
|  | 		background: white; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	.container { | |||
|  | 		width: 100%; | |||
|  | 		height: 100vh; | |||
|  | 		box-sizing: border-box; | |||
|  | 		padding-top: 88px; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	.my-header { | |||
|  | 		width: 100%; | |||
|  | 		height: 88px; | |||
|  | 		background: #ffffff; | |||
|  | 		display: flex; | |||
|  | 		align-items: center; | |||
|  | 		justify-content: space-between; | |||
|  | 		color: #000; | |||
|  | 		box-sizing: border-box; | |||
|  | 		padding: 0px 15px; | |||
|  | 		padding-top: 40px; | |||
|  | 
 | |||
|  | 		.my-icons { | |||
|  | 			width: 20px; | |||
|  | 
 | |||
|  | 		} | |||
|  | 
 | |||
|  | 		position: fixed; | |||
|  | 		top: 0px; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	.box-hang { | |||
|  | 		background-color: white; | |||
|  | 		width: 100%; | |||
|  | 		display: flex; | |||
|  | 		align-items: center; | |||
|  | 		justify-content: space-between; | |||
|  | 		box-sizing: border-box; | |||
|  | 		padding: 15px 10px; | |||
|  | 		border-bottom: 1px solid #f4f5f6; | |||
|  | 	} | |||
|  | 
 | |||
|  | 	.touxiang { | |||
|  | 		width: 50px; | |||
|  | 		height: 50px; | |||
|  | 		border-radius: 50%; | |||
|  | 		overflow: hidden; | |||
|  | 		// background-color: #f4f5f6;
 | |||
|  | 	} | |||
|  | 
 | |||
|  | 	.dis { | |||
|  | 		color: #a69999; | |||
|  | 	} | |||
|  | </style> |