|
|
|
@ -57,6 +57,7 @@ |
|
|
|
<p>{{ $t('template.dl.dl009.jlsDesc') }}</p> |
|
|
|
</div> |
|
|
|
<CustomTable |
|
|
|
v-if="dynamicJgxxColumns.length > 0" |
|
|
|
:columns="jgxxColumns" |
|
|
|
:ref="refConf.jgxx" |
|
|
|
:showOperation="false" |
|
|
|
@ -579,53 +580,22 @@ export default { |
|
|
|
|
|
|
|
// 处理结果信息前序表单选择 |
|
|
|
if (key === 'jgxxQxbd') { |
|
|
|
// 在处理前序表单之前,先保存当前的仪器使用信息和表头数据 |
|
|
|
const currentYqsyData = this.formData.stepTableFormData |
|
|
|
? JSON.parse(JSON.stringify(this.formData.stepTableFormData)) |
|
|
|
: [] |
|
|
|
const currentHeaderFields = this.formData.headerSelectFields |
|
|
|
? JSON.parse(JSON.stringify(this.formData.headerSelectFields)) |
|
|
|
: {} |
|
|
|
|
|
|
|
// 使用 $nextTick 确保在下一个 tick 中恢复数据 |
|
|
|
this.$nextTick(() => { |
|
|
|
this.handleJgxxQxbdSelect(row) |
|
|
|
// 直接从表格ref获取当前仪器使用信息数据(而非formData) |
|
|
|
const yqsyTableRef = this.$refs[refConf.yqsy] |
|
|
|
const savedYqsyData = JSON.parse(JSON.stringify(yqsyTableRef?.getDataSource() || [])) |
|
|
|
console.log('[DL009] 选择前序表单前,保存仪器数据:', savedYqsyData.length, '条') |
|
|
|
|
|
|
|
// 再次使用 $nextTick 确保在 handleJgxxQxbdSelect 完成后恢复数据 |
|
|
|
this.$nextTick(() => { |
|
|
|
if ( |
|
|
|
currentYqsyData.length > 0 && |
|
|
|
(!this.formData.stepTableFormData || |
|
|
|
this.formData.stepTableFormData.length === 0) |
|
|
|
) { |
|
|
|
this.$set(this.formData, 'stepTableFormData', currentYqsyData) |
|
|
|
|
|
|
|
// 同时更新表格显示 |
|
|
|
const yqsyTableRef = this.$refs[refConf.yqsy] |
|
|
|
if (yqsyTableRef) { |
|
|
|
yqsyTableRef.updateDataSource(currentYqsyData) |
|
|
|
} |
|
|
|
} |
|
|
|
// 先将仪器数据写入formData,防止watch触发时读到空数组 |
|
|
|
if (savedYqsyData.length > 0) { |
|
|
|
this.$set(this.formData, 'stepTableFormData', savedYqsyData) |
|
|
|
} |
|
|
|
|
|
|
|
// 如果当前表头数据为空,恢复之前的表头数据 |
|
|
|
if ( |
|
|
|
Object.keys(currentHeaderFields).length > 0 && |
|
|
|
(!this.formData.headerSelectFields || |
|
|
|
Object.keys(this.formData.headerSelectFields).length === 0) |
|
|
|
) { |
|
|
|
this.$set( |
|
|
|
this.formData, |
|
|
|
'headerSelectFields', |
|
|
|
currentHeaderFields |
|
|
|
) |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
this.handleJgxxQxbdSelect(row, savedYqsyData) |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 处理结果信息前序表单选择 |
|
|
|
handleJgxxQxbdSelect(row) { |
|
|
|
handleJgxxQxbdSelect(row, savedYqsyData) { |
|
|
|
// 重置加载标记,允许重新加载数据 |
|
|
|
this.isDataLoaded = false |
|
|
|
|
|
|
|
@ -664,7 +634,7 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
// 3. 更新表格 |
|
|
|
this.updateJgxxTable(dynamicColumns.columns, tableData, headerFields) |
|
|
|
this.updateJgxxTable(dynamicColumns.columns, tableData, headerFields, savedYqsyData) |
|
|
|
} catch (error) { |
|
|
|
console.error('解析前序表单数据失败:', error) |
|
|
|
this.clearJgxxTable() |
|
|
|
@ -775,7 +745,7 @@ export default { |
|
|
|
}, |
|
|
|
|
|
|
|
// 更新结果信息表格 |
|
|
|
updateJgxxTable(columns, tableData, headerFields) { |
|
|
|
updateJgxxTable(columns, tableData, headerFields, savedYqsyData) { |
|
|
|
// 更新动态列配置 |
|
|
|
this.dynamicJgxxColumns = columns |
|
|
|
|
|
|
|
@ -804,6 +774,22 @@ export default { |
|
|
|
|
|
|
|
this.$set(this.formData, 'stepTableFormData_1', tableData) |
|
|
|
this.isDataLoaded = true |
|
|
|
|
|
|
|
// 恢复仪器使用信息数据 |
|
|
|
const yqsyTableRef = this.$refs[refConf.yqsy] |
|
|
|
const currentData = yqsyTableRef?.getDataSource() || [] |
|
|
|
console.log('[DL009] updateJgxxTable $nextTick - 当前仪器数据:', currentData.length, '条') |
|
|
|
console.log('[DL009] updateJgxxTable $nextTick - 保存的仪器数据:', savedYqsyData?.length, '条') |
|
|
|
|
|
|
|
if (savedYqsyData && savedYqsyData.length > 0 && currentData.length === 0) { |
|
|
|
console.log('[DL009] 恢复仪器数据') |
|
|
|
// 先写入formData再更新表格 |
|
|
|
this.$set(this.formData, 'stepTableFormData', savedYqsyData) |
|
|
|
this.$nextTick(() => { |
|
|
|
yqsyTableRef?.updateDataSource(savedYqsyData) |
|
|
|
console.log('[DL009] 恢复后仪器数据:', yqsyTableRef?.getDataSource()?.length, '条') |
|
|
|
}) |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
|
|
|
|
|