小白丸子一开始的做法(点击展开)
/**
* 获取表单内所有字段值
* @returns {Object} 包含主表字段和明细表数据的对象
*/
const getAllFieldValues = () => {
const formSdk = window.WeFormSDK.getWeFormInstance();
const fieldInfos = formSdk.listFieldInfo();
// 复用现有格式化逻辑
const formatFields = (fieldInfos) => {
const result = { mainFields: [], detailTables: {} };
fieldInfos.forEach(field => {
if (field.componentKey === 'DataTable') {
result.detailTables[field.subFormId] = [];
} else if (field.fieldId && /^\d+$/.test(field.fieldId)) {
const target = field.subFormId && result.detailTables[field.subFormId]
? result.detailTables[field.subFormId]
: result.mainFields;
target.push(field.fieldId);
}
});
return result;
};
// 复用现有数据获取逻辑
const getFormData = (fields) => {
const result = { mainFields: {}, detailTables: {} };
fields.mainFields.forEach(fieldId => {
try {
result.mainFields[fieldId] = formSdk.getFieldObj(fieldId);
} catch (error) {
console.warn(`获取字段 ${fieldId} 失败:`, error);
result.mainFields[fieldId] = null;
}
});
Object.keys(fields.detailTables).forEach(tableId => {
try {
result.detailTables[tableId] = formSdk.getDetailData(tableId) || [];
} catch (error) {
console.warn(`获取明细表 ${tableId} 失败:`, error);
result.detailTables[tableId] = [];
}
});
return result;
};
const fields = formatFields(fieldInfos);
return getFormData(fields);
};
现在的做法
formSdk.weFormApi.formStore.getFormData().dataDetails;
[泛微Ecology10] 获取当前表单所有字段值的方法 by https://oneszhang.com/archives/180.html