diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java index 819ad48dc5..b490103f14 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java @@ -453,13 +453,15 @@ public class CalciteProvider extends Provider { if (StringUtils.isEmpty(configuration.getSchema())) { DEException.throwException(Translator.get("i18n_schema_is_empty")); } + sql = String.format("SELECT \n" + - " c.name ,t.name,ep.value \n" + + " c.name ,t.name ,ep.value \n" + "FROM \n" + " sys.columns AS c\n" + "LEFT JOIN sys.extended_properties AS ep ON c.object_id = ep.major_id AND c.column_id = ep.minor_id\n" + "LEFT JOIN sys.types AS t ON c.user_type_id = t.user_type_id\n" + - "WHERE c.object_id = OBJECT_ID('%s') ", datasourceRequest.getTable()); + "LEFT JOIN sys.objects AS o ON c.object_id = o.object_id\n" + + "WHERE o.name = '%s'", datasourceRequest.getTable()); break; case pg: configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Pg.class); diff --git a/core/core-frontend/src/views/visualized/data/datasource/form/ApiHttpRequestDraw.vue b/core/core-frontend/src/views/visualized/data/datasource/form/ApiHttpRequestDraw.vue index 91b55aad2b..7d3fadd353 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/form/ApiHttpRequestDraw.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/form/ApiHttpRequestDraw.vue @@ -220,6 +220,21 @@ const saveItem = () => { ElMessage.error(t('datasource.api_field_not_empty')) return } + if (apiItem.type === 'params') { + for (let i = 0; i < apiItem.fields.length; i++) { + for (let j = 0; j < paramsList.length; j++) { + for (let k = 0; k < paramsList[j].fields.length; k++) { + if ( + apiItem.fields[i].name === paramsList[j].fields[k].name && + apiItem.serialNumber !== paramsList[j].serialNumber + ) { + ElMessage.error('已经存在同名参数:' + apiItem.fields[i].name) + return + } + } + } + } + } for (let i = 0; i < apiItem.fields.length - 1; i++) { for (let j = i + 1; j < apiItem.fields.length; j++) { if (apiItem.fields[i].name === apiItem.fields[j].name) { @@ -241,15 +256,28 @@ const next = () => { ElMessage.error(t('datasource.please_input_dataPath')) return } - for (let i = 0; i < apiItemList.length; i++) { - if ( - apiItemList[i].name === apiItem.name && - apiItem.serialNumber !== apiItemList[i].serialNumber - ) { - ElMessage.error(t('datasource.has_repeat_name')) - return + if (apiItem.type === 'params') { + for (let i = 0; i < paramsList.length; i++) { + if ( + paramsList[i].name === apiItem.name && + apiItem.serialNumber !== paramsList[i].serialNumber + ) { + ElMessage.error('已经存在同名的参数表') + return + } + } + } else { + for (let i = 0; i < apiItemList.length; i++) { + if ( + apiItemList[i].name === apiItem.name && + apiItem.serialNumber !== apiItemList[i].serialNumber + ) { + ElMessage.error(t('datasource.has_repeat_name')) + return + } } } + cancelMap['/datasource/checkApiDatasource']?.() const params = Base64.encode(JSON.stringify(paramsList)) diff --git a/core/core-frontend/src/views/visualized/data/datasource/form/EditorDetail.vue b/core/core-frontend/src/views/visualized/data/datasource/form/EditorDetail.vue index 937a1e6ce6..b04fa6119f 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/form/EditorDetail.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/form/EditorDetail.vue @@ -379,6 +379,9 @@ const returnItem = apiItem => { if (form.value.paramsConfiguration[i].serialNumber === apiItem.serialNumber) { find = true form.value.paramsConfiguration[i] = apiItem + if (apiItem.serialNumber === activeParamsID.value) { + setActiveName(apiItem) + } } } if (!find) { @@ -498,6 +501,7 @@ const apiRule = { const dialogEditParams = ref(false) const dialogRenameApi = ref(false) const activeParamsName = ref('') +const activeParamsID = ref(0) const paramsObj = ref({ name: '', id: 1, @@ -542,6 +546,7 @@ const apiObjRules = { const setActiveName = val => { gridData.value = val.fields activeParamsName.value = val.name + activeParamsName.value = val.serialNumber } const paramsObjRef = ref()