|
|
|
@ -205,7 +205,10 @@ export default { |
|
|
|
handler(newData) { |
|
|
|
const { stepTableFormData = [], headerSelectFields = {} } = newData; |
|
|
|
this.updateDataSource(stepTableFormData); |
|
|
|
this.headerSelectFields = JSON.parse(JSON.stringify(headerSelectFields)) |
|
|
|
this.headerSelectFields = JSON.parse(JSON.stringify(headerSelectFields)); |
|
|
|
|
|
|
|
// 在数据加载后检查 compareTo 逻辑 |
|
|
|
this.checkCompareToOnDataLoad(); |
|
|
|
} |
|
|
|
}, |
|
|
|
localDataSource: { |
|
|
|
@ -424,10 +427,71 @@ export default { |
|
|
|
error.field === col.headerSelectKey) |
|
|
|
); |
|
|
|
}, |
|
|
|
// 检查并应用 compareTo 逻辑 |
|
|
|
checkCompareToLogic(rowIndex, colIndex, colKey, value) { |
|
|
|
const col = this.columns[colIndex]; |
|
|
|
|
|
|
|
// 检查主字段的 compareTo 逻辑 |
|
|
|
if (col && col.bodyFillType === "actFill" && col.compareTo) { |
|
|
|
const compareToValue = this.localDataSource[rowIndex][col.compareTo]; |
|
|
|
|
|
|
|
// 比较当前值和compareTo值,如果不相等则设置橙色背景 |
|
|
|
if (value !== compareToValue) { |
|
|
|
this.setOrangeBg(rowIndex, colIndex, colKey, true); |
|
|
|
} else { |
|
|
|
// 相等则移除橙色背景 |
|
|
|
this.setOrangeBg(rowIndex, colIndex, colKey, false); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 在数据加载时检查 compareTo 逻辑 |
|
|
|
checkCompareToOnDataLoad() { |
|
|
|
// 遍历所有行和列,检查 compareTo 逻辑 |
|
|
|
this.localDataSource.forEach((row, rowIndex) => { |
|
|
|
this.columns.forEach((col, colIndex) => { |
|
|
|
if (col.bodyFillType === "actFill" && col.compareTo) { |
|
|
|
const currentValue = row[col.prop]; |
|
|
|
const compareToValue = row[col.compareTo]; |
|
|
|
|
|
|
|
if (currentValue !== undefined && compareToValue !== undefined) { |
|
|
|
// 比较当前值和compareTo值,如果不相等则设置橙色背景 |
|
|
|
if (currentValue !== compareToValue) { |
|
|
|
this.setOrangeBg(rowIndex, colIndex, col.prop, true); |
|
|
|
} else { |
|
|
|
// 相等则移除橙色背景 |
|
|
|
this.setOrangeBg(rowIndex, colIndex, col.prop, false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 检查子字段的 compareTo 逻辑 |
|
|
|
if (col.bodySubFillType === "actFill" && col.bodySubCompareTo) { |
|
|
|
const currentValue = row[col.bodySubKey]; |
|
|
|
const compareToValue = row[col.bodySubCompareTo]; |
|
|
|
|
|
|
|
if (currentValue !== undefined && compareToValue !== undefined) { |
|
|
|
// 比较当前值和compareTo值,如果不相等则设置橙色背景 |
|
|
|
if (currentValue !== compareToValue) { |
|
|
|
this.setOrangeBg(rowIndex, colIndex, col.bodySubKey, true); |
|
|
|
} else { |
|
|
|
// 相等则移除橙色背景 |
|
|
|
this.setOrangeBg(rowIndex, colIndex, col.bodySubKey, false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 表体值变化 |
|
|
|
onBodyValueChange(rowIndex, colIndex, value) { |
|
|
|
const col = this.columns[colIndex]; |
|
|
|
this.localDataSource[rowIndex][col.prop] = value; |
|
|
|
|
|
|
|
// 检查并应用 compareTo 逻辑 |
|
|
|
this.checkCompareToLogic(rowIndex, colIndex, col.prop, value); |
|
|
|
|
|
|
|
// 输入时清除对应表单项的错误状态 |
|
|
|
this.formErrors = this.formErrors.filter(error => |
|
|
|
!(error.rowIndex === rowIndex && |
|
|
|
@ -440,6 +504,20 @@ export default { |
|
|
|
onBodySubValueChange(rowIndex, colIndex, value) { |
|
|
|
const col = this.columns[colIndex]; |
|
|
|
this.localDataSource[rowIndex][col.bodySubKey] = value; |
|
|
|
|
|
|
|
// 检查子字段的 compareTo 逻辑 |
|
|
|
if (col && col.bodySubFillType === "actFill" && col.bodySubCompareTo) { |
|
|
|
const compareToValue = this.localDataSource[rowIndex][col.bodySubCompareTo]; |
|
|
|
|
|
|
|
// 比较当前值和compareTo值,如果不相等则设置橙色背景 |
|
|
|
if (value !== compareToValue) { |
|
|
|
this.setOrangeBg(rowIndex, colIndex, col.bodySubKey, true); |
|
|
|
} else { |
|
|
|
// 相等则移除橙色背景 |
|
|
|
this.setOrangeBg(rowIndex, colIndex, col.bodySubKey, false); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 输入时清除对应表单项的错误状态 |
|
|
|
this.formErrors = this.formErrors.filter(error => |
|
|
|
!(error.rowIndex === rowIndex && |
|
|
|
@ -464,7 +542,7 @@ export default { |
|
|
|
label: this.$t(col.label), |
|
|
|
precision: currentItem[col.bodyPrecisionKey] || col.precision, |
|
|
|
copyFrom: col.copyFrom || "", |
|
|
|
compareTo: col.bodyCompareTo, // 添加 compareTo 字段 |
|
|
|
compareTo: col.compareTo, // 添加 compareTo 字段 |
|
|
|
type: col.bodyType || "input", |
|
|
|
}; |
|
|
|
if (col.bodyDisabled) { |
|
|
|
@ -555,8 +633,8 @@ export default { |
|
|
|
|
|
|
|
// 查找对应的列配置 |
|
|
|
const col = this.columns.find(c => c.prop === colKey); |
|
|
|
if (col && col.bodyFillType === "actFill" && col.bodyCompareTo) { |
|
|
|
const compareToValue = this.localDataSource[rowIndex][col.bodyCompareTo]; |
|
|
|
if (col && col.bodyFillType === "actFill" && col.compareTo) { |
|
|
|
const compareToValue = this.localDataSource[rowIndex][col.compareTo]; |
|
|
|
|
|
|
|
// 比较当前值和compareTo值,如果不相等则设置橙色背景 |
|
|
|
if (value !== compareToValue) { |
|
|
|
|