refactor: add schema

This commit is contained in:
junjun
2025-08-19 17:02:35 +08:00
parent 5a5b2e8f0c
commit 421ff59583
4 changed files with 60 additions and 9 deletions
+1
View File
@@ -22,4 +22,5 @@ export const datasourceApi = {
saveField: (data: any) => request.post('/datasource/editField', data),
getDs: (id: number) => request.post(`/datasource/get/${id}`),
cancelRequests: () => request.cancelRequests(),
getSchema: (data: any) => request.post('/datasource/getSchemaByConf', data)
}
+3 -2
View File
@@ -270,7 +270,8 @@
"field_original_notes": "Field original notes",
"field_notes_1": "Field notes",
"no_table": "No Table",
"go_add": "Add"
"go_add": "Add",
"get_schema": "Get Schema"
},
"model": {
"default_model": "Default model",
@@ -618,4 +619,4 @@
"setting_successfully": "Setting Successfully",
"customize_theme_color": "Customize theme color"
}
}
}
+3 -2
View File
@@ -270,7 +270,8 @@
"field_original_notes": "字段原始备注",
"field_notes_1": "字段备注",
"no_table": "暂无数据表",
"go_add": "去添加"
"go_add": "去添加",
"get_schema": "获取Schema"
},
"model": {
"default_model": "默认模型",
@@ -618,4 +619,4 @@
"setting_successfully": "设置成功",
"customize_theme_color": "自定义主题色"
}
}
}
+53 -5
View File
@@ -46,6 +46,7 @@ const getUploadURL = import.meta.env.VITE_API_BASE_URL + '/datasource/uploadExce
const saveLoading = ref<boolean>(false)
const uploadLoading = ref(false)
const { t } = useI18n()
const schemaList = ref<any>([])
const rules = reactive<FormRules>({
name: [
@@ -340,6 +341,16 @@ const check = () => {
})
}
const getSchema = () => {
schemaList.value = []
const requestObj = buildConf()
datasourceApi.getSchema(requestObj).then((res: any) => {
for (let item of res) {
schemaList.value.push({ label: item, value: item })
}
})
}
onBeforeUnmount(() => (saveLoading.value = false))
const next = debounce(async (formEl: FormInstance | undefined) => {
@@ -644,13 +655,30 @@ defineExpose({
"
/>
</el-form-item>
<el-form-item v-if="haveSchema.includes(form.type)" label="Schema" prop="dbSchema">
<el-input
<el-form-item v-if="haveSchema.includes(form.type)" class="schema-label" prop="dbSchema">
<template #label>
<span class="name">Schema<i class="required" /></span>
<el-button text size="small" @click="getSchema">
<template #icon>
<Icon name="icon_add_outlined">
<Plus class="svg-icon" />
</Icon>
</template>
{{ t('datasource.get_schema') }}
</el-button>
</template>
<el-select
v-model="form.dbSchema"
clearable
filterable
:placeholder="$t('datasource.please_enter') + $t('common.empty') + 'Schema'"
/>
<el-button v-if="false" link type="primary" :icon="Plus">Get Schema</el-button>
>
<el-option
v-for="item in schemaList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item :label="t('ds.form.timeout')" prop="timeout">
<el-input-number
@@ -905,4 +933,24 @@ defineExpose({
}
}
}
.schema-label {
::v-deep(.ed-form-item__label) {
display: flex !important;
justify-content: space-between;
padding-right: 0;
&::after {
display: none;
}
.name {
.required::after {
content: '*';
color: #f54a45;
margin-left: 2px;
}
}
}
}
</style>