修改下载合同功能逻辑
This commit is contained in:
parent
93dcdc6357
commit
a0c801ee61
@ -214,68 +214,103 @@ export default {
|
|||||||
mask: true
|
mask: true
|
||||||
});
|
});
|
||||||
|
|
||||||
// 构建完整的下载URL
|
request(apiArr.ecDownload, "POST", params).then(res => {
|
||||||
const downloadUrl = `${RequsetUrl}${apiArr.ecDownload}?ec_apply_id=${storeValue.ec_apply_id}`;
|
const respData = res.resp_data;
|
||||||
|
// 检查合同状态是否为已完成
|
||||||
|
if (respData.ec_status === 'COMPLETED' && respData.ec_file) {
|
||||||
|
try {
|
||||||
|
// 处理Base64编码的文件数据(URL安全的Base64)
|
||||||
|
const base64Data = respData.ec_file;
|
||||||
|
// 替换URL安全的Base64字符
|
||||||
|
const safeBase64 = base64Data.replace(/-/g, '+').replace(/_/g, '/');
|
||||||
|
|
||||||
// 调用uni.downloadFile进行文件下载
|
// 文件名(可以根据需要设置)
|
||||||
uni.downloadFile({
|
const fileName = `contract_${respData.ec_apply_id || Date.now()}.pdf`;
|
||||||
url: downloadUrl,
|
|
||||||
header: {
|
// 在uni-app中,我们需要使用文件系统API来保存文件
|
||||||
'Authorization': uni.getStorageSync('ctoken')
|
// 首先获取文件系统管理器
|
||||||
},
|
const fs = uni.getFileSystemManager();
|
||||||
success: (res) => {
|
|
||||||
|
// 生成临时文件路径
|
||||||
|
const tempFilePath = `${uni.env.USER_DATA_PATH}/${fileName}`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 将Base64数据写入临时文件
|
||||||
|
fs.writeFile({
|
||||||
|
filePath: tempFilePath,
|
||||||
|
data: safeBase64,
|
||||||
|
encoding: 'base64',
|
||||||
|
success: () => {
|
||||||
uni.hideLoading();
|
uni.hideLoading();
|
||||||
// 下载成功,保存文件到本地
|
|
||||||
uni.saveFile({
|
|
||||||
tempFilePath: res.tempFilePath,
|
|
||||||
success: (saveRes) => {
|
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '下载成功',
|
title: '合同下载成功',
|
||||||
icon: 'success'
|
icon: 'success'
|
||||||
});
|
});
|
||||||
// 提示用户打开文件
|
console.log('文件保存成功:', tempFilePath);
|
||||||
uni.showModal({
|
|
||||||
title: '提示',
|
|
||||||
content: '合同已下载完成,是否立即打开?',
|
|
||||||
success: (modalRes) => {
|
|
||||||
if (modalRes.confirm) {
|
|
||||||
// 打开文件
|
// 打开文件
|
||||||
uni.openDocument({
|
uni.openDocument({
|
||||||
filePath: saveRes.savedFilePath,
|
filePath: tempFilePath,
|
||||||
showMenu: true,
|
showMenu: true,
|
||||||
success: (openRes) => {
|
success: (openRes) => {
|
||||||
console.log('文件打开成功');
|
console.log('文件打开成功:', openRes);
|
||||||
},
|
},
|
||||||
fail: (err) => {
|
fail: (openErr) => {
|
||||||
console.error('文件打开失败:', err);
|
console.error('文件打开失败:', openErr);
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '文件打开失败',
|
title: '文件打开失败',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
fail: (err) => {
|
fail: (writeErr) => {
|
||||||
console.error('文件保存失败:', err);
|
|
||||||
uni.showToast({
|
|
||||||
title: '文件保存失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
uni.hideLoading();
|
uni.hideLoading();
|
||||||
console.error('下载请求失败:', err);
|
console.error('文件写入失败:', writeErr);
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '下载失败,请稍后重试',
|
title: '合同下载失败',
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} catch (fsError) {
|
||||||
|
uni.hideLoading();
|
||||||
|
console.error('文件系统操作失败:', fsError);
|
||||||
|
uni.showToast({
|
||||||
|
title: '文件系统错误',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.hideLoading();
|
||||||
|
console.error('处理文件数据失败:', error);
|
||||||
|
uni.showToast({
|
||||||
|
title: '文件处理失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
uni.hideLoading();
|
||||||
|
if (respData.ec_status !== 'COMPLETED') {
|
||||||
|
uni.showToast({
|
||||||
|
title: '电子合同尚未完成',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: '合同文件不存在',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).catch(err => {
|
||||||
|
uni.hideLoading();
|
||||||
|
console.error('下载合同失败:', err);
|
||||||
|
uni.showToast({
|
||||||
|
title: '下载失败,请重试',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 合同查询
|
// 合同查询
|
||||||
ecQuery() {
|
ecQuery() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user