Browse Source

增加实名认证

master
panxiaohe 2 years ago
parent
commit
e1474668dc
  1. 5
      config/index.js
  2. 9
      src/api/user/user.js
  3. 10
      src/router/index.js
  4. 18
      src/views/userCenter/changeInfo/changePhone.vue
  5. 284
      src/views/userCenter/changeInfo/changeRealName.vue
  6. 25
      src/views/userCenter/userInfo/userInfo.vue

5
config/index.js

@ -9,15 +9,14 @@ function resolve (dir) {
module.exports = {
dev: {
// Paths
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {
'/api': {
// target: 'https://ceres.zkthink.com/api', // 测试
//target: 'http://localhost:9007', // 测试
target: 'http://122.9.152.120/ceres-app-api', //
target: 'http://localhost:9007', // 测试
// target: 'http://122.9.152.120/ceres-app-api', //
// target: 'https://shopapi.zkthink.com', // 测试
// target: 'http://3j073r3905.qicp.vip', // 测试
// target: 'http://3j073r3905.qicp.vip:29544', // 测试

9
src/api/user/user.js

@ -44,6 +44,15 @@ export function changePhone (data) {
})
}
// 实名认证
export function changeRealName (data) {
return request({
url: '/user/updateRealName',
method: 'put',
data
})
}
// 身份验证
export function checkUser (params) {
return request({

10
src/router/index.js

@ -114,6 +114,16 @@ const router = new Router({
searchVisible: false
}
},
// 实名认证
{
path: '/changeRealName',
name: 'changeRealName',
component: () => import('@/views/userCenter/changeInfo/changeRealName'),
meta: {
logoText: '',
searchVisible: false
}
},
// 评论
{
path: '/myEvaluate',

18
src/views/userCenter/changeInfo/changePhone.vue

@ -99,7 +99,7 @@
</div>
</template>
<script>
import {mapGetters} from 'vuex'
import {mapGetters, mapMutations} from 'vuex'
import ShopStep from '@/components/base/steps.vue'
@ -108,7 +108,8 @@ import {
} from '@/api/login.js'
import {
changePhone,
checkUser
checkUser,
getUserInfo
} from '@/api/user/user.js'
export default {
@ -155,6 +156,18 @@ export default {
this.phone = this.verifyIphone.substr(0, 3) + '****' + this.verifyIphone.substr(7, this.verifyIphone.split('').length)
},
methods: {
...mapMutations({
setUserInfo: 'SET_USERINFO' //
}),
async getUserInfoData () {
const response = await getUserInfo()
const res = response.data
if (res.code === '200') {
this.setUserInfo(res.data)
} else {
this.$message.error(res.message)
}
},
//
async getCode () {
if (!(/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/.test(this.iphoneNum))) {
@ -224,6 +237,7 @@ export default {
})
const res = response.data
if (res.code === '200') {
this.getUserInfoData()
this.active = 2
} else {
this.$message.warning(res.message)

284
src/views/userCenter/changeInfo/changeRealName.vue

@ -0,0 +1,284 @@
<template>
<div class="container">
<el-container>
<el-header>
<el-row class="title">实名认证</el-row>
</el-header>
<el-main>
<el-row>
<el-col :span="18" :offset="3">
<ShopStep :data="stepsArr" :active="active" />
</el-col>
</el-row>
<div v-if="active == 0">
<el-row class="mar-top-30">
<el-col :span="8" :offset="9">
<span>已绑定的手机号码{{ phone }}</span>
</el-col>
</el-row>
<el-row class="mar-top-30">
<el-col class="flex-row-plus" :span="5" :offset="8">
<el-input class="codeipt" v-model="verifyCode" placeholder="验证码"></el-input>
</el-col>
<el-col class="flex-row-plus" :span="3">
<el-button
v-if="isoldCodeShow"
class="codebut"
@click="getoldCode"
>{{ oldcodeText }}</el-button
>
<el-button v-else class="codebut codeDisable">{{
oldcodeText
}}</el-button>
</el-col>
</el-row>
<el-row class="mar-top-30">
<el-col class="flex-row-plus" :span="4" :offset="10">
<el-button class="submitBut" @click="checkUser" type="primary"
>下一步</el-button
>
</el-col>
</el-row>
</div>
<div v-if="active == 1">
<el-row class="mar-top-30">
<el-col :span="8" :offset="8">
<el-input class="codeipt" v-model="realName" placeholder="输入真实姓名"></el-input>
</el-col>
</el-row>
<el-row class="mar-top-30">
<el-col :span="8" :offset="8">
<el-input class="codeipt" v-model="idCard" placeholder="输入身份证号码"></el-input>
</el-col>
</el-row>
<el-row class="mar-top-30">
<el-col class="flex-row-plus" :span="4" :offset="10">
<el-button class="submitBut" @click="updateRealName" type="primary" v-throttle
>提交</el-button
>
</el-col>
</el-row>
</div>
<div v-if="active == 2" style="margin:70px 0">
<el-row>
<el-col :span="8" :offset="8" style="text-align:center;margin-bottom:20px;">
<icon-svg style="font-size: 120px; margin-bottom: 20px;" icon-class="success" />
</el-col>
</el-row>
<el-row>
<el-col :span="8" :offset="8" style="text-align:center;">
<span>恭喜您实名认证已完成</span>
</el-col>
</el-row>
</div>
</el-main>
<el-footer class="mar-top-50">
<el-row class="flex-column-plus mar-20-30">
<span class="fs8" style="color:#C83732;font-size:16px;">安全服务提示</span>
<span class="mar-top-20 fs7 font-color-9A9"
>
实名认证后才可购买跨境商品</span
>
</el-row>
</el-footer>
</el-container>
</div>
</template>
<script>
import {mapGetters, mapMutations} from 'vuex'
import ShopStep from '@/components/base/steps.vue'
import {
getTheCode
} from '@/api/login.js'
import {
changeRealName,
checkUser,
getUserInfo
} from '@/api/user/user.js'
export default {
components: {ShopStep},
data () {
return {
stepsArr: [
{
value: 0,
label: '身份验证'
},
{
value: 1,
label: '实名认证'
},
{
value: 2,
label: '完成'
}
],
active: 0,
realName: '',
idCard: '',
//
isoldCodeShow: true,
verifyCode: '',
oldcodeText: '获取验证码',
oldtime: 60,
verifyIphone: '',
phone: ''
}
},
computed: {
...mapGetters([
'userInfo' //
])
},
created () {
if (this.userInfo.phone) {
this.verifyIphone = this.userInfo.phone
}
this.phone = this.verifyIphone.substr(0, 3) + '****' + this.verifyIphone.substr(7, this.verifyIphone.split('').length)
},
methods: {
...mapMutations({
setUserInfo: 'SET_USERINFO' //
}),
async getUserInfoData () {
const response = await getUserInfo()
const res = response.data
if (res.code === '200') {
this.setUserInfo(res.data)
} else {
this.$message.error(res.message)
}
},
//
async checkUser () {
if (this.verifyCode === '') {
this.$message.warning('验证码不能为空')
return
}
const response = await checkUser({
phone: this.verifyIphone,
verificationCode: this.verifyCode
})
const res = response.data
if (res.code === '200') {
this.active = 1
} else {
this.$message(res.message)
}
},
//
async getoldCode () {
if (!(/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/.test(this.verifyIphone))) {
this.$message.warning('手机号格式错误请重新输入')
return
}
const response = await getTheCode({ phone: this.verifyIphone })
const res = response.data
if (res.code === '200') {
this.$message({
message: '验证码获取成功',
type: 'success'
})
this.oldtimer()
} else {
this.$message({
message: res.message,
type: 'warning'
})
}
},
//
async updateRealName () {
// if (!(/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/.test(this.iphoneNum))) {
// this.$message.warning('')
// return
// }
if (this.realName === '') {
this.$message.warning('真实姓名不能为空')
return
}
if (this.idCard === '') {
this.$message.warning('身份证号码不能为空')
return
}
const response = await changeRealName({
realName: this.realName,
idCard: this.idCard
})
const res = response.data
if (res.code === '200') {
this.getUserInfoData()
this.active = 2
} else {
this.$message.warning(res.message)
}
},
//
oldtimer () {
if (this.oldtime > 0) {
this.oldtime--
this.oldcodeText = this.oldtime + 's'
setTimeout(this.oldtimer, 1000)
this.isoldCodeShow = false
} else {
this.oldtime = 0
this.oldcodeText = '获取验证码'
this.isoldCodeShow = true
}
}
}
}
</script>
<style lang="scss" scoped>
.container {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
background-color: #ffffff;
box-sizing: border-box;
border: 1px solid #E5E5E5;
.el-header{
padding: 0;
.title{
padding: 0 30px;
line-height: 50px;
background-color: #FAFAFA;
}
}
.submitBut {
width: 400px;
color: $mainGlod;
background-color: #333;
border-radius: 0;
}
.codebut {
padding: 13px 20px;
width: 100%;
text-align: center;
color: #FFF;
background-color: $mainGlod;
border-radius: 0;
}
.codeDisable{
color: #999;
cursor: auto;
}
>>>.codeipt{
.el-input__inner{
border-radius: 0;
}
}
.bottom-box {
background-color: #eeeeee;
}
>>>.el-footer{
background-color: #eee;
height: auto !important;
}
}
</style>

25
src/views/userCenter/userInfo/userInfo.vue

@ -23,6 +23,12 @@
<el-radio v-model="userInfo.sex" label="男"></el-radio>
<el-radio v-model="userInfo.sex" label="女"></el-radio>
</div>
<div class="bindPhoneBox userBlock">
<label>身份证</label>
<div class="phoneInfo">
<span>{{ userInfo.idCard }}</span>
</div>
</div>
</div>
<div class="right">
<div class="birthTimeBox userBlock">
@ -42,6 +48,13 @@
<span @click="$router.push('/changePhone')">更换</span>
</div>
</div>
<div class="bindPhoneBox userBlock">
<label>真实姓名</label>
<div class="phoneInfo">
<span>{{ userInfo.realName }}</span>
<span @click="changeRealName()">实名认证</span>
</div>
</div>
</div>
</div>
<el-button class="userInfoSave"
@ -130,7 +143,17 @@ export default {
message: '上传成功,请保存修改!',
type: 'success'
})
}
},
changeRealName () {
if (this.userInfo.phone && this.userInfo.phone.length > 0) {
this.$router.push('/changeRealName')
} else {
this.$message({
message: '请先绑定手机号!',
type: 'fail'
})
}
}
}
}
</script>

Loading…
Cancel
Save