You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

377 lines
9.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="section">
<view class=" padding-lr-sm padding-top-sm text-bold"><text class="cuIcon-titles textBlue"></text>上传认证资料</view>
<view class="flex flex-wrap ">
<view class="flex-sub padding-sm margin-xs radius listPic" @click="chooseImgIdFront">
<image v-if="has_id_front" class="sizeBox" :src="imgs_id_front" mode="scaleToFill"></image>
<image v-else class="sizeBox" src="../../../static/user/idcard_front.png" mode="scaleToFill"></image>
<view class="badge-box" v-if="imgs_id_front_url"></view>
</view>
<view class="flex-sub padding-sm margin-xs radius listPic" @click="chooseImgIdBack">
<image v-if="has_id_back" class="sizeBox" :src="imgs_id_back" mode="scaleToFill"></image>
<image v-else class="sizeBox" src="../../../static/user/idcard_back.png" mode="scaleToFill"></image>
<view class="badge-box" v-if="imgs_id_back_url"></view>
</view>
</view>
<!-- -->
<view class=" padding-lr-sm padding-top-sm text-bold"><text class="cuIcon-titles textBlue"></text>个人信息</view>
<view class="cu-card ">
<view class="cu-item shadow padding-lr-sm" >
<uni-forms :modelValue="form_add" ref="addFormRef" :rules="rules" labelWidth="180" labelAlign="left" border>
<uni-forms-item name="realName" label="身份证姓名:">
<input v-model="form_add.realName" placeholder="请输入">
</input>
</uni-forms-item>
<uni-forms-item name="identification" label="身份证号:">
<input v-model="form_add.identification" placeholder="请输入">
</input>
</uni-forms-item>
</uni-forms>
<!-- <view class="flex justify-between">
<view class="orderNumber">
<u-form>
<u-form-item label="车辆VIN码" label-width="100" :required="true"></u-form-item>
</u-form>
</view>
<view class="padding-top-xs inputTop">
<u-input border="none" :required="true" v-model.trim="carVin" placeholder="上传行驶证自动识别"
inputAlign='right'>
</u-input>
</view>
</view> -->
</view>
</view>
<view class="comeUp" v-if="edit_id == 0">
<u-button @click="comeUp" :customStyle="customStyle" iconColor="red" shape='circle'>提交审核</u-button>
</view>
<u-modal :show="show" :title="title" :showCancelButton="true" :content="content" @confirm="confirm"
@cancel="cancel">
</u-modal>
</view>
</template>
<script setup>
import config from '@/common/config/config.js';
import {
reactive,
ref,
unref
} from "vue";
import {
onLoad,
onShow,
} from "@dcloudio/uni-app";
import {
mobile,
password,
identification,
realName
} from '@/sheep/validate/form';
const has_id_front = ref()
const imgs_id_front = ref()
const has_id_back = ref()
const imgs_id_back = ref()
const has_drive = ref()
const imgs_drive = ref()
const has_travel = ref()
const imgs_travel = ref()
const imgs_id_front_url = ref()
const imgs_id_back_url = ref()
const imgs_drive_url = ref()
const imgs_travel_url = ref()
const form_add = ref({
identification: '',
realName: ''
})
const carVin = ref() //vin码
const editId = ref()
const customerId = ref()
const rules = ref({
mobile,
password,
identification,
realName
})
const customStyle = reactive({
backgroundColor: '#4C91FF',
color: '#fff'
});
const show = ref(false)
const title = ref('温馨提示')
const content = ref('修改后将重新进入审核状态,确定要继续吗?')
const edit_id = ref(0)
onLoad((params) => {
// console.log(params, 'params');
if (params.data) {
var options = JSON.parse(params.data)
if (options.id != '' && options.id != null) {
edit_id.value = options.id
if (options.idBack != null && options.idBack != "") {
imgs_id_back_url.value = options.idBack
imgs_id_back.value = options.idBack
has_id_back.value = true
}
if (options.idFront != null && options.idFront != "") {
imgs_id_front_url.value = options.idFront
imgs_id_front.value = options.idFront
has_id_front.value = true
}
form_add.value.realName = options.name
form_add.value.identification = options.idCard
}
}
})
onShow(() => {
// customerId.value = uni.getStorageSync('userInfo').customerId
})
const chooseImgIdFront = () => {
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['camera', 'album'], //这要注意camera掉拍照album是打开手机相册
success: (res) => {
const tempFilePaths = res.tempFilePaths;
// console.log(tempFilePaths, 'ppppppppppppppppppppppppppppp');
if (tempFilePaths.length >= 1) {
has_id_front.value = true,
imgs_id_front.value = tempFilePaths[0]
} else {
return;
}
//身份证人像面上传
uplodFile(1)
}
});
}
const chooseImgIdBack = () => {
uni.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function(res) {
// 返回选定照片的本地文件路径列表tempFilePath可以作为img标签的src属性显示图片
const tempFilePaths = res.tempFilePaths;
if (tempFilePaths.length >= 1) {
has_id_back.value = true
imgs_id_back.value = tempFilePaths[0]
} else {
return;
}
//身份证人像面上传
uplodFile(2)
}
});
}
const chooseImgDrive = () => {
uni.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function(res) {
// 返回选定照片的本地文件路径列表tempFilePath可以作为img标签的src属性显示图片
let tempFilePaths = res.tempFilePaths;
if (tempFilePaths.length >= 1) {
has_drive.value = true
imgs_drive.value = tempFilePaths[0]
} else {
return;
}
//驾驶证上传
uplodFile(3)
}
});
}
const chooseImgTravel = () => {
uni.chooseImage({
count: 1, // 默认9
//sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sizeType: ['compressed'], // 指定压缩图
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function(res) {
// 返回选定照片的本地文件路径列表tempFilePath可以作为img标签的src属性显示图片
var tempFilePaths = res.tempFilePaths;
if (tempFilePaths.length >= 1) {
has_travel.value = true
imgs_travel.value = tempFilePaths[0]
} else {
return;
}
//行驶证上传
uplodFile(4)
}
});
}
// 上传图片验证
const uplodFile = (type) => {
let filePath = null;
if (type == 1) {
filePath = imgs_id_front.value
} else if (type == 2) {
filePath = imgs_id_back.value
} else if (type == 3) {
filePath = imgs_drive.value
} else if (type == 4) {
filePath = imgs_travel.value
} else {
uni.$u.toast("无效的图片类型!")
}
if (filePath == null || filePath == "") {
uni.$u.toast("无效的图片,请重新选择!")
}
uni.uploadFile({
filePath: filePath,
name: 'file',
header: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + uni.getStorageSync('token'),
'tenant-id': 1
},
url: config.upload,
formData: {},
success: function(res) {
// console.log("--------uplodFile---------", res)
let data = JSON.parse(res.data);
// console.log("--------uplodFile.data---------", data)
if (data.code === 0) {
uni.$u.toast('上传成功');
if (type == 1) {
imgs_id_front_url.value = data.data
} else if (type == 2) {
imgs_id_back_url.value = data.data
}
} else {
uni.$u.toast("上传失败!")
}
}
})
}
// 点击提交审核
const comeUp = () => {
if (!imgs_id_front_url.value || !imgs_id_back_url.value) {
uni.$u.toast('请填写必填项与全部认证资料')
return
}
// //有id时是编辑 无是新增
// if (editId.value != null && editId.value != "") {
// show.value = true
// return
// }
submit()
}
// 修改弹窗取消
const cancel = () => {
show.value = false
}
// 修改弹窗确认
const confirm = () => {
submit()
}
const addFormRef = ref(null)
// 提交接口调用
const submit = async () => {
const validate = await unref(addFormRef)
.validate()
.catch((error) => {
console.log('error: ', error);
});
console.log(validate, 'validate');
if (!validate) {
return;
}
var param = {
idCard: form_add.value.identification,
idFront: imgs_id_front_url.value,
idBack: imgs_id_back_url.value,
name: form_add.value.realName
}
let bindUrl = config.baseUrl + 'app-api/member/user/idCardAuth'
await uni.$request({
url: bindUrl,
method: "POST",
data: param,
}).then((res) => {
if (res.data.code == 0) {
uni.$u.toast('提交成功')
setTimeout(function() {
uni.navigateBack({
delta: 1,
});
}, 1000)
} else {
uni.$u.toast(res.data.msg)
}
}).catch((err) => {
uni.$u.toast(res.data.msg)
})
}
</script>
<style lang='scss' scoped>
.section {
width: 100%;
height: 100vh;
background: #F7F8FA;
}
::v-deep .uni-forms-item__content {
display: flex;
align-items: center;
}
.textBlue {
color: #4C91FF;
}
.sizeBox {
width: 335rpx;
height: 190rpx;
}
.listPic {
width: 40%;
position: relative;
}
.badge-box {
text-align: right;
background-color: #373737;
height: 48rpx;
width: 48rpx;
position: absolute;
right: 20rpx;
top: 18rpx;
color: #fff;
border-radius: 0 0 0 100%;
background: url('../../../static/user/upSucceed.svg') no-repeat 100% 100%;
}
.comeUp {
width: 80%;
position: absolute;
bottom: 50rpx;
left: 10%;
}
.inputTop {
margin-top: 5rpx;
}
</style>