添加个人信息
parent
e57a20cca6
commit
742b29f6c2
@ -0,0 +1,34 @@
|
|||||||
|
import request from '@/plugin/axios'
|
||||||
|
// 创建银行账户信息
|
||||||
|
export function createBankInfo(data) {
|
||||||
|
return request({
|
||||||
|
url: "/system/bank-info/create",
|
||||||
|
method: "post",
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新银行账户信息
|
||||||
|
export function updateBankInfo(data) {
|
||||||
|
return request({
|
||||||
|
url: "/system/bank-info/update",
|
||||||
|
method: "put",
|
||||||
|
data: data,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除银行账户信息
|
||||||
|
export function deleteBankAccountInfo(id) {
|
||||||
|
return request({
|
||||||
|
url: "/system/bank-info/delete?id=" + id,
|
||||||
|
method: "delete",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取银行账户信息详情
|
||||||
|
export function getDetail(id) {
|
||||||
|
return request({
|
||||||
|
url: "/system/bank-info/get?id=" + id,
|
||||||
|
method: "get",
|
||||||
|
});
|
||||||
|
}
|
@ -0,0 +1,196 @@
|
|||||||
|
<template>
|
||||||
|
<div class="common-list-contain">
|
||||||
|
<van-tabs v-model="active" @click="onChange" class="tabs">
|
||||||
|
<van-tab title="基本资料">
|
||||||
|
<van-field
|
||||||
|
v-model="user.nickname"
|
||||||
|
clearable
|
||||||
|
label="用户昵称"
|
||||||
|
placeholder="请输入用户昵称"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
v-model="user.mobile"
|
||||||
|
required
|
||||||
|
clearable
|
||||||
|
label="手机号码"
|
||||||
|
placeholder="请输入手机号码"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
v-model="user.email"
|
||||||
|
required
|
||||||
|
clearable
|
||||||
|
label="邮箱"
|
||||||
|
placeholder="请输入邮箱"
|
||||||
|
/>
|
||||||
|
<div class="van-cell van-field">
|
||||||
|
<div class="van-cell__title van-field__label">
|
||||||
|
<span>性别</span>
|
||||||
|
</div>
|
||||||
|
<div class="van-cell__value van-field__value">
|
||||||
|
<div class="van-field__body">
|
||||||
|
<input type="radio" name="sex" v-model="user.sex" :value="1" />男
|
||||||
|
<span style="display: inline-block; width: 20px"></span>
|
||||||
|
<input type="radio" name="sex" v-model="user.sex" :value="2" />女
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="btn-box">
|
||||||
|
<van-button
|
||||||
|
type="info"
|
||||||
|
size="small"
|
||||||
|
style="width: 30%"
|
||||||
|
@click="saveUser"
|
||||||
|
>保存</van-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="修改密码">
|
||||||
|
<van-field
|
||||||
|
v-model="password.oldPassword"
|
||||||
|
clearable
|
||||||
|
type="password"
|
||||||
|
label="旧密码"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
v-model="password.newPassword"
|
||||||
|
required
|
||||||
|
clearable
|
||||||
|
type="password"
|
||||||
|
label="新密码"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
v-model="password.confirmPassword"
|
||||||
|
required
|
||||||
|
clearable
|
||||||
|
type="password"
|
||||||
|
label="确认密码"
|
||||||
|
placeholder="请输入"
|
||||||
|
/>
|
||||||
|
<div class="btn-box">
|
||||||
|
<van-button
|
||||||
|
type="info"
|
||||||
|
size="small"
|
||||||
|
style="width: 30%"
|
||||||
|
@click="savePassword"
|
||||||
|
>保存</van-button
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="银行">
|
||||||
|
<BankInfo :user="user" @update="getUser"></BankInfo>
|
||||||
|
</van-tab>
|
||||||
|
</van-tabs>
|
||||||
|
|
||||||
|
<div class="common-bottom-btns" style="bottom: 6rem">
|
||||||
|
<div class="common-bottom-btn" @click="handleBack">
|
||||||
|
<img src="@/assets/images/icons/home.png" alt="" />
|
||||||
|
<span>返回首页</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
updateUserProfile,
|
||||||
|
getUserProfile,
|
||||||
|
updateUserPwd
|
||||||
|
} from '@/api/system/user'
|
||||||
|
import BankInfo from './bankInfo'
|
||||||
|
export default {
|
||||||
|
components: { BankInfo },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
active: 0,
|
||||||
|
user: {
|
||||||
|
nickname: '',
|
||||||
|
mobile: '',
|
||||||
|
email: '',
|
||||||
|
sex: null
|
||||||
|
},
|
||||||
|
password: {
|
||||||
|
oldPassword: '',
|
||||||
|
newPassword: '',
|
||||||
|
confirmPassword: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getUser()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onChange(index, title) {
|
||||||
|
this.active = index
|
||||||
|
},
|
||||||
|
// 获取用户信息
|
||||||
|
getUser() {
|
||||||
|
getUserProfile().then((response) => {
|
||||||
|
this.user = response.data
|
||||||
|
})
|
||||||
|
},
|
||||||
|
saveUser() {
|
||||||
|
if (!this.user.mobile) {
|
||||||
|
this.$fm('手机号不可为空!')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!this.user.email) {
|
||||||
|
this.$fm('邮箱不可为空!')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
updateUserProfile(this.user).then((res) => {
|
||||||
|
if (res.data) this.$fm('保存成功!')
|
||||||
|
})
|
||||||
|
},
|
||||||
|
savePassword() {
|
||||||
|
if (!this.password.oldPassword) {
|
||||||
|
this.$fm('不可为空!')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (!this.password.newPassword) {
|
||||||
|
this.$fm('不可为空!')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.password.confirmPassword !== this.password.newPassword) {
|
||||||
|
this.$fm('两次输入的密码不一致')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const regex = new RegExp(
|
||||||
|
/^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*\.])[A-Za-z\d!@#$%^&*\.]{8,16}$/
|
||||||
|
)
|
||||||
|
if (!regex.test(this.password.newPassword)) {
|
||||||
|
this.$fm('密码必须包含大写字母、数字、特殊字符, 且8-16位')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
updateUserPwd(this.password.oldPassword, this.password.newPassword).then(
|
||||||
|
(response) => {
|
||||||
|
this.$fm('修改成功')
|
||||||
|
}
|
||||||
|
)
|
||||||
|
},
|
||||||
|
handleBack() {
|
||||||
|
history.back()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
@import '~@/assets/style/common/form.scss';
|
||||||
|
.tabs {
|
||||||
|
::v-deep .van-tabs__content {
|
||||||
|
margin-top: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.my-radio {
|
||||||
|
.van-radio__icon {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn-box {
|
||||||
|
margin-top: 40px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue