fix(KYC页面): 新增检测功能,修复获取重复图片的问题

This commit is contained in:
hzj 2025-11-13 11:53:28 +08:00
parent 626a63f311
commit f7b4cfe1c3
2 changed files with 92 additions and 37 deletions

View File

@ -9,8 +9,9 @@ export function android() {
/**
* 上传图片
* @param {Function} renderFun 回调函数接收APP传递的access参数
* @param {Function} filterFun 可选的过滤函数用于判断是否接受该数据
*/
export function uploadImgFile(renderFun) {
export function uploadImgFile(renderFun, filterFun) {
// 设置全局回调函数供原生App调用
window.renderData = renderFun
// iOS平台兼容
@ -58,14 +59,33 @@ export function uploadImgFile(renderFun) {
typeof window.app.getImagePath === 'function'
) {
console.debug('Flutter接口检测成功调用 getImagePath')
// 清除定时器
if (window._flutterCheckTimeout) {
clearTimeout(window._flutterCheckTimeout)
window._flutterCheckTimeout = null
}
try {
const result = window.app.getImagePath()
console.debug('getImagePath 返回结果:', result)
// 如果提供了过滤函数,则使用它来判断是否接受该数据
if (filterFun && typeof filterFun === 'function') {
// 如果过滤函数返回false则继续检查
if (!filterFun(result)) {
console.debug('数据被过滤函数拒绝,继续检查...')
if (attempts < maxAttempts) {
// 保存timeout ID以便下次调用时清除
window._flutterCheckTimeout = setTimeout(checkInterface, 100)
return
} else {
console.error('Flutter接口注入超时使用默认数据')
const mockAccess = JSON.stringify({})
renderFun(mockAccess)
return
}
}
}
// 清除定时器
if (window._flutterCheckTimeout) {
clearTimeout(window._flutterCheckTimeout)
window._flutterCheckTimeout = null
}
renderFun(result)
} catch (error) {
console.error('调用 getImagePath 出错:', error)

View File

@ -251,43 +251,78 @@ const callNativeImagePicker = async () => {
//
const existingImagePaths = new Set(resImgUrls.value)
//
const filterDuplicateImages = (access) => {
try {
//
if (!access || access === '""' || access === '') {
return true //
}
const result = parseAccessOrigin(access)
if (result.success && result.data) {
const file = result.data
console.log('检查图片数据:', file.path)
// false
if (existingImagePaths.has(file.path)) {
console.log('检测到重复图片,继续等待新图片...')
return false
}
//
return true
}
//
return true
} catch (error) {
console.error('过滤图片数据时出错:', error)
return true //
}
}
return new Promise((resolve, reject) => {
try {
uploadImgFile(async (access) => {
try {
//
if (!access || access === '""' || access === '') {
console.warn('接收到空的图片数据')
reject(new Error('No image selected'))
return
}
const result = parseAccessOrigin(access)
if (result.success && result.data) {
const file = result.data
console.log('接收到原生图片数据:', file.path)
if (existingImagePaths.has(file.path)) {
console.log('检测到重复图片,继续等待新图片...')
//
// resolve reject uploadImgFile
uploadImgFile(
async (access) => {
try {
//
if (!access || access === '""' || access === '') {
console.warn('接收到空的图片数据')
reject(new Error('No image selected'))
return
}
//
resImgUrls.value.push(file.path)
resolve()
} else {
const errorMsg = result.error
console.error('图片选择失败:', errorMsg)
reject(new Error(errorMsg))
const result = parseAccessOrigin(access)
if (result.success && result.data) {
const file = result.data
console.log('接收到原生图片数据:', file.path)
if (existingImagePaths.has(file.path)) {
console.log('检测到重复图片,继续等待新图片...')
//
// resolve reject uploadImgFile
return
}
//
resImgUrls.value.push(file.path)
resolve()
} else {
const errorMsg = result.error
console.error('图片选择失败:', errorMsg)
reject(new Error(errorMsg))
}
} catch (error) {
console.error('处理原生图片选择结果失败:', error)
reject(error)
}
} catch (error) {
console.error('处理原生图片选择结果失败:', error)
reject(error)
}
})
},
filterDuplicateImages //
)
} catch (error) {
console.error('调用原生图片选择器失败:', error)
reject(error)