|
|
|
@ -191,6 +191,15 @@ |
|
|
|
> |
|
|
|
<template v-if="isTrackingRowProcessReadonly(scope.row)"> |
|
|
|
<span class="process-date-display">{{ scope.row[item.actualField] || '' }}</span> |
|
|
|
<el-button |
|
|
|
v-if="canRollbackProofingComplete(scope.row, item)" |
|
|
|
class="process-rollback-btn" |
|
|
|
type="warning" |
|
|
|
size="mini" |
|
|
|
plain |
|
|
|
title="撤回Delivery&Package已完成" |
|
|
|
@click.stop="rollbackProcessComplete(scope.row, item)" |
|
|
|
>↶</el-button> |
|
|
|
</template> |
|
|
|
<template v-else> |
|
|
|
<el-date-picker |
|
|
|
@ -5342,7 +5351,7 @@ export default { |
|
|
|
if (!row || !processCol || !this.isProcessStatusComplete(row, processCol)) { |
|
|
|
return |
|
|
|
} |
|
|
|
if (this.isTrackingRowProcessReadonly(row)) { |
|
|
|
if (this.isTrackingRowProcessReadonly(row) && !this.canRollbackProofingComplete(row, processCol)) { |
|
|
|
return |
|
|
|
} |
|
|
|
// 按页面交互约定:已完成工序允许双击日期输入框进行回退。 |
|
|
|
@ -5352,23 +5361,66 @@ export default { |
|
|
|
if (!row || !processCol || !this.isProcessStatusComplete(row, processCol)) { |
|
|
|
return |
|
|
|
} |
|
|
|
if (this.isTrackingRowProcessReadonly(row)) { |
|
|
|
const rollbackProofingComplete = this.canRollbackProofingComplete(row, processCol) |
|
|
|
if (this.isTrackingRowProcessReadonly(row) && !rollbackProofingComplete) { |
|
|
|
return |
|
|
|
} |
|
|
|
const currentActualDate = this.formatDate(row[processCol.actualField]) |
|
|
|
this.$confirm('确定回退该工序状态为“未完成”吗?', '提示', { |
|
|
|
const proofingNoText = this.getRollbackProofingNoDisplay(row) |
|
|
|
// Delivery&Package 在“打样完成”状态下的撤回需要同时回退整单状态,提示语单独说明影响范围。 |
|
|
|
const rollbackTip = rollbackProofingComplete |
|
|
|
? `确定撤回打样单(${proofingNoText})的Delivery&Package已完成状态吗?撤回后打样状态恢复为“进行中”。` |
|
|
|
: `确定回退该工序状态为“未完成”吗?打样单号:${proofingNoText}` |
|
|
|
this.$confirm(rollbackTip, '提示', { |
|
|
|
confirmButtonText: '确定', |
|
|
|
cancelButtonText: '取消', |
|
|
|
type: 'warning' |
|
|
|
}).then(() => { |
|
|
|
const rollbackRemark = rollbackProofingComplete |
|
|
|
? '撤回Delivery&Package已完成并回退打样状态' |
|
|
|
: '表格一键回退为未完成' |
|
|
|
const rollbackSuccessMsg = rollbackProofingComplete |
|
|
|
? 'Delivery&Package已撤回,打样状态恢复为进行中' |
|
|
|
: '工序状态已回退为未完成' |
|
|
|
// 仅回退状态,保留当前实际完成日期,避免误回退时丢失用户已维护的日期信息。 |
|
|
|
this.updateProcessFromTable(row, processCol, { |
|
|
|
status: '未完成', |
|
|
|
actualDate: currentActualDate, |
|
|
|
remark: '表格一键回退为未完成' |
|
|
|
}, false, '工序状态已回退为未完成') |
|
|
|
remark: rollbackRemark |
|
|
|
}, false, rollbackSuccessMsg) |
|
|
|
}).catch(() => {}) |
|
|
|
}, |
|
|
|
isDeliveryPackageProcess (processCol) { |
|
|
|
if (!processCol || processCol.code == null) { |
|
|
|
return false |
|
|
|
} |
|
|
|
return String(processCol.code).trim().toLowerCase() === 'deliverypackage' |
|
|
|
}, |
|
|
|
canRollbackProofingComplete (row, processCol) { |
|
|
|
if (!row || !processCol) { |
|
|
|
return false |
|
|
|
} |
|
|
|
if (!this.isProofingFinishedForTrackingStatus(row)) { |
|
|
|
return false |
|
|
|
} |
|
|
|
if (!this.isDeliveryPackageProcess(processCol)) { |
|
|
|
return false |
|
|
|
} |
|
|
|
return this.isProcessStatusComplete(row, processCol) |
|
|
|
}, |
|
|
|
getRollbackProofingNoDisplay (row) { |
|
|
|
if (!row) { |
|
|
|
return '-' |
|
|
|
} |
|
|
|
const proofingNo = row.proofingNo == null ? '' : String(row.proofingNo).trim() |
|
|
|
if (proofingNo) { |
|
|
|
return proofingNo |
|
|
|
} |
|
|
|
if (row.trackingId != null && row.trackingId !== '') { |
|
|
|
return `TrackingID:${row.trackingId}` |
|
|
|
} |
|
|
|
return '-' |
|
|
|
}, |
|
|
|
updateProcessFromTable (row, processCol, processData, silentSuccess, successMsg) { |
|
|
|
if (!row || !processCol || !row.trackingId) { |
|
|
|
this.$message.error('工序参数缺失') |
|
|
|
@ -6199,6 +6251,7 @@ export default { |
|
|
|
min-width: 74px; |
|
|
|
text-align: center; |
|
|
|
color: #606266; |
|
|
|
margin-left: 18px; |
|
|
|
} |
|
|
|
|
|
|
|
.process-complete-btn { |
|
|
|
@ -6206,6 +6259,11 @@ export default { |
|
|
|
min-width: 12px; |
|
|
|
} |
|
|
|
|
|
|
|
.process-rollback-btn { |
|
|
|
padding: 4px 6px; |
|
|
|
min-width: 12px; |
|
|
|
} |
|
|
|
|
|
|
|
.comments-cell { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
|