oil-station/gasStation-uni/pagesMy/editUser/index.vue

282 lines
6.8 KiB
Vue
Raw Normal View History

2024-08-16 18:26:19 +08:00
<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>