数据源前台

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>
<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-item label="名称" prop="name">
<el-input v-model="dataForm.name" placeholder="名称"></el-input>
</el-form-item>
<el-form-item label="数据库类型" prop="databaseType">
<fast-select v-model="dataForm.databaseType" dict-type="database_type" placeholder="请选择" clearable></fast-select>
</el-form-item>
<el-form-item label="主机ip" prop="databaseIp">
<el-input v-model="dataForm.databaseIp" placeholder="主机ip"></el-input>
</el-form-item>
<el-form-item label="端口" prop="databasePort">
<el-input v-model="dataForm.databasePort" placeholder="端口"></el-input>
</el-form-item>
<el-form-item label="库名(服务名)" prop="databaseName">
<el-input v-model="dataForm.databaseName" placeholder="库名(服务名)"></el-input>
</el-form-item>
<el-form-item label="用户名" prop="userName">
<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>
<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-item label="名称" prop="name">
<el-input v-model="dataForm.name" placeholder="名称"></el-input>
</el-form-item>
<el-form-item label="是否是关系型数据库" prop="isJdbc">
<el-radio-group v-model="dataForm.isJdbc">
<el-radio label="是"></el-radio>
<el-radio label="否"></el-radio>
</el-radio-group>
</el-form-item>
<!---方娇-->
<el-form-item label="数据库类型" prop="databaseType">
<fast-select v-model="dataForm.databaseType" dict-type="database_type" placeholder="请选择" clearable></fast-select>
</el-form-item>
<el-form-item label="主机ip" prop="databaseIp">
<el-input v-model="dataForm.databaseIp" placeholder="主机ip"></el-input>
</el-form-item>
<el-form-item label="端口" prop="databasePort">
<el-input v-model="dataForm.databasePort" placeholder="端口"></el-input>
</el-form-item>
<el-form-item label="索引" prop="databaseIndex" v-if="dataForm.databaseType==19">
<el-input v-model="dataForm.databaseIndex" placeholder="索引"></el-input>
</el-form-item>
<el-form-item label="文档" prop="databaseDocument" v-if="dataForm.databaseType==19">
<el-input v-model="dataForm.databaseDocument" placeholder="文档"></el-input>
</el-form-item>
<el-form-item label="文档" prop="databaseKafKa" v-if="dataForm.databaseType==18">
<el-input v-model="dataForm.databaseKafKa" placeholder="文档"></el-input>
</el-form-item>
<el-form-item label="库名(服务名)" prop="databaseName" v-if="dataForm.databaseType!=17 && dataForm.databaseType!=18 && dataForm.databaseType!=19 && dataForm.databaseType!=20">
<el-input v-model="dataForm.databaseName" placeholder="库名(服务名)"></el-input>
</el-form-item>
<el-form-item label="用户名" prop="userName" v-if="dataForm.databaseType!=17 && dataForm.databaseType!=18 && dataForm.databaseType!=19 && dataForm.databaseType!=20">
<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>
<script setup lang="ts">
@ -48,86 +66,87 @@ const visible = ref(false)
const dataFormRef = ref()
const dataForm = reactive({
name: '',
databaseType: '',
databaseIp: '',
databasePort: '',
databaseName: '',
userName: '',
password: '',
jdbcUrl: '',
projectId: ''
})
name: '',
databaseType: '',
databaseIp: '',
databasePort: '',
databaseName: '',
userName: '',
password: '',
jdbcUrl: '',
projectId: '',
isJdbc: '',
databaseIndex: '',
databaseDocument: '',
databaseKafKa: '',
})
const init = (id?: number) => {
visible.value = true
dataForm.id = ''
visible.value = true
dataForm.id = ''
//
if (dataFormRef.value) {
dataFormRef.value.resetFields()
}
//
if (dataFormRef.value) {
dataFormRef.value.resetFields()
}
if (id) {
getDatabase(id)
}
if (id) {
getDatabase(id)
}
}
const getDatabase = (id: number) => {
useDatabaseApi(id).then(res => {
Object.assign(dataForm, res.data)
})
const getDatabase = (id: number) => {
useDatabaseApi(id).then(res => {
Object.assign(dataForm, res.data)
})
}
const dataRules = ref({
name: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databaseType: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databaseIp: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databasePort: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databaseName: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
userName: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
password: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
/* projectId: [{ required: true, message: '必填项不能为空', trigger: 'blur' }] */})
name: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databaseType: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databaseIp: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
databasePort: [{ required: true, message: '必填项不能为空', trigger: 'blur' }],
/* projectId: [{ required: true, message: '必填项不能为空', trigger: 'blur' }] */})
//
const submitHandle = () => {
dataFormRef.value.validate((valid: boolean) => {
if (!valid) {
return false
}
dataFormRef.value.validate((valid: boolean) => {
if (!valid) {
return false
}
useDatabaseSubmitApi(dataForm).then(() => {
ElMessage.success({
message: '操作成功',
duration: 500,
onClose: () => {
visible.value = false
emit('refreshDataList')
}
})
})
})
useDatabaseSubmitApi(dataForm).then(() => {
ElMessage.success({
message: '操作成功',
duration: 500,
onClose: () => {
visible.value = false
emit('refreshDataList')
}
})
})
})
}
//
const test = () => {
dataFormRef.value.validate((valid: boolean) => {
if (!valid) {
return false
}
testOnline(dataForm).then(() => {
ElMessage.success({
message: '测试连接成功',
duration: 500,
onClose: () => {
emit('refreshDataList')
}
})
})
})
dataFormRef.value.validate((valid: boolean) => {
if (!valid) {
return false
}
testOnline(dataForm).then(() => {
ElMessage.success({
message: '测试连接成功',
duration: 500,
onClose: () => {
emit('refreshDataList')
}
})
})
})
}
defineExpose({
init
init
})
</script>