|
|
@@ -46,6 +46,7 @@
|
|
|
"
|
|
|
:catalog-id="catalogId"
|
|
|
:task-id="taskId"
|
|
|
+ :cross-table-info="crossTableInfo"
|
|
|
@save="handleFixedTableSave"
|
|
|
@refresh="handleRefresh"
|
|
|
/>
|
|
|
@@ -71,6 +72,7 @@
|
|
|
? currentSurveyRow.surveyTemplateId
|
|
|
: surveyTemplateId
|
|
|
"
|
|
|
+ :cross-table-info="crossTableInfo"
|
|
|
@save="handleDynamicTableSave"
|
|
|
@refresh="handleRefresh"
|
|
|
/>
|
|
|
@@ -256,6 +258,7 @@
|
|
|
getDynamicTableData,
|
|
|
downloadTemplate,
|
|
|
importData,
|
|
|
+ getCrossTableData,
|
|
|
} from '@/api/audit/survey'
|
|
|
import { getListBySurveyTemplateIdAndVersion } from '@/api/costSurveyTemplateHeaders'
|
|
|
|
|
|
@@ -332,6 +335,12 @@
|
|
|
fixedFields: '',
|
|
|
fixedFieldids: '',
|
|
|
columnsMeta: [],
|
|
|
+ // 跨表引用数据
|
|
|
+ crossTableInfo: {
|
|
|
+ isCrossTable: false,
|
|
|
+ crossTableName: '',
|
|
|
+ data: {},
|
|
|
+ },
|
|
|
// 上传相关
|
|
|
pendingDynamicRow: null,
|
|
|
}
|
|
|
@@ -388,6 +397,54 @@
|
|
|
}
|
|
|
this.auditPeriods = [str]
|
|
|
},
|
|
|
+ // 加载跨表引用数据(固定表/动态表使用,period 不传=查全部)
|
|
|
+ async loadCrossTableInfo(row) {
|
|
|
+ const surveyTemplateId =
|
|
|
+ (row && (row.surveyTemplateId || row.templateId)) ||
|
|
|
+ this.surveyTemplateId ||
|
|
|
+ ''
|
|
|
+ const taskId = (row && (row.taskId || row.taskID)) || this.taskId || ''
|
|
|
+
|
|
|
+ if (!surveyTemplateId || !taskId) {
|
|
|
+ this.crossTableInfo = {
|
|
|
+ isCrossTable: false,
|
|
|
+ crossTableName: '',
|
|
|
+ data: {},
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ const res = await getCrossTableData({
|
|
|
+ taskId,
|
|
|
+ surveyTemplateId,
|
|
|
+ type: 1,
|
|
|
+ })
|
|
|
+ // 兼容后端返回 code=0 的格式
|
|
|
+ const payload = res?.data || res?.value || res
|
|
|
+ if (payload && (payload.code === 0 || payload.code === 200)) {
|
|
|
+ const d = payload.data || {}
|
|
|
+ this.crossTableInfo = {
|
|
|
+ isCrossTable: !!d.isCrossTable,
|
|
|
+ crossTableName: d.crossTableName || '',
|
|
|
+ data: d.data || {},
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.crossTableInfo = {
|
|
|
+ isCrossTable: false,
|
|
|
+ crossTableName: '',
|
|
|
+ data: {},
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.error('获取跨表引用数据失败:', e)
|
|
|
+ this.crossTableInfo = {
|
|
|
+ isCrossTable: false,
|
|
|
+ crossTableName: '',
|
|
|
+ data: {},
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
// 处理在线填报点击
|
|
|
async handleOnlineFillClick(row) {
|
|
|
this.currentSurveyRow = row
|
|
|
@@ -433,12 +490,12 @@
|
|
|
await this.initFormFields()
|
|
|
// 接口调用完成后会自动打开弹窗(在 initFormFields 中处理)
|
|
|
} else if (row.tableType === '固定表') {
|
|
|
- // 如果表格类型是"固定表",弹出固定表填报弹窗
|
|
|
- // 调用接口获取固定表配置
|
|
|
+ // 固定表:先加载跨表引用数据,再初始化固定表
|
|
|
+ await this.loadCrossTableInfo(row)
|
|
|
await this.initFixedTableData()
|
|
|
- // 接口调用完成后会自动打开弹窗(在 initFixedTableData 中处理)
|
|
|
} else if (row.tableType === '动态表') {
|
|
|
- // 如果表格类型是"动态表",弹出动态表填报弹窗
|
|
|
+ // 动态表:先加载跨表引用数据,再初始化动态表
|
|
|
+ await this.loadCrossTableInfo(row)
|
|
|
this.resetDynamicDialogState()
|
|
|
await this.initDynamicTableData()
|
|
|
} else {
|