222版,适应签名sdk

This commit is contained in:
yy2205 2025-06-18 09:58:42 +08:00
parent ea19730b10
commit 4cb3300cf5

View File

@ -1,21 +1,51 @@
import axios from 'axios' import axios from 'axios'
// 类型声明
declare global {
interface Window {
QysUKeySdk: any
}
}
// 动态加载 SDK // 动态加载 SDK
export const loadUKeySdk = () => { export const loadUKeySdk = () => {
return new Promise<void>((resolve, reject) => { return new Promise<void>((resolve, reject) => {
// 如果已经加载过,直接返回
if (window.QysUKeySdk) {
resolve()
return
}
const script = document.createElement('script') const script = document.createElement('script')
script.src = '/sdk.min.v1.0.0.js' script.src = '/sdk.min.v1.0.0.js'
script.type = 'text/javascript' script.type = 'text/javascript'
// 确保 window 对象已准备好 let retryCount = 0
script.onload = () => { const maxRetries = 10
const checkInterval = 100 // 100ms 检查一次
const checkSDK = () => {
if (window.QysUKeySdk) { if (window.QysUKeySdk) {
console.log('SDK 加载成功')
resolve() resolve()
} else if (retryCount < maxRetries) {
retryCount++
console.log(`等待 SDK 初始化... (${retryCount}/${maxRetries})`)
setTimeout(checkSDK, checkInterval)
} else { } else {
reject(new Error('SDK 加载失败QysUKeySdk 未定义')) reject(new Error('SDK 加载失败QysUKeySdk 未定义,请检查 SDK 文件是否正确'))
} }
} }
script.onload = () => {
console.log('SDK 脚本加载完成,开始检查初始化状态')
// 脚本加载完成后,给一点时间让 SDK 初始化
setTimeout(checkSDK, 50)
}
script.onerror = (error) => { script.onerror = (error) => {
reject(new Error('SDK 加载失败:' + error)) console.error('SDK 脚本加载失败:', error)
reject(new Error('SDK 脚本加载失败:' + error))
} }
document.head.appendChild(script) document.head.appendChild(script)
@ -45,7 +75,7 @@ const uploadPdf = async (byteArray: number[], filename: string = 'signed.pdf') =
formData.append('fileStream', fileStream); formData.append('fileStream', fileStream);
formData.append('filename', filename); formData.append('filename', filename);
formData.append('fileType', 'pdf'); formData.append('fileType', 'pdf');
formData.append('savePath', 'D:/陕西省咸阳市礼泉县心电图FTP/ecgimage/imgOcrAndProcess/'); formData.append('savePath', 'F:/陕西省咸阳市礼泉县心电图FTP/ecgimage/imgOcrAndProcess/');
const response = await fetch('https://zzxmc.gw12320.com/uploadFile', { const response = await fetch('https://zzxmc.gw12320.com/uploadFile', {
method: 'POST', method: 'POST',
@ -63,17 +93,23 @@ const uploadPdf = async (byteArray: number[], filename: string = 'signed.pdf') =
// 获取 SDK 实例 // 获取 SDK 实例
export const getUKeySdk = () => { export const getUKeySdk = () => {
if (window.QysUKeySdk) { if (window.QysUKeySdk) {
const sdk = new window.QysUKeySdk({ try {
signCb: async function(file) { const sdk = new window.QysUKeySdk({
try { signCb: async function(file) {
uploadPdf(file[0].rawFileData) try {
console.log('签署完成,文件已上传到服务器',file); await uploadPdf(file[0].rawFileData)
} catch (error) { console.log('签署完成,文件已上传到服务器', file);
console.error('文件处理失败:', error) } catch (error) {
console.error('文件处理失败:', error)
}
} }
} })
}) return sdk
return sdk } catch (error) {
console.error('创建 SDK 实例失败:', error)
return null
}
} }
return null return null
} }