|
|
|
@ -120,14 +120,14 @@ |
|
|
|
v-for="(item, processColumnIndex) in visibleProcessColumns" |
|
|
|
:key="`${item.code}_${item.sortNo || ''}_${processColumnIndex}`" |
|
|
|
:label="item.label" |
|
|
|
width="120" |
|
|
|
width="134" |
|
|
|
align="center" |
|
|
|
header-align="center" |
|
|
|
> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div |
|
|
|
v-if="isProcessColumnVisibleForRow(scope.row, item)" |
|
|
|
:class="['process-cell', isProcessComplete(scope.row, item) ? 'is-complete' : '']" |
|
|
|
:class="['process-cell', isProcessStatusComplete(scope.row, item) ? 'is-complete' : '']" |
|
|
|
> |
|
|
|
<el-date-picker |
|
|
|
v-if="batchEditMode" |
|
|
|
@ -140,7 +140,7 @@ |
|
|
|
/> |
|
|
|
<div |
|
|
|
v-else |
|
|
|
class="process-content" |
|
|
|
:class="['process-content', isProcessStatusComplete(scope.row, item) ? 'is-complete' : '']" |
|
|
|
@mouseenter="handleProcessTooltipMouseEnter(scope.row, item, $event)" |
|
|
|
@mousemove="handleProcessTooltipMouseMove($event)" |
|
|
|
@mouseleave="handleProcessTooltipMouseLeave" |
|
|
|
@ -158,8 +158,8 @@ |
|
|
|
class="process-complete-btn" |
|
|
|
type="success" |
|
|
|
size="mini" |
|
|
|
plain v-show="!isProcessComplete(scope.row, item)" |
|
|
|
:disabled="isProcessComplete(scope.row, item)" |
|
|
|
plain v-show="!isProcessStatusComplete(scope.row, item)" |
|
|
|
:disabled="isProcessStatusComplete(scope.row, item)" |
|
|
|
@click.stop="markProcessComplete(scope.row, item)" |
|
|
|
>√</el-button> |
|
|
|
</div> |
|
|
|
@ -3001,22 +3001,25 @@ export default { |
|
|
|
return |
|
|
|
} |
|
|
|
const actualDate = this.formatDate(dateVal) |
|
|
|
// 工序日期被清空时,状态必须回退为“未完成”,避免出现“无日期但已完成”的脏状态。 |
|
|
|
const nextStatus = actualDate ? '已完成' : '未完成' |
|
|
|
// 业务要求:表格选择日期仅更新日期,不自动改变工序状态(状态由“√”动作控制)。 |
|
|
|
const currentStatus = row[processCol.statusField] ? String(row[processCol.statusField]).trim() : '' |
|
|
|
const nextStatus = currentStatus || '未完成' |
|
|
|
this.updateProcessFromTable(row, processCol, { |
|
|
|
status: nextStatus, |
|
|
|
actualDate: actualDate, |
|
|
|
remark: actualDate ? '表格直接选择日期' : '表格清空实际完成日期' |
|
|
|
remark: actualDate ? '表格直接修改实际完成日期(状态不变)' : '表格清空实际完成日期(状态不变)' |
|
|
|
}, true) |
|
|
|
}, |
|
|
|
markProcessComplete (row, processCol) { |
|
|
|
if (!row || !processCol || this.isProcessComplete(row, processCol)) { |
|
|
|
if (!row || !processCol || this.isProcessStatusComplete(row, processCol)) { |
|
|
|
return |
|
|
|
} |
|
|
|
const today = this.formatDate(new Date()) |
|
|
|
// 若用户已手工选择日期,打勾仅改状态,不覆盖已选日期;无日期时才补当天。 |
|
|
|
const currentActualDate = this.formatDate(row[processCol.actualField]) |
|
|
|
const nextActualDate = currentActualDate || this.formatDate(new Date()) |
|
|
|
this.updateProcessFromTable(row, processCol, { |
|
|
|
status: '已完成', |
|
|
|
actualDate: today, |
|
|
|
actualDate: nextActualDate, |
|
|
|
remark: '表格一键完成' |
|
|
|
}, false, '工序已标记为完成') |
|
|
|
}, |
|
|
|
@ -3330,6 +3333,20 @@ export default { |
|
|
|
} |
|
|
|
return historyDateList.join('\n') |
|
|
|
}, |
|
|
|
isProcessStatusComplete (row, processCol) { |
|
|
|
if (!row || !processCol) { |
|
|
|
return false |
|
|
|
} |
|
|
|
const statusVal = row[processCol.statusField] |
|
|
|
const status = statusVal ? String(statusVal).trim() : '' |
|
|
|
if (!status || status === '未完成' || status === '进行中') { |
|
|
|
return false |
|
|
|
} |
|
|
|
if (status === '已完成' || status === '打样完成') { |
|
|
|
return true |
|
|
|
} |
|
|
|
return status.indexOf('完成') > -1 && status.indexOf('未') === -1 |
|
|
|
}, |
|
|
|
isProcessComplete (row, processCol) { |
|
|
|
if (!row || !processCol) { |
|
|
|
return false |
|
|
|
@ -3676,6 +3693,17 @@ export default { |
|
|
|
background: #ececec; |
|
|
|
} |
|
|
|
|
|
|
|
.process-cell.is-complete .el-input__inner { |
|
|
|
background: #ececec; |
|
|
|
border-color: #d5d7de; |
|
|
|
color: #8c8c8c; |
|
|
|
} |
|
|
|
|
|
|
|
.process-cell.is-complete .el-input.is-disabled .el-input__inner { |
|
|
|
background: #ececec; |
|
|
|
color: #8c8c8c; |
|
|
|
} |
|
|
|
|
|
|
|
.process-cell.is-complete .link-date { |
|
|
|
color: #8c8c8c; |
|
|
|
} |
|
|
|
|