Add File
This commit is contained in:
133
frontend/src/views/ds/AddDrawer.vue
Normal file
133
frontend/src/views/ds/AddDrawer.vue
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, nextTick } from 'vue'
|
||||||
|
import { datasourceApi } from '@/api/datasource'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
import icon_close_outlined from '@/assets/svg/operate/ope-close.svg'
|
||||||
|
import DatasourceList from './DatasourceList.vue'
|
||||||
|
import DatasourceListSide from './DatasourceListSide.vue'
|
||||||
|
import DatasourceForm from './DatasourceForm.vue'
|
||||||
|
|
||||||
|
const { t } = useI18n()
|
||||||
|
const datasourceConfigVisible = ref(false)
|
||||||
|
const activeStep = ref(0)
|
||||||
|
const currentType = ref('')
|
||||||
|
const editDatasource = ref(false)
|
||||||
|
const activeName = ref('')
|
||||||
|
const activeType = ref('')
|
||||||
|
const datasourceFormRef = ref()
|
||||||
|
|
||||||
|
const beforeClose = () => {
|
||||||
|
datasourceConfigVisible.value = false
|
||||||
|
activeStep.value = 0
|
||||||
|
datasourceApi.cancelRequests()
|
||||||
|
}
|
||||||
|
const clickDatasource = (ele: any) => {
|
||||||
|
activeStep.value = 1
|
||||||
|
activeName.value = ele.name
|
||||||
|
activeType.value = ele.type
|
||||||
|
}
|
||||||
|
|
||||||
|
const clickDatasourceSide = (ele: any) => {
|
||||||
|
activeName.value = ele.name
|
||||||
|
activeType.value = ele.type
|
||||||
|
}
|
||||||
|
|
||||||
|
const emits = defineEmits(['search'])
|
||||||
|
|
||||||
|
const refresh = () => {
|
||||||
|
activeName.value = ''
|
||||||
|
activeStep.value = 0
|
||||||
|
activeType.value = ''
|
||||||
|
datasourceConfigVisible.value = false
|
||||||
|
emits('search')
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleEditDatasource = (res: any) => {
|
||||||
|
activeStep.value = 1
|
||||||
|
datasourceConfigVisible.value = true
|
||||||
|
editDatasource.value = true
|
||||||
|
currentType.value = res.type_name
|
||||||
|
nextTick(() => {
|
||||||
|
datasourceFormRef.value.initForm(res)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleAddDatasource = () => {
|
||||||
|
editDatasource.value = false
|
||||||
|
datasourceConfigVisible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
const changeActiveStep = (val: number) => {
|
||||||
|
activeStep.value = val > 2 ? 2 : val
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
handleEditDatasource,
|
||||||
|
handleAddDatasource,
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<el-drawer
|
||||||
|
v-model="datasourceConfigVisible"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
destroy-on-close
|
||||||
|
size="calc(100% - 100px)"
|
||||||
|
modal-class="datasource-drawer-fullscreen"
|
||||||
|
direction="btt"
|
||||||
|
:before-close="beforeClose"
|
||||||
|
:show-close="false"
|
||||||
|
>
|
||||||
|
<template #header="{ close }">
|
||||||
|
<span style="white-space: nowrap">{{
|
||||||
|
editDatasource
|
||||||
|
? t('datasource.mysql_data_source', { msg: currentType })
|
||||||
|
: $t('datasource.new_data_source')
|
||||||
|
}}</span>
|
||||||
|
<div v-if="!editDatasource" class="flex-center" style="width: 100%">
|
||||||
|
<el-steps custom style="max-width: 800px; flex: 1" :active="activeStep" align-center>
|
||||||
|
<el-step>
|
||||||
|
<template #title> {{ $t('qa.select_datasource') }} </template>
|
||||||
|
</el-step>
|
||||||
|
<el-step>
|
||||||
|
<template #title> {{ $t('datasource.configuration_information') }} </template>
|
||||||
|
</el-step>
|
||||||
|
<el-step>
|
||||||
|
<template #title> {{ $t('ds.form.choose_tables') }} </template>
|
||||||
|
</el-step>
|
||||||
|
</el-steps>
|
||||||
|
</div>
|
||||||
|
<el-icon class="ed-dialog__headerbtn mrt" style="cursor: pointer" @click="close">
|
||||||
|
<icon_close_outlined></icon_close_outlined>
|
||||||
|
</el-icon>
|
||||||
|
</template>
|
||||||
|
<DatasourceList v-if="activeStep === 0" @click-datasource="clickDatasource"></DatasourceList>
|
||||||
|
<DatasourceListSide
|
||||||
|
v-if="activeStep === 1 && !editDatasource"
|
||||||
|
:active-name="activeName"
|
||||||
|
@click-datasource="clickDatasourceSide"
|
||||||
|
></DatasourceListSide>
|
||||||
|
<DatasourceForm
|
||||||
|
v-if="[1, 2].includes(activeStep)"
|
||||||
|
ref="datasourceFormRef"
|
||||||
|
:is-data-table="false"
|
||||||
|
:active-step="activeStep"
|
||||||
|
:active-name="activeName"
|
||||||
|
:active-type="activeType"
|
||||||
|
@refresh="refresh"
|
||||||
|
@close="beforeClose"
|
||||||
|
@change-active-step="changeActiveStep"
|
||||||
|
></DatasourceForm>
|
||||||
|
</el-drawer>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.datasource-drawer-fullscreen {
|
||||||
|
.ed-drawer__body {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.is-process .ed-step__line {
|
||||||
|
background-color: var(--ed-color-primary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user