fix(KYC页面): 新增检测功能,修复获取重复图片的问题
This commit is contained in:
parent
626a63f311
commit
f7b4cfe1c3
@ -9,8 +9,9 @@ export function android() {
|
|||||||
/**
|
/**
|
||||||
* 上传图片
|
* 上传图片
|
||||||
* @param {Function} renderFun 回调函数,接收APP传递的access参数
|
* @param {Function} renderFun 回调函数,接收APP传递的access参数
|
||||||
|
* @param {Function} filterFun 可选的过滤函数,用于判断是否接受该数据
|
||||||
*/
|
*/
|
||||||
export function uploadImgFile(renderFun) {
|
export function uploadImgFile(renderFun, filterFun) {
|
||||||
// 设置全局回调函数,供原生App调用
|
// 设置全局回调函数,供原生App调用
|
||||||
window.renderData = renderFun
|
window.renderData = renderFun
|
||||||
// iOS平台兼容
|
// iOS平台兼容
|
||||||
@ -58,14 +59,33 @@ export function uploadImgFile(renderFun) {
|
|||||||
typeof window.app.getImagePath === 'function'
|
typeof window.app.getImagePath === 'function'
|
||||||
) {
|
) {
|
||||||
console.debug('Flutter接口检测成功,调用 getImagePath')
|
console.debug('Flutter接口检测成功,调用 getImagePath')
|
||||||
// 清除定时器
|
|
||||||
if (window._flutterCheckTimeout) {
|
|
||||||
clearTimeout(window._flutterCheckTimeout)
|
|
||||||
window._flutterCheckTimeout = null
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
const result = window.app.getImagePath()
|
const result = window.app.getImagePath()
|
||||||
console.debug('getImagePath 返回结果:', result)
|
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)
|
renderFun(result)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('调用 getImagePath 出错:', error)
|
console.error('调用 getImagePath 出错:', error)
|
||||||
|
|||||||
@ -251,43 +251,78 @@ const callNativeImagePicker = async () => {
|
|||||||
// 记录当前所有已选图片路径,用于去重判断
|
// 记录当前所有已选图片路径,用于去重判断
|
||||||
const existingImagePaths = new Set(resImgUrls.value)
|
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) => {
|
return new Promise((resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
uploadImgFile(async (access) => {
|
uploadImgFile(
|
||||||
try {
|
async (access) => {
|
||||||
// 处理空数据情况
|
try {
|
||||||
if (!access || access === '""' || access === '') {
|
// 处理空数据情况
|
||||||
console.warn('接收到空的图片数据')
|
if (!access || access === '""' || access === '') {
|
||||||
reject(new Error('No image selected'))
|
console.warn('接收到空的图片数据')
|
||||||
return
|
reject(new Error('No image selected'))
|
||||||
}
|
|
||||||
|
|
||||||
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成预览图
|
const result = parseAccessOrigin(access)
|
||||||
resImgUrls.value.push(file.path)
|
|
||||||
resolve()
|
if (result.success && result.data) {
|
||||||
} else {
|
const file = result.data
|
||||||
const errorMsg = result.error
|
console.log('接收到原生图片数据:', file.path)
|
||||||
console.error('图片选择失败:', errorMsg)
|
|
||||||
reject(new Error(errorMsg))
|
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)
|
filterDuplicateImages // 传递过滤函数
|
||||||
reject(error)
|
)
|
||||||
}
|
|
||||||
})
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('调用原生图片选择器失败:', error)
|
console.error('调用原生图片选择器失败:', error)
|
||||||
reject(error)
|
reject(error)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user