修改下载合同功能逻辑

This commit is contained in:
赵毅 2025-12-12 15:26:41 +08:00
parent 93dcdc6357
commit a0c801ee61

View File

@ -108,7 +108,7 @@
<button type="button" class="submit-btn" @click="submitApplication">提交申请</button>
</view>
</form>
<!-- 自定义弹窗 -->
<view v-if="showCustomModal" class="custom-modal-overlay" @click="closeModal">
<view class="custom-modal" @click.stop>
@ -177,7 +177,7 @@ export default {
if (options.ec_content) {
this.formData.ec_content_parameters = options.ec_content;
}
//
uni.$on('agreementSigned', (data) => {
if (data && data.ec_content) {
@ -189,7 +189,7 @@ export default {
}
});
},
//
onUnload() {
uni.$off('agreementSigned');
@ -214,68 +214,103 @@ export default {
mask: true
});
// URL
const downloadUrl = `${RequsetUrl}${apiArr.ecDownload}?ec_apply_id=${storeValue.ec_apply_id}`;
request(apiArr.ecDownload, "POST", params).then(res => {
const respData = res.resp_data;
//
if (respData.ec_status === 'COMPLETED' && respData.ec_file) {
try {
// Base64URLBase64
const base64Data = respData.ec_file;
// URLBase64
const safeBase64 = base64Data.replace(/-/g, '+').replace(/_/g, '/');
// uni.downloadFile
uni.downloadFile({
url: downloadUrl,
header: {
'Authorization': uni.getStorageSync('ctoken')
},
success: (res) => {
uni.hideLoading();
//
uni.saveFile({
tempFilePath: res.tempFilePath,
success: (saveRes) => {
uni.showToast({
title: '下载成功',
icon: 'success'
});
//
uni.showModal({
title: '提示',
content: '合同已下载完成,是否立即打开?',
success: (modalRes) => {
if (modalRes.confirm) {
//
uni.openDocument({
filePath: saveRes.savedFilePath,
showMenu: true,
success: (openRes) => {
console.log('文件打开成功');
},
fail: (err) => {
console.error('文件打开失败:', err);
uni.showToast({
title: '文件打开失败',
icon: 'none'
});
}
});
}
//
const fileName = `contract_${respData.ec_apply_id || Date.now()}.pdf`;
// uni-app使API
//
const fs = uni.getFileSystemManager();
//
const tempFilePath = `${uni.env.USER_DATA_PATH}/${fileName}`;
try {
// Base64
fs.writeFile({
filePath: tempFilePath,
data: safeBase64,
encoding: 'base64',
success: () => {
uni.hideLoading();
uni.showToast({
title: '合同下载成功',
icon: 'success'
});
console.log('文件保存成功:', tempFilePath);
//
uni.openDocument({
filePath: tempFilePath,
showMenu: true,
success: (openRes) => {
console.log('文件打开成功:', openRes);
},
fail: (openErr) => {
console.error('文件打开失败:', openErr);
uni.showToast({
title: '文件打开失败',
icon: 'none'
});
}
});
},
fail: (writeErr) => {
uni.hideLoading();
console.error('文件写入失败:', writeErr);
uni.showToast({
title: '合同下载失败',
icon: 'none'
});
}
});
},
fail: (err) => {
console.error('文件保存失败:', err);
} catch (fsError) {
uni.hideLoading();
console.error('文件系统操作失败:', fsError);
uni.showToast({
title: '文件保存失败',
title: '文件系统错误',
icon: 'none'
});
}
});
},
fail: (err) => {
} catch (error) {
uni.hideLoading();
console.error('处理文件数据失败:', error);
uni.showToast({
title: '文件处理失败',
icon: 'none'
});
}
} else {
uni.hideLoading();
console.error('下载请求失败:', err);
uni.showToast({
title: '下载失败,请稍后重试',
icon: 'none'
});
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() {
@ -283,12 +318,12 @@ export default {
this.applyUrl = uni.getStorageSync('applyUrl');
this.showCustomModal = true;
},
//
closeModal() {
this.showCustomModal = false;
},
//
openApplyUrl() {
if (this.applyUrl) {
@ -297,11 +332,11 @@ export default {
});
}
},
//
confirmQuery() {
this.showCustomModal = false;
//
const storeValue = uni.getStorageSync('storeValue');
if (!storeValue || !storeValue.ec_apply_id) {
@ -328,7 +363,7 @@ export default {
}
})
},
//
getEcTypeLabel(code) {
// valuevalue