diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java index de19b8bb6b..5370af6d50 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java @@ -843,6 +843,10 @@ public class DatasourceServer implements DatasourceApi { if (CollectionUtils.isEmpty(newTableFields) || CollectionUtils.isEmpty(oldTableFields)) { return false; } + boolean isHistory = oldTableFields.stream().filter(tableField -> !tableField.isChecked()).collect(Collectors.toList()).size() == oldTableFields.size(); + if (isHistory) { + oldTableFields.forEach(tableField -> tableField.setChecked(true)); + } newTableFields.forEach(tableField -> tableField.setChecked(false)); for (TableField oldField : oldTableFields) { if (!oldField.isChecked()) { @@ -867,6 +871,10 @@ public class DatasourceServer implements DatasourceApi { private void mergeFields(List oldFields, List newFields) { newFields.forEach(tableField -> tableField.setChecked(false)); + boolean isHistory = oldFields.stream().filter(tableField -> !tableField.isChecked()).collect(Collectors.toList()).size() == oldFields.size(); + if (isHistory) { + oldFields.forEach(tableField -> tableField.setChecked(true)); + } for (TableField newField : newFields) { for (TableField oldField : oldFields) { if (oldField.getName().equals(newField.getName())) { diff --git a/core/core-frontend/src/views/visualized/data/datasource/form/ExcelDetail.vue b/core/core-frontend/src/views/visualized/data/datasource/form/ExcelDetail.vue index fa20846a58..5c79d1feed 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/form/ExcelDetail.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/form/ExcelDetail.vue @@ -215,6 +215,13 @@ const saveExcelDs = (params, successCb, finallyCb) => { if (selectNode[i].changeFiled) { changeFiled = true } + if (selectNode[i].fields.filter(field => field.checked).length == 0) { + ElMessage({ + message: selectNode[i].excelLabel + t('datasource.api_field_not_empty'), + type: 'error' + }) + return + } for (let j = 0; j < selectNode[i].fields.length; j++) { if ( selectNode[i].fields[j].checked &&