提交 0693e358 authored 作者: kxjia's avatar kxjia

AttachTable.vue

上级 0cf23678
......@@ -231,6 +231,7 @@ const getFormData = () => {
}
const setFormData = (dataVale) => {
alert(JSON.stringify(dataVale))
Object.assign(formData, dataVale);
}
......
......@@ -494,7 +494,7 @@ const removeEmptyValues = (obj: Record<string, any>) => {
const getFormData = () => {
console.log(tableData.value)
const cleanedData = tableData.value.map((row) => {
const cleanedRow: Record<string, any> = {};
copyNonEmpty(row,cleanedRow)
......@@ -529,48 +529,47 @@ const getFormData = () => {
const setFormData = (dataVale) => {
console.log('MultiColumnTable setFormData called, dataVale:', dataVale);
tableData.value = dataVale.map(row => {
tableData.value = dataVale.map((row, rowIndex) => {
const newRow = { ...row }
props.fields.forEach(field => {
if(field.formType === 'table') {
const fieldWithGrid = field as any;
fieldWithGrid.gridOptions.data = JSON.parse(row[field.field])
} else if(field.formType === 'AttachTable') {
const key = `${field.field}_${dataVale.indexOf(row)}`;
const child = attchTableRefs.value[key];
console.log('MultiColumnTable AttachTable - key:', key, 'child:', child, 'row:', row);
if (child && child.setFormData) {
const tableData = {};
return newRow
})
nextTick(() => {
tableData.value.forEach((row, rowIndex) => {
props.fields.forEach(field => {
if(field.formType === 'table') {
const fieldWithGrid = field as any;
console.log('MultiColumnTable AttachTable - fieldWithGrid:', fieldWithGrid);
if (fieldWithGrid.gridOptions && fieldWithGrid.gridOptions.datas) {
console.log('MultiColumnTable AttachTable - gridOptions.datas:', fieldWithGrid.gridOptions.datas);
fieldWithGrid.gridOptions.datas.forEach((dataRow: any, rowIndex: number) => {
console.log(`MultiColumnTable AttachTable - dataRow[${rowIndex}]:`, dataRow);
Object.values(dataRow).forEach((cellValue: any, cellIndex: number) => {
console.log(`MultiColumnTable AttachTable - cellValue[${cellIndex}]:`, cellValue);
if (cellValue && typeof cellValue === 'object' && cellValue.field) {
console.log(`MultiColumnTable AttachTable - found field: ${cellValue.field}, value in row:`, row[cellValue.field]);
tableData[cellValue.field] = row[cellValue.field];
}
fieldWithGrid.gridOptions.data = JSON.parse(row[field.field])
} else if(field.formType === 'AttachTable') {
const key = `${field.field}_${rowIndex}`;
const child = attchTableRefs.value[key];
if (child && child.setFormData) {
const tableData: Record<string, any> = {};
const fieldWithGrid = field as any;
console.log('MultiColumnTable AttachTable - fieldWithGrid:', fieldWithGrid);
if (fieldWithGrid.gridOptions && fieldWithGrid.gridOptions.datas) {
fieldWithGrid.gridOptions.datas.forEach((dataRow: any, dataRowIndex: number) => {
Object.values(dataRow).forEach((cellValue: any, cellIndex: number) => {
if (cellValue && typeof cellValue === 'object' && cellValue.field) {
tableData[cellValue.field] = row[cellValue.field];
}
});
});
});
}
console.log('MultiColumnTable AttachTable - final tableData:', tableData);
child.setFormData(tableData);
}
} else if (field.formType === 'combinaform') {
const fieldWithChilds = field as any;
if (fieldWithChilds.childs && Array.isArray(fieldWithChilds.childs)) {
fieldWithChilds.childs.forEach((child: any) => {
if (child.formType === 'checkbox' && !Array.isArray(newRow[child.field])) {
newRow[child.field] = []
}
})
child.setFormData(tableData);
}
} else if (field.formType === 'combinaform') {
const fieldWithChilds = field as any;
if (fieldWithChilds.childs && Array.isArray(fieldWithChilds.childs)) {
fieldWithChilds.childs.forEach((child: any) => {
if (child.formType === 'checkbox' && !Array.isArray(row[child.field])) {
row[child.field] = []
}
})
}
}
}
})
})
return newRow
})
}
......@@ -588,7 +587,6 @@ const getExtraFieldComponent = (type: string) => {
const gridEvents: VxeGridListeners = {
toolbarButtonClick(params) {
if (params.code === "add") {
const fieldName = (params.button as any).field
const fieldConfig = props.fields.find(field => field.field === fieldName)
......@@ -649,7 +647,6 @@ defineExpose({
})
onMounted(() => {
//curColnum.value = props.fields.length
return () => {
document.body.classList.remove('fullscreen-table-mode')
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论