Commit 5947821f by liangjianmin

feat(orderTrack): 重构协议状态处理逻辑,优化弹窗显示

- 提取通用逻辑为独立方法,提升代码可读性
- 优化弹窗显示逻辑,处理不同协议状态的情况
- 增加无数据处理逻辑,确保用户体验一致性
parent cb614cea
Showing with 59 additions and 44 deletions
......@@ -437,57 +437,72 @@
this.agreementStatus.has_cooperation_agreement = res.data.has_cooperation_agreement;
this.agreementStatus.status = res.data.status;
var status = res.data.status;
// 根据协议状态设置标题和显示对应弹窗
if (res.data.has_cooperation_agreement === 1) {
// 已有协议
this.agreementForm.id = res.data.id || '';
this.agreementForm.file_url = res.data.file_url || '';
this.agreementForm.file_name = res.data.file_name || '';
this.agreementForm.validity_type = res.data.validity_type || 1;
this.agreementForm.validity_start = res.data.validity_start || '';
this.agreementForm.validity_end = res.data.validity_end || '';
// 如果是自定义有效期,设置日期范围
if (res.data.validity_type === 2 && res.data.validity_start && res.data.validity_end) {
this.validityRange = [res.data.validity_start, res.data.validity_end];
}
if (status === 1) {
// 审核通过,显示状态提示弹窗
this.title = '提示';
this.dialogVisibleSign = false;
this.dialogVisibleStatus = true;
} else {
// 待审核或审核失败,显示申请弹窗
this.title = '申请电子签';
this.dialogVisibleSign = true;
this.dialogVisibleStatus = false;
}
} else {
// 没有协议,显示申请弹窗
this.title = '签署采购合作框架协议';
this.dialogVisibleSign = true;
this.dialogVisibleStatus = false;
var hasAgreement = res.data.has_cooperation_agreement;
var id = res.data.id || '';
// 填充表单数据(通用逻辑)
this.fillAgreementForm(res.data, id);
// 四种情况的弹窗逻辑
if (hasAgreement === 0 && id === '') {
// 情况1.1:供应商没有提交过申请 (弹窗1.1)
this.showSignDialog('签署采购合作框架协议');
} else if (hasAgreement === 0 && (status === 0 || status === -1)) {
// 情况1.2/1.3:已提交申请,审核中或审核不通过 (弹窗1.2/1.3)
this.showSignDialog('申请电子签');
} else if (hasAgreement === 1) {
// 情况2:已有【采购合作框架协议】,显示弹窗2 (提示已有协议可走电子签流程)
this.showStatusDialog();
}
} else {
this.agreementStatus.status_name = '暂无状态';
this.agreementStatus.has_cooperation_agreement = 0;
// 没有协议数据,打开申请弹窗
this.title = '签署采购合作框架协议';
this.dialogVisibleSign = true;
this.dialogVisibleStatus = false;
// 接口返回无数据,按情况1.1处理
this.handleNoDataCase('暂无状态');
}
}).catch(err => {
console.error('获取协议状态失败:', err);
this.agreementStatus.status_name = '获取状态失败';
this.agreementStatus.has_cooperation_agreement = 0;
// 接口失败,默认打开申请弹窗
this.title = '签署采购合作框架协议';
this.dialogVisibleSign = true;
this.dialogVisibleStatus = false;
this.handleNoDataCase('获取状态失败');
});
},
/**
* 填充协议表单数据
*/
fillAgreementForm(data, id) {
this.agreementForm.id = id;
this.agreementForm.file_url = data.file_url || '';
this.agreementForm.file_name = data.file_name || '';
this.agreementForm.validity_type = data.validity_type || 1;
this.agreementForm.validity_start = data.validity_start || '';
this.agreementForm.validity_end = data.validity_end || '';
// 设置日期范围
if (data.validity_type === 2 && data.validity_start && data.validity_end) {
this.validityRange = [data.validity_start, data.validity_end];
}
},
/**
* 显示申请签署弹窗
*/
showSignDialog(title) {
this.title = title;
this.dialogVisibleSign = true;
this.dialogVisibleStatus = false;
},
/**
* 显示状态提示弹窗
*/
showStatusDialog() {
this.title = '提示';
this.dialogVisibleSign = false;
this.dialogVisibleStatus = true;
},
/**
* 处理无数据情况(默认情况1.1)
*/
handleNoDataCase(statusName) {
this.agreementStatus.status_name = statusName;
this.agreementStatus.has_cooperation_agreement = 0;
this.showSignDialog('签署采购合作框架协议');
},
//生成发货单
addSend() {
if (this.multipleSelection.length != 1) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment