From 03043192ddf00f9a36b7454799a9152cd1b50a0b Mon Sep 17 00:00:00 2001
From: admin <344137771@qq.com>
Date: Tue, 06 Jan 2026 11:13:45 +0800
Subject: [PATCH] 1
---
src/views/authentication/index.vue | 167 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 156 insertions(+), 11 deletions(-)
diff --git a/src/views/authentication/index.vue b/src/views/authentication/index.vue
index 18dcefd..357d6ed 100644
--- a/src/views/authentication/index.vue
+++ b/src/views/authentication/index.vue
@@ -39,8 +39,29 @@
</div>
<ExInput :label="$t('realName')" :disabled="disabled()" :clearBtn="!disabled()"
:placeholderText="$t('entryRealName')" v-model="name" />
+
<ExInput :label="$t('credentPassport')" :disabled="disabled()" :clearBtn="!disabled()"
:placeholderText="$t('entryCredentPassport')" v-model="idnumber" />
+
+ <ExInput :label="$t('phoneNum')" :disabled="disabled()" :clearBtn="!disabled()"
+ :placeholderText="$t('entryPhone')" v-model="phone" :area="true" :dialCode="dialCode"
+ @selectArea="onSelectArea" :icon="icon" v-if="!disabled()" />
+
+ <p class="label mt-2 textColor" v-if="disabled()">{{ $t("phoneNum") }}</p>
+ <div class="iptbox inputBackground" v-if="disabled()">
+ <input class="inputBackground textColor" style="background: none;" type="text" v-model="phone" disabled />
+ </div>
+
+ <!-- 验证码输入框已隐藏 -->
+ <!-- <p class="label mt-2 textColor" v-if="!disabled()">{{ $t("verificationCode") }}</p>
+ <div class="iptbox inputBackground" v-if="!disabled()">
+ <input class="inputBackground textColor" type="text" :placeholder="$t('entryVerifyCode')" v-model="verifyCode"
+ :disabled="disabled()" />
+ <span @click="sendCode" :class="{ 'disabled': time > 0 }">
+ {{ $t("sendVerifyCode") }}
+ <template v-if="time"> ({{ time }})s</template>
+ </span>
+ </div> -->
<div>
<div v-if="resultArr.length > 0" class="mt-1 mb-3 textColor">{{ $t('uploadCredentPassport') }} </div>
<div v-else class="mt-4 mb-12 textColor">{{ $t('uploadPicCredentPassport') }}</div>
@@ -64,7 +85,7 @@
</div>
<div class="text-28 h-10 textColor1">{{ $t('credentObverse') }}</div>
</div>
- <div class="flex-1 flex flex-col text-center justify-center items-center">
+ <!-- <div class="flex-1 flex flex-col text-center justify-center items-center">
<div class="upload-wrap">
<img src="../../assets/image/kyc/2.png" alt="" class="w-full"
v-if="[1, 2].includes(status) && fileList.length === 0" />
@@ -72,12 +93,12 @@
:after-read="afterRead" @click-upload="onClickUpload('fileList')" v-else />
</div>
<div class="text-28 h-10" style="color:#868D9A;">{{ $t('handCredent') }}</div>
- </div>
+ </div> -->
</div>
</div>
<template v-if="!disabled()">
- <div class="text-28 mb-8 textColor">{{ $t('photoExample') }}</div>
- <img src="@/assets/image/kyc/kyc-demo.png" alt="" style="width:100%;height:auto;" class="w-auto h-56 mb-5">
+ <!-- <div class="text-28 mb-8 textColor">{{ $t('photoExample') }}</div> -->
+ <!-- <img src="@/assets/image/kyc/kyc-demo.png" alt="" style="width:100%;height:auto;" class="w-auto h-56 mb-5"> -->
<!-- <div class="mb-5 flex justify-center">
<div class="flex flex-1 justify-center">
<img src="../../assets/image/kyc/kyc_demo1.png" alt="" class="w-80 h-80" />
@@ -89,13 +110,15 @@
</template>
<button class="apply-btn btnMain text-white text-26 h-24 rounded" @click="onSubmit" v-if="!disabled()">{{
$t('Apply')
- }}</button>
+ }}</button>
<div class="pt-9 pb-16 text-24" v-if="!disabled() || status === 3">
<span class="text-grey">{{ $t('uploadTitle1') }} {{ $t('photoExample') }}</span>
<span class="text-blue service-text" @click="tokefu"> {{ $t('ContactService') }}</span>
</div>
<nationality-list ref='controlChild' :title="$t('selectNation')" @getName="getName" v-if="!disabled()">
</nationality-list>
+
+ <nationality-list ref="controlChildRef" :title="$t('selectArea')" @getName="getName1"></nationality-list>
</div>
</div>
</div>
@@ -104,11 +127,12 @@
<script setup>
import { _getIdentify, _info, _applyIdentify } from "@/service/user.api.js";
import { _uploadImage } from "@/service/upload.api.js";
-import { onMounted, ref } from 'vue';
+import { _sendVerifyCode } from "@/service/login.api.js";
+import { onMounted, onBeforeUnmount, ref } from 'vue';
import nationalityList from './components/nationalityList.vue'
import { useRouter } from "vue-router";
import { showToast, Uploader } from "vant"
-// import ExInput from "@/components/ex-input";
+import ExInput from "@/components/ex-input/index.vue";
import countries from "./components/countryList";
import { getCurrentInstance } from 'vue';
import { useI18n } from "vue-i18n";
@@ -118,6 +142,12 @@
const countryCode = ref('af')
const idnumber = ref('')
const name = ref('')
+const phone = ref('')
+const icon = ref('')
+const dialCode = ref('')
+const verifyCode = ref('')
+const time = ref(0)
+const timer = ref(null)
const frontFile = ref([])
const reverseFile = ref([])
const fileList = ref([])
@@ -136,6 +166,13 @@
onMounted(() => {
fetchInfo();
})
+
+onBeforeUnmount(() => {
+ if (timer.value) {
+ clearInterval(timer.value)
+ timer.value = null
+ }
+})
const loginOut = () => {
router.push('/certificationCenter')
}
@@ -149,9 +186,10 @@
idnumber.value = data.idnumber
name.value = data.name
+ phone.value = data.phone || ''
frontFile.value = data.idimg_1 ? [{ url: data.idimg_1_path, resURL: data.idimg_1 }] : []
reverseFile.value = data.idimg_2 ? [{ url: data.idimg_2_path, resURL: data.idimg_2 }] : []
- fileList.value = data.idimg_3 ? [{ url: data.idimg_3_path, resURL: data.idimg_3 }] : []
+ // fileList.value = data.idimg_3 ? [{ url: data.idimg_3_path, resURL: data.idimg_3 }] : []
}
})
}
@@ -190,6 +228,54 @@
countryCode.value = params.code;
}
+//获取到当前选中国家的手机号code值
+const getName1 = (params) => {
+ icon.value = params.code;
+ dialCode.value = params.dialCode;
+};
+
+const controlChildRef = ref(null);
+const onSelectArea = () => {
+ controlChildRef.value.open();
+};
+
+// 发送验证码
+const sendCode = () => {
+ if (!phone.value) {
+ showToast(t('entryPhone'))
+ return
+ }
+ // 校验手机号格式:必须是数字
+ if (isNaN(phone.value) || phone.value.trim() === '') {
+ showToast(t('请输入正确的手机号码'))
+ return
+ }
+ if (time.value > 0) {
+ return false
+ }
+ _sendVerifyCode({
+ target: `${dialCode.value || ''}${phone.value}`,
+ }).then((res) => {
+ showToast(t("sendSuccess"))
+ time.value = 30
+ timer.value = setInterval(() => {
+ if (time.value > 0) {
+ time.value = time.value - 1
+ } else {
+ time.value = 0
+ clearInterval(timer.value)
+ timer.value = null
+ }
+ }, 1000)
+ }).catch(err => {
+ if (err.msg !== undefined) {
+ showToast(err.msg)
+ } else {
+ showToast(t('sendFailed'))
+ }
+ })
+}
+
const onSubmit = () => {
if (!countryName.value) {
showToast(t('selectNation'))
@@ -203,20 +289,42 @@
showToast(t('entryCredent'))
return
}
- if (!frontFile.value.length || !reverseFile.value.length || !fileList.value.length) {
+ if (!phone.value) {
+ showToast(t('entryPhone'))
+ return
+ }
+ // 校验手机号格式:必须是数字
+ if (isNaN(phone.value) || phone.value.trim() === '') {
+ showToast(t('请输入正确的手机号码'))
+ return
+ }
+ // 验证码校验已隐藏
+ // if (!verifyCode.value) {
+ // showToast(t('entryVerifyCode'))
+ // return
+ // }
+ // if (verifyCode.value.length < 6) {
+ // showToast(t('entryVerifyTips'))
+ // return
+ // }
+ // if (!frontFile.value.length || !reverseFile.value.length || !fileList.value.length) {
+ if (!frontFile.value.length || !reverseFile.value.length) {
showToast(t('uploadComplete'))
return
}
_applyIdentify({
name: name.value,
idnumber: idnumber.value,
+ phone: "" + dialCode.value + phone.value,
+ code: '', // 验证码已隐藏,传空值
frontFile: frontFile.value,
reverseFile: reverseFile.value,
- fileList: fileList.value,
+ // fileList: fileList.value,
countryName: countryCode.value // this.countryName 存储的 code, 回来再遍历
}).then(() => {
showToast(t('submitSuccess'))
- router.push('/verified')
+ // router.push('/verified')
+ router.go(-1)
// this.fetchInfo()
}).catch(err => {
if (err.code === 'ECONNABORTED') { showToast('网络超时!'); }
@@ -288,4 +396,41 @@
.pt-35 {
padding-top: 16px;
}
+
+.label {
+ font-size: 14px;
+ margin-bottom: 9px;
+}
+
+.iptbox {
+ height: 44px;
+ margin-top: 8px;
+ padding: 0 10px;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ border-radius: 3px;
+
+ input {
+ flex: 1;
+ height: 100%;
+ border: none;
+ padding-left: 10px;
+ color: $text_color;
+ font-size: 14px;
+ }
+
+ span {
+ color: $color_main;
+ font-size: 14px;
+ cursor: pointer;
+ white-space: nowrap;
+ margin-left: 10px;
+
+ &.disabled {
+ color: $text_color1;
+ cursor: not-allowed;
+ }
+ }
+}
</style>
--
Gitblit v1.9.3