|
|
@@ -1,17 +1,16 @@
|
|
|
<template>
|
|
|
<a-card title="数据源管理" >
|
|
|
-
|
|
|
- <!-- :server="DataSourceController.page" -->
|
|
|
<table-pro
|
|
|
-
|
|
|
+ :service="DataSourceController.page"
|
|
|
+ :serverParams="serverParams"
|
|
|
:columns="columns"
|
|
|
ref="tableProDom"
|
|
|
@add="openModal"
|
|
|
>
|
|
|
<template #search >
|
|
|
<a-space>
|
|
|
- <InputTsx v-model:value="serverParams.label" ></InputTsx>
|
|
|
- <a-select style="width: 170px;" >
|
|
|
+ <InputTsx v-model:value="serverParams.label" placeholder="请输入数据源名称" ></InputTsx>
|
|
|
+ <a-select style="width: 170px;" v-model:value="serverParams.dataSourceType" >
|
|
|
<a-select-option
|
|
|
v-for="item in DataSourceController.dataSourceType"
|
|
|
:key="item"
|
|
|
@@ -25,6 +24,20 @@
|
|
|
</template>
|
|
|
<template #render="{column, record}" >
|
|
|
<template v-if="column.key === 'action'" >
|
|
|
+ <a-space>
|
|
|
+ <a>详情</a>
|
|
|
+ <a @click="pushMeteTool(record)" >管理源数据</a>
|
|
|
+ <a>修改</a>
|
|
|
+ <a-popconfirm
|
|
|
+ title="确定要删除这个数据源吗?"
|
|
|
+ ok-text="Yes"
|
|
|
+ cancel-text="No"
|
|
|
+ @confirm="delSource(record)"
|
|
|
+ >
|
|
|
+ <a>删除</a>
|
|
|
+ </a-popconfirm>
|
|
|
+
|
|
|
+ </a-space>
|
|
|
</template>
|
|
|
</template>
|
|
|
</table-pro>
|
|
|
@@ -35,9 +48,85 @@
|
|
|
@cancel="visible = false"
|
|
|
tab-key="base"
|
|
|
:tabs-list="[{ key: 'base', tab: '基础信息' },]"
|
|
|
- @ok="submit"
|
|
|
>
|
|
|
-
|
|
|
+ <a-form style="width: 100%;" :labelCol="{span: 2}" :wrapperCol="{span: 14}">
|
|
|
+ <a-card title="基本信息" >
|
|
|
+ <a-form-item label="设备名称" v-bind="validateInfos.label" >
|
|
|
+ <InputTsx allowClear placeholder="请输入设备名称" mode="normal" v-model:value="sourceState.label" />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="设备描述" v-bind="validateInfos.description" >
|
|
|
+ <InputTsx allowClear placeholder="请输入设备描述" v-model:value="sourceState.description" />
|
|
|
+ </a-form-item>
|
|
|
+ </a-card>
|
|
|
+
|
|
|
+ <a-card title="数据源" style="margin-top: 20px;" >
|
|
|
+ <a-form-item label="数据源类型" >
|
|
|
+ <a-radio-group v-model:value="sourceState.dataSourceConnectParam.dataSourceType" button-style="solid">
|
|
|
+ <a-radio-button
|
|
|
+ v-for="item in DataSourceController.dataSourceType"
|
|
|
+ :key="item"
|
|
|
+ :value="item"
|
|
|
+ >
|
|
|
+ {{item}}
|
|
|
+ </a-radio-button>
|
|
|
+ </a-radio-group>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="用户名" v-bind="validateInfos.username" >
|
|
|
+ <InputTsx allowClear placeholder="请输入用户名" v-model:value="sourceState.dataSourceConnectParam.username" />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="密码" v-bind="validateInfos.password" >
|
|
|
+ <InputTsx allowClear placeholder="请输入密码" v-model:value="sourceState.dataSourceConnectParam.password" />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="连接地址" v-bind="validateInfos.password" >
|
|
|
+ <InputTsx allowClear placeholder="请输入连接地址" v-model:value="sourceState.dataSourceConnectParam.address" />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="端口号" v-bind="validateInfos.portf" >
|
|
|
+ <InputTsx allowClear placeholder="请输入端口号" v-model:value="sourceState.dataSourceConnectParam.port" />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="数据库" v-bind="validateInfos.database" >
|
|
|
+ <InputTsx allowClear placeholder="请输入数据库" v-model:value="sourceState.dataSourceConnectParam.database" />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="连接类型" >
|
|
|
+ <a-radio-group v-model:value="sourceState.dataSourceConnectParam.connectType" button-style="solid">
|
|
|
+ <a-radio-button value="ORACLE_SERVICE_NAME" > ORACLE_SERVICE_NAME</a-radio-button>
|
|
|
+ <a-radio-button value="ORACLE_SID" > ORACLE_SID</a-radio-button>
|
|
|
+ </a-radio-group>
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="驱动名称" v-bind="validateInfos.database" >
|
|
|
+ <InputTsx allowClear placeholder="请输入驱动名称" v-model:value="sourceState.dataSourceConnectParam.driverClassName" />
|
|
|
+ </a-form-item>
|
|
|
+ <a-form-item label="校验sql" v-bind="validateInfos.database" >
|
|
|
+ <InputTsx allowClear placeholder="请输入校验sql" v-model:value="sourceState.dataSourceConnectParam.validateQuery" />
|
|
|
+ </a-form-item>
|
|
|
+
|
|
|
+ <a-form-item label="连接数" v-bind="validateInfos.database" >
|
|
|
+ <a-space>
|
|
|
+ 最小空闲:<a-input-number id="inputNumber" v-model:value="sourceState.dataSourceConnectParam.minimumIdle" :min="1" />
|
|
|
+ 最大连接:<a-input-number id="inputNumber" v-model:value="sourceState.dataSourceConnectParam.maximumPoolSize" :min="1" />
|
|
|
+ </a-space>
|
|
|
+ </a-form-item>
|
|
|
+
|
|
|
+ <a-form-item label="其他参数" v-bind="validateInfos.database" >
|
|
|
+ <a-row :gutter="[8, 8]">
|
|
|
+ <a-col :span="24" v-for="(item, index) in otherParameters" :key="index" >
|
|
|
+ <a-space>
|
|
|
+ <InputTsx allowClear placeholder="key" v-model:value="item.key" />
|
|
|
+ <InputTsx allowClear placeholder="value" v-model:value="item.value" />
|
|
|
+ <a-button type="dashed" danger @click="otherParameters.splice(index, 1)">删除</a-button>
|
|
|
+ </a-space>
|
|
|
+ </a-col>
|
|
|
+ </a-row>
|
|
|
+ <a-button style="margin-top: 20px;" type="primary" @click="addOtherParameters" >新增</a-button>
|
|
|
+ </a-form-item>
|
|
|
+ </a-card>
|
|
|
+ </a-form>
|
|
|
+ <template #footer >
|
|
|
+ <a-space>
|
|
|
+ <a-button>取消</a-button>
|
|
|
+ <a-button @click="testConnect" >测试</a-button>
|
|
|
+ <a-button type="primary" @click="submit" >确定</a-button>
|
|
|
+ </a-space>
|
|
|
+ </template>
|
|
|
</RealView>
|
|
|
</template>
|
|
|
<script lang='ts' setup >
|
|
|
@@ -46,6 +135,7 @@ import { reactive, ref } from 'vue'
|
|
|
import { InputTsx } from '@/components/MicroComponents'
|
|
|
import { RealView } from '@/components/RealView/index'
|
|
|
import { Form } from 'ant-design-vue'
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
|
|
|
const columns = [
|
|
|
{
|
|
|
@@ -72,7 +162,8 @@ const useForm = Form.useForm
|
|
|
const tableProDom = ref()
|
|
|
|
|
|
const serverParams = ref({
|
|
|
- label: ''
|
|
|
+ label: '',
|
|
|
+ dataSourceType: ''
|
|
|
})
|
|
|
|
|
|
const state = reactive({
|
|
|
@@ -81,6 +172,8 @@ const state = reactive({
|
|
|
|
|
|
const oracleConnectTypes = ['ORACLE_SERVICE_NAME', 'ORACLE_SID']
|
|
|
|
|
|
+const otherParameters = ref<{key: string, value: string}[]>([])
|
|
|
+
|
|
|
const sourceState = reactive({
|
|
|
label: '',
|
|
|
description: '',
|
|
|
@@ -90,16 +183,19 @@ const sourceState = reactive({
|
|
|
password: '',
|
|
|
address: '',
|
|
|
port: '',
|
|
|
- database: '',
|
|
|
+ database: 'ORACLE',
|
|
|
driverClassName: '',
|
|
|
validateQuery: '',
|
|
|
minimumIdle: 5,
|
|
|
maximumPoolSize: 50,
|
|
|
- connectType: 'ORACLE_SERVICE_NAME' // ORACLE_SID
|
|
|
+ connectType: 'ORACLE_SERVICE_NAME', // ORACLE_SID
|
|
|
+ otherParameters: {
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
|
|
|
-const visible = ref<boolean>(true)
|
|
|
+const visible = ref<boolean>(false)
|
|
|
|
|
|
const search = () => {
|
|
|
tableProDom.value.reload()
|
|
|
@@ -113,16 +209,36 @@ const { resetFields, validate, validateInfos } = useForm(sourceState, {
|
|
|
label: [{ required: true, message: '请填写数据源名称' }],
|
|
|
description: [{ required: true, message: '请填写数据源描述' }],
|
|
|
username: [{ required: true, message: '请填写用户名' }],
|
|
|
- password: [{ required: true, message: '请填写用户名' }],
|
|
|
- address: [{ required: true, message: '请填写用户名' }],
|
|
|
- port: [{ required: true, message: '请填写用户名' }],
|
|
|
- database: [{ required: true, message: '请填写用户名' }],
|
|
|
- driverClassName: [{ required: true, message: '请填写用户名' }],
|
|
|
- validateQuery: [{ required: true, message: '请填写用户名' }]
|
|
|
+ password: [{ required: true, message: '请填写密码' }],
|
|
|
+ address: [{ required: true, message: '请填写连接地址' }],
|
|
|
+ port: [{ required: true, message: '请填写端口号' }],
|
|
|
+ database: [{ required: true, message: '请填写数据库' }],
|
|
|
+ driverClassName: [{ required: true, message: '请填写驱动名称' }],
|
|
|
+ validateQuery: [{ required: true, message: '请填写验证SQL' }]
|
|
|
})
|
|
|
|
|
|
-const submit = () => {
|
|
|
+const addOtherParameters = () => {
|
|
|
+ otherParameters.value.push({ key: '', value: '' })
|
|
|
+}
|
|
|
+
|
|
|
+const pushMeteTool = (record: DC.SOURCE.Detail) => {
|
|
|
+ useRouter().push({ path: '/dataSource/metaTool', query: { id: record.id } })
|
|
|
+}
|
|
|
+
|
|
|
+const testConnect = async () => {
|
|
|
+ await DataSourceController.connect(sourceState)
|
|
|
+}
|
|
|
+
|
|
|
+const delSource = async (record: DC.SOURCE.Detail) => {
|
|
|
+ await DataSourceController.del(record.id!)
|
|
|
+ search()
|
|
|
+}
|
|
|
|
|
|
+const submit = async () => {
|
|
|
+ validate().then(async () => {
|
|
|
+ await DataSourceController.add(sourceState)
|
|
|
+ visible.value = false
|
|
|
+ }).catch(() => {})
|
|
|
}
|
|
|
|
|
|
</script>
|