数据源前台

master
chenbingxuan 2023-12-11 11:16:02 +08:00
parent 7a59d466fc
commit 7c6ec131a1
1 changed files with 116 additions and 97 deletions

View File

@ -1,40 +1,58 @@
<template> <template>
<el-dialog v-model="visible" :title="!dataForm.id ? '新增' : '修改'" :close-on-click-modal="false"> <el-dialog v-model="visible" :title="!dataForm.id ? '新增' : '修改'" :close-on-click-modal="false">
<el-form ref="dataFormRef" :model="dataForm" :rules="dataRules" label-width="120px" @keyup.enter="submitHandle()"> <el-form ref="dataFormRef" :model="dataForm" :rules="dataRules" label-width="120px" @keyup.enter="submitHandle()">
<el-form-item label="名称" prop="name"> <el-form-item label="名称" prop="name">
<el-input v-model="dataForm.name" placeholder="名称"></el-input> <el-input v-model="dataForm.name" placeholder="名称"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="数据库类型" prop="databaseType"> <el-form-item label="是否是关系型数据库" prop="isJdbc">
<fast-select v-model="dataForm.databaseType" dict-type="database_type" placeholder="请选择" clearable></fast-select> <el-radio-group v-model="dataForm.isJdbc">
</el-form-item> <el-radio label="是"></el-radio>
<el-form-item label="主机ip" prop="databaseIp"> <el-radio label="否"></el-radio>
<el-input v-model="dataForm.databaseIp" placeholder="主机ip"></el-input> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="端口" prop="databasePort"> <!---方娇-->
<el-input v-model="dataForm.databasePort" placeholder="端口"></el-input> <el-form-item label="数据库类型" prop="databaseType">
</el-form-item> <fast-select v-model="dataForm.databaseType" dict-type="database_type" placeholder="请选择" clearable></fast-select>
<el-form-item label="库名(服务名)" prop="databaseName"> </el-form-item>
<el-input v-model="dataForm.databaseName" placeholder="库名(服务名)"></el-input> <el-form-item label="主机ip" prop="databaseIp">
</el-form-item> <el-input v-model="dataForm.databaseIp" placeholder="主机ip"></el-input>
<el-form-item label="用户名" prop="userName"> </el-form-item>
<el-input v-model="dataForm.userName" placeholder="用户名"></el-input> <el-form-item label="端口" prop="databasePort">
</el-form-item> <el-input v-model="dataForm.databasePort" placeholder="端口"></el-input>
<el-form-item label="密码" prop="password"> </el-form-item>
<el-input v-model="dataForm.password" placeholder="密码"></el-input> <el-form-item label="索引" prop="databaseIndex" v-if="dataForm.databaseType==19">
</el-form-item> <el-input v-model="dataForm.databaseIndex" placeholder="索引"></el-input>
<el-form-item label="jdbc连接串" prop="jdbcUrl"> </el-form-item>
<el-input v-model="dataForm.jdbcUrl" placeholder="jdbc连接串(若填写将以填写的内容连接,否则会后台自动构建连接)"></el-input> <el-form-item label="文档" prop="databaseDocument" v-if="dataForm.databaseType==19">
</el-form-item> <el-input v-model="dataForm.databaseDocument" placeholder="文档"></el-input>
<!-- <el-form-item label="所属项目" prop="projectId"> </el-form-item>
<fast-project-select v-model="dataForm.projectId" placeholder="所属项目" clearable></fast-project-select> <el-form-item label="文档" prop="databaseKafKa" v-if="dataForm.databaseType==18">
</el-form-item> --> <el-input v-model="dataForm.databaseKafKa" placeholder="文档"></el-input>
</el-form> </el-form-item>
<template #footer>
<el-button @click="visible = false">取消</el-button> <el-form-item label="库名(服务名)" prop="databaseName" v-if="dataForm.databaseType!=17 && dataForm.databaseType!=18 && dataForm.databaseType!=19 && dataForm.databaseType!=20">
<el-button type="primary" @click="test()"></el-button> <el-input v-model="dataForm.databaseName" placeholder="库名(服务名)"></el-input>
<el-button type="primary" @click="submitHandle()"></el-button> </el-form-item>
</template> <el-form-item label="用户名" prop="userName" v-if="dataForm.databaseType!=17 && dataForm.databaseType!=18 && dataForm.databaseType!=19 && dataForm.databaseType!=20">
</el-dialog> <el-input v-model="dataForm.userName" placeholder="用户名"></el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="dataForm.password" placeholder="密码"></el-input>
</el-form-item>
<el-form-item label="jdbc连接串" prop="jdbcUrl">
<el-input v-model="dataForm.jdbcUrl" placeholder="jdbc连接串(若填写将以填写的内容连接,否则会后台自动构建连接)"></el-input>
</el-form-item>
<!-- <el-form-item label="所属项目" prop="projectId">
<fast-project-select v-model="dataForm.projectId" placeholder="所属项目" clearable></fast-project-select>
</el-form-item> -->
</el-form>
<template #footer>
<el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="test()"></el-button>
<el-button type="primary" @click="submitHandle()"></el-button>
</template>
</el-dialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -48,86 +66,87 @@ const visible = ref(false)
const dataFormRef = ref() const dataFormRef = ref()
const dataForm = reactive({ const dataForm = reactive({
name: '', name: '',
databaseType: '', databaseType: '',
databaseIp: '', databaseIp: '',
databasePort: '', databasePort: '',
databaseName: '', databaseName: '',
userName: '', userName: '',
password: '', password: '',
jdbcUrl: '', jdbcUrl: '',
projectId: '' projectId: '',
}) isJdbc: '',
databaseIndex: '',
databaseDocument: '',
databaseKafKa: '',
})
const init = (id?: number) => { const init = (id?: number) => {
visible.value = true visible.value = true
dataForm.id = '' dataForm.id = ''
// //
if (dataFormRef.value) { if (dataFormRef.value) {
dataFormRef.value.resetFields() dataFormRef.value.resetFields()
} }
if (id) { if (id) {
getDatabase(id) getDatabase(id)
} }
} }
const getDatabase = (id: number) => { const getDatabase = (id: number) => {
useDatabaseApi(id).then(res => { useDatabaseApi(id).then(res => {
Object.assign(dataForm, res.data) Object.assign(dataForm, res.data)
}) })
} }
const dataRules = ref({ const dataRules = ref({
name: [{ required: true, message: '必填项不能为空', trigger: 'blur' }], name: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databaseType: [{ required: true, message: '必填项不能为空', trigger: 'blur' }], databaseType: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databaseIp: [{ required: true, message: '必填项不能为空', trigger: 'blur' }], databaseIp: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databasePort: [{ required: true, message: '必填项不能为空', trigger: 'blur' }], databasePort: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databaseName: [{ required: true, message: '必填项不能为空', trigger: 'blur' }], /* projectId: [{ required: true, message: '必填项不能为空', trigger: 'blur' }] */})
userName: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
password: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
/* projectId: [{ required: true, message: '必填项不能为空', trigger: 'blur' }] */})
// //
const submitHandle = () => { const submitHandle = () => {
dataFormRef.value.validate((valid: boolean) => { dataFormRef.value.validate((valid: boolean) => {
if (!valid) { if (!valid) {
return false return false
} }
useDatabaseSubmitApi(dataForm).then(() => { useDatabaseSubmitApi(dataForm).then(() => {
ElMessage.success({ ElMessage.success({
message: '操作成功', message: '操作成功',
duration: 500, duration: 500,
onClose: () => { onClose: () => {
visible.value = false visible.value = false
emit('refreshDataList') emit('refreshDataList')
} }
}) })
}) })
}) })
} }
// //
const test = () => { const test = () => {
dataFormRef.value.validate((valid: boolean) => { dataFormRef.value.validate((valid: boolean) => {
if (!valid) { if (!valid) {
return false return false
} }
testOnline(dataForm).then(() => { testOnline(dataForm).then(() => {
ElMessage.success({ ElMessage.success({
message: '测试连接成功', message: '测试连接成功',
duration: 500, duration: 500,
onClose: () => { onClose: () => {
emit('refreshDataList') emit('refreshDataList')
} }
}) })
}) })
}) })
} }
defineExpose({ defineExpose({
init init
}) })
</script> </script>