chuangte_bike_newxcx/page_user/shiming.vue

397 lines
10 KiB
Vue
Raw Normal View History

2025-04-01 21:35:30 +08:00
<template>
<view class="page">
<u-navbar title=" " :border-bottom="false" :background="bgc" back-icon-color="#fff" title-color='#262B37'
title-size='36' height='36' id="navbar" :custom-back="btnfh">
</u-navbar>
<image src="https://api.ccttiot.com/smartmeter/img/static/uum6lsXMCEt4MU0WMW01" class="bj" mode=""></image>
<view class="sfxx" v-if="isReal == false">
<view class="tit">
请输入您的有效身份信息
</view>
<view class="name">
2025-09-22 17:08:55 +08:00
证件类型
<view class="type-select">
<view class="type-btn" :class="{active: docType === 'idcard'}" @click="docType='idcard'">身份证</view>
<view class="type-btn" :class="{active: docType === 'passport'}" @click="docType='passport'">护照</view>
</view>
</view>
<view class="name" v-if="docType === 'idcard'">
2025-04-01 21:35:30 +08:00
姓名 <input type="text" v-model="name" placeholder="请填写姓名" />
</view>
2025-09-22 17:08:55 +08:00
<view class="name" v-if="docType === 'idcard'">
证件号 <input type="text" v-model="zfzh" placeholder="请填写身份证号" />
</view>
<view class="upload" v-if="docType === 'passport'">
<view class="upload-label">护照照片</view>
<view class="upload-box" @click="choosePassportImage" v-if="!passportImage">
<text class="upload-plus"></text>
<text class="upload-tip">点击上传护照页照片</text>
</view>
<view class="upload-preview" v-else>
<image :src="passportImage" mode="aspectFill" @click="choosePassportImage" class="upload-img"></image>
<!-- <view class="upload-remove" @click.stop="removePassportImage">删除</view> -->
</view>
2025-04-01 21:35:30 +08:00
</view>
<view class="" style="width: 100%;text-align: center;margin-top: 20rpx;color: #ccc;">
您当前还未完成实名认证
</view>
</view>
<view class="sfxx" v-else>
<view class="tit">
请输入您的有效身份信息
</view>
<view class="name">
姓名 <input type="text" v-model="name" :disabled="true" placeholder="请填写姓名" />
</view>
<view class="name">
身份证号 <input type="text" v-model="zfzh" :disabled="true" placeholder="请填写身份证号" />
</view>
<view class="" style="width: 100%;text-align: center;margin-top: 20rpx;color: #ccc;">
您当前已完成实名认证
</view>
</view>
<view class="anniu" @click="btnshiming" v-if="isReal == false">
2025-04-27 17:37:23 +08:00
<!-- <text>进入人脸识别</text> -->
<text>提交</text>
2025-04-01 21:35:30 +08:00
</view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "",
},
name:'',
zfzh:'',
2025-04-11 18:23:16 +08:00
isReal:false,
2025-06-06 11:32:12 +08:00
backData: null,
2025-09-22 17:08:55 +08:00
smflag:true,
docType: 'idcard', // 新增:证件类型
passportImage: '' ,// 新增:护照照片路径
token:''
2025-04-01 21:35:30 +08:00
}
},
onLoad(option) {
if(option.user){
console.log(option);
2025-06-06 11:32:12 +08:00
2025-04-01 21:35:30 +08:00
}
2025-09-22 17:08:55 +08:00
this.getQiniuToken()
2025-04-01 21:35:30 +08:00
},
2025-04-11 18:23:16 +08:00
onShow() {
2025-06-06 11:32:12 +08:00
this.getareaList()
2025-04-27 17:37:23 +08:00
// if (this.backData == true) {
// console.log('接收数据:', this.backData);
// this.getshuaxin();
// this.backData = null; // 重置
// }
2025-04-11 18:23:16 +08:00
},
2025-04-01 21:35:30 +08:00
methods: {
2025-09-22 17:08:55 +08:00
// 获取上传七牛云token
getQiniuToken() {
this.$u.get("/common/qiniuToken").then((res) => {
if (res.code == 200) {
this.token = res.data
}
})
},
// 上传头像
choosePassportImage() {
let _this = this
let math = 'static/' + _this.$u.guid(20)
uni.chooseImage({
count: 1,
type: 'all',
success(res) {
const tempFilePaths = res.tempFiles
wx.uploadFile({
url: 'https://up-z2.qiniup.com',
name: 'file',
filePath: tempFilePaths[0].path,
formData: {
token: _this.token, //后端返回的token
key: 'smartmeter/img/' + math
},
success: function(res) {
console.log(res, 'resres');
let str = JSON.parse(res.data)
console.log(str.key)
_this.passportImage = 'https://api.ccttiot.com/' + str.key
console.log(_this.passportImage);
}
})
}
})
},
2025-06-06 11:32:12 +08:00
getareaList() {
this.$u.get("/getInfo").then(res =>{
if(res.code == 200){
res.user.authTypes.filter(item =>{
if(item == 1){
this.isReal = true
}
})
this.name = res.user.realName
this.zfzh = res.user.realIdCard
}
})
},
2025-04-11 18:23:16 +08:00
// 刷新人脸识别是否成功
getshuaxin(){
this.$u.get('/app/realName/refreshRealName').then(res => {
if(res.code == 200){
if(res.data.pass == true){
let realNameType = res.data.realNameType
let infoId = res.data.infoId
uni.showModal({
title: '温馨提示',
content: `人脸认证成功`,
showCancel: false,
success: function(res) {
uni.navigateBack()
}
})
}else{
uni.showModal({
title: '温馨提示',
content: `人脸认证失败`,
showCancel: false,
success: function(res) {
uni.navigateBack()
}
})
}
}else{
uni.showModal({
title: '温馨提示',
content: `人脸认证失败`,
showCancel: false,
success: function(res) {
uni.navigateBack()
}
})
}
})
},
2025-04-01 21:35:30 +08:00
// 自定义返回
btnfh(){
2025-04-11 18:23:16 +08:00
uni.navigateBack()
2025-04-01 21:35:30 +08:00
},
// 点击进行实名认证
btnshiming(){
2025-09-22 17:08:55 +08:00
// 护照分支:仅校验并提示
if(this.docType === 'passport'){
if(!this.passportImage){
uni.showToast({ title:'请先上传护照照片', icon:'none' })
return
}
let data = {
url:this.passportImage
}
this.$u.put(`/app/realName/passportRealName`,data).then(res =>{
if(res.code == 200){
uni.showToast({
title: res.msg,
icon: 'success',
duration: 2000
})
setTimeout(()=>{
this.smflag = true
uni.navigateBack()
},1500)
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
this.smflag = true
}
})
return
}
2025-06-06 11:32:12 +08:00
if(this.smflag == true){
this.smflag = false
let data = {
userName:this.name,
idCard:this.zfzh,
2025-04-01 21:35:30 +08:00
}
2025-06-06 11:32:12 +08:00
this.$u.put(`/app/realName/twoElementRealName`,data).then(res =>{ //二要素
if(res.code == 200){
uni.showToast({
title: res.msg,
icon: 'success',
duration: 2000
})
setTimeout(()=>{
this.smflag = true
uni.navigateBack()
},1500)
}else if(res.code == 500 && res.msg == null){
uni.showToast({
title: '已提交,请等待系统反馈',
icon: 'none',
duration: 2000
})
this.smflag = true
} else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
this.smflag = true
}
})
}
2025-04-27 17:37:23 +08:00
// this.$u.put(`/app/realName/realName`,data).then(res =>{ //人脸
// if(res.code == 200){
// let https = encodeURIComponent(res.data.jumpUrl)
// this.backData = true
// uni.navigateTo({
// url:'/page_fenbao/renlian?https=' + https
// })
// }else{
// uni.showToast({
// title: res.msg,
// icon: 'none',
// duration: 2000
// })
// }
// })
2025-09-22 17:08:55 +08:00
},
2025-04-01 21:35:30 +08:00
}
}
</script>
<style lang="scss">
.anniu{
width: 750rpx;
height: 174rpx;
background: #FFFFFF;
box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0,0,0,0.3);
border-radius: 0rpx 0rpx 0rpx 0rpx;
line-height: 174rpx;
text-align: center;
position: fixed;
left: 0;
bottom: 0;
text{
display: inline-block;
width: 682rpx;
height: 84rpx;
background: #4297F3;
border-radius: 42rpx 42rpx 42rpx 42rpx;
text-align: center;
line-height: 84rpx;
font-weight: 600;
font-size: 36rpx;
color: #FFFFFF;
}
}
.sfxx{
width: 676rpx;
2025-09-22 17:08:55 +08:00
max-height: 980rpx;
padding-bottom: 30rpx;
2025-04-01 21:35:30 +08:00
background: #FFFFFF;
border-radius: 20rpx 20rpx 20rpx 20rpx;
margin: auto;
margin-top: 310rpx;
border-radius: 30rpx;
.name{
width: 624rpx;
height: 92rpx;
margin: auto;
background: #EFEFEF;
border-radius: 46rpx 46rpx 46rpx 46rpx;
margin-top: 46rpx;
display: flex;
align-items: center;
font-size: 32rpx;
color: #3D3D3D;
padding-left: 40rpx;
box-sizing: border-box;
justify-content: space-between;
input{
width: 430rpx;
padding-right: 20rpx;
box-sizing: border-box;
}
2025-09-22 17:08:55 +08:00
.type-select{ display: flex; align-items: center; padding-right: 20rpx; }
.type-btn{
min-width: 160rpx;
height: 64rpx;
padding: 0 24rpx;
border-radius: 32rpx;
background: #FFFFFF;
color: #3D3D3D;
font-size: 28rpx;
line-height: 64rpx;
text-align: center;
border: 2rpx solid #CCCCCC;
}
.type-btn + .type-btn{ margin-left: 20rpx; }
.type-btn.active{ background: #4297F3; color: #FFFFFF; border-color: #4297F3; }
2025-04-01 21:35:30 +08:00
}
.tit{
width: 676rpx;
height: 118rpx;
background: #EFEFEF;
font-weight: 600;
font-size: 36rpx;
color: #3D3D3D;
line-height: 118rpx;
padding-left: 38rpx;
box-sizing: border-box;
border-radius: 30rpx 30rpx 0 0;
}
2025-09-22 17:08:55 +08:00
.upload{
width: 624rpx;
margin: 20rpx auto 0 auto;
.upload-label{ font-size: 28rpx; color: #3D3D3D; margin-bottom: 16rpx; }
.upload-box{
width: 100%;
height: 220rpx;
background: #F7F7F7;
border: 2rpx dashed #CCCCCC;
border-radius: 16rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.upload-plus{ font-size: 60rpx; color: #999; line-height: 1; }
.upload-tip{ margin-top: 8rpx; font-size: 24rpx; color: #999; }
}
.upload-preview{
position: relative;
width: 100%;
height: 420rpx;
.upload-img{ width: 100%; height: 100%; border-radius: 16rpx; }
.upload-remove{
position: absolute;
right: 12rpx;
top: 12rpx;
background: rgba(0,0,0,0.5);
color: #fff;
padding: 8rpx 16rpx;
border-radius: 24rpx;
font-size: 24rpx;
}
}
}
2025-04-01 21:35:30 +08:00
}
.bj{
width: 750rpx;
height: 696rpx;
position: fixed;
top: 0;
left: 0;
z-index: -1;
}
</style>