Commit 975ff5e7 authored by 罗林杰's avatar 罗林杰

Merge remote-tracking branch 'origin/master'

parents 1d2167bb 1516e003
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</BasicModal> </BasicModal>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import {ref} from 'vue'; import {computed, ref, unref} from 'vue';
import {BasicForm, useForm} from '@/components/Form'; import {BasicForm, useForm} from '@/components/Form';
import {useModalInner} from '@/components/Modal'; import {useModalInner} from '@/components/Modal';
import BasicModal from '@/components/Modal/src/BasicModal.vue'; import BasicModal from '@/components/Modal/src/BasicModal.vue';
...@@ -22,11 +22,13 @@ import {formSchema} from "@/views/dataSourceManage/connect/connect.data"; ...@@ -22,11 +22,13 @@ import {formSchema} from "@/views/dataSourceManage/connect/connect.data";
defineOptions({name: 'ConnectDrawer'}); defineOptions({name: 'ConnectDrawer'});
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const {createMessage} = useMessage(); const {createMessage} = useMessage();
const isUpdate = ref(false)
// 初始化弹窗 // 初始化弹窗
const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => { const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => {
resetFields(); resetFields();
setModalProps({loading: false, confirmLoading: false}); setModalProps({loading: false, confirmLoading: false});
isUpdate.value = !!data?.isUpdate;
setFieldsValue({ setFieldsValue({
...data.record ...data.record
}); });
...@@ -39,10 +41,18 @@ const [registerForm, {resetFields, setFieldsValue, validate, setProps}] = useFor ...@@ -39,10 +41,18 @@ const [registerForm, {resetFields, setFieldsValue, validate, setProps}] = useFor
showActionButtonGroup: false, showActionButtonGroup: false,
}); });
const getTitle = ref('查看连接'); const getTitle = computed(() => (!unref(isUpdate) ? '新增连接' : '编辑连接'));
/** 确认按钮 */ /** 确认按钮 */
function handleSubmit() { async function handleSubmit() {
const values = await validate();
if (unref(isUpdate)) {
createMessage.success('修改成功');
closeModal()
} else {
createMessage.success('新增成功');
closeModal()
}
closeModal() closeModal()
} }
</script> </script>
...@@ -39,10 +39,12 @@ const [registerForm, {resetFields, setFieldsValue, validate, setProps}] = useFor ...@@ -39,10 +39,12 @@ const [registerForm, {resetFields, setFieldsValue, validate, setProps}] = useFor
showActionButtonGroup: false, showActionButtonGroup: false,
}); });
const getTitle = ref('查看连接'); const getTitle = ref('Krb5管理');
/** 确认按钮 */ /** 确认按钮 */
function handleSubmit() { async function handleSubmit() {
const values = await validate();
createMessage.success('新增成功!')
closeModal() closeModal()
} }
</script> </script>
...@@ -220,7 +220,7 @@ export const kbr5FormSchema: FormSchema[any] = [ ...@@ -220,7 +220,7 @@ export const kbr5FormSchema: FormSchema[any] = [
field: 'file', field: 'file',
component: 'Upload', component: 'Upload',
label: 'Kbr5文件', label: 'Kbr5文件',
rules: [{ required: true, message: '请选择上传文件' }], rules: [{ required: false, message: '请选择上传文件' }],
componentProps: { componentProps: {
api: uploadApi, api: uploadApi,
}, },
......
...@@ -57,25 +57,6 @@ export const connectListData: any[] = [ ...@@ -57,25 +57,6 @@ export const connectListData: any[] = [
"updateDate": "2024-10-25 11:05:05", "updateDate": "2024-10-25 11:05:05",
"hdfsMap":"hive" "hdfsMap":"hive"
}, },
{
"id": 3,
"connectName": "postgresql",
"connectString": "jdbc:postgresql://172.26.0.86:5432/postgres",
"connectType": "POSTGRESQL",
"authStatus": "可连接",
"foundDataSource": 5,
"executionState": "执行成功",
"collectionType": "详细元数据",
"isPeriodicCheck": "0",
"driveVersion": "postgresql42",
"delFlag": "0",
"flag": "1",
"createBy": "admin",
"createDate": "2024-10-26 12:06:06",
"updateBy": "admin",
"updateDate": "2024-10-26 12:06:06",
"hdfsMap":"hive"
},
{ {
"id": 4, "id": 4,
"connectName": "oracle", "connectName": "oracle",
...@@ -113,176 +94,144 @@ export const connectListData: any[] = [ ...@@ -113,176 +94,144 @@ export const connectListData: any[] = [
"updateBy": "admin", "updateBy": "admin",
"updateDate": "2024-10-28 14:08:08", "updateDate": "2024-10-28 14:08:08",
"hdfsMap":"hive" "hdfsMap":"hive"
}, }
];
export const dataSourceTreeData: any[] = [
{ {
"id": 6, "delFlag" : "0",
"connectName": "sqlite", "flag" : "1",
"connectString": "jdbc:sqlite:/var/lib/sqlite3/test.db", "businessId" : 100,
"connectType": "SQLITE", "fileName" : "全部数据源",
"authStatus": "未认证", "anotherName" : "全部数据源",
"foundDataSource": 3, "parentId" : 0,
"executionState": "执行成功", "code:": "001",
"collectionType": "不采集", "ancestors" : "0",
"isPeriodicCheck": "0", "orderNum" : 0,
"driveVersion": "sqlite3", "selectType" : null,
"delFlag": "0", "location":"/任务流",
"flag": "1", "holder":"admin",
"createBy": "admin", "createDate": "2024-10-24 10:04:04",
"createDate": "2024-10-29 15:09:09", "updateDate": "2024-10-24 10:04:04",
"updateBy": "admin", icon:'ant-design:partition-outlined'
"updateDate": "2024-10-29 15:09:09",
"hdfsMap":"hive"
}, },
{ {
"id": 7, "delFlag" : "0",
"connectName": "mongodb", "flag" : "1",
"connectString": "mongodb://172.26.0.89:27017/test", "businessId" : 101,
"connectType": "MONGODB", "fileName" : "共享工作区",
"authStatus": "可连接", "anotherName" : "共享工作区",
"foundDataSource": 4, "parentId" : 100,
"executionState": "执行成功", "code:": "002",
"collectionType": "详细元数据", "ancestors" : "0,100",
"isPeriodicCheck": "0", "orderNum" : 1,
"driveVersion": "mongodb", "selectType" : null,
"delFlag": "0", "location":"/任务流/典型案例",
"flag": "1", "holder":"admin",
"createBy": "admin", "createDate": "2024-10-24 10:04:04",
"createDate": "2024-10-30 16:10:10", "updateDate": "2024-10-24 10:04:04",
"updateBy": "admin", icon:'ant-design:team-outlined'
"updateDate": "2024-10-30 16:10:10",
"hdfsMap":"hive"
}, },
{ {
"id": 8, "delFlag" : "0",
"connectName": "redis", "flag" : "1",
"connectString": "redis://172.26.0.90:6379/0", "businessId" : 107,
"connectType": "REDIS", "fileName" : "个人工作区",
"authStatus": "未认证", "anotherName" : "个人工作区",
"foundDataSource": 2, "parentId" : 100,
"executionState": "执行成功", "code:": "003",
"collectionType": "不采集", "ancestors" : "0,100",
"isPeriodicCheck": "0", "orderNum" : 2,
"driveVersion": "redis", "selectType" : null,
"delFlag": "0", "location":"/任务流/个人体验",
"flag": "1", "holder":"admin",
"createBy": "admin", "createDate": "2024-10-24 10:04:04",
"createDate": "2024-10-31 17:11:11", "updateDate": "2024-10-24 10:04:04",
"updateBy": "admin", icon:'ant-design:team-outlined'
"updateDate": "2024-10-31 17:11:11",
"hdfsMap":"hive"
}, },
{ {
"id": 9, "delFlag" : "0",
"connectName": "elasticsearch", "flag" : "1",
"connectString": "http://172.26.0.91:9200", "businessId" : 201,
"connectType": "ELASTICSEARCH", "fileName" : "Inceptor",
"authStatus": "可连接", "anotherName" : "Inceptor",
"foundDataSource": 6, "parentId" : 101,
"executionState": "执行成功", "code:": "005",
"collectionType": "详细元数据", "ancestors" : "0,100,101",
"isPeriodicCheck": "0", "orderNum" : 2,
"driveVersion": "elasticsearch", "selectType" : null,
"delFlag": "0", "location":"/任务流/典型案例/总-智慧财务总体流程",
"flag": "1", "holder":"admin",
"createBy": "admin", "createDate": "2024-10-22 8:04:04",
"createDate": "2024-11-01 18:12:12", "updateDate": "2024-10-22 8:04:04",
"updateBy": "admin", icon:'ant-design:api-twotone'
"updateDate": "2024-11-01 18:12:12",
"hdfsMap":"hive"
}, },
{ {
"id": 10, "delFlag" : "0",
"connectName": "cassandra", "flag" : "1",
"connectString": "cassandra://172.26.0.92:9042/system", "businessId" : 202,
"connectType": "CASSANDRA", "fileName" : "hive",
"authStatus": "未认证", "anotherName" : "hive",
"foundDataSource": 9, "parentId" : 101,
"executionState": "执行失败", "code:": "006",
"collectionType": "不采集", "ancestors" : "0,100,101",
"isPeriodicCheck": "0", "orderNum" : 3,
"driveVersion": "cassandra", "selectType" : null,
"delFlag": "0", "location":"/任务流/典型案例/分-落地区",
"flag": "1", "holder":"admin",
"createBy": "admin", "createDate": "2024-10-21 9:04:04",
"createDate": "2024-11-02 19:13:13", "updateDate": "2024-10-21 9:04:04",
"updateBy": "admin", icon:'ant-design:api-twotone'
"updateDate": "2024-11-02 19:13:13",
"hdfsMap":"hive"
}, },
{ {
"id": 11, "delFlag" : "0",
"connectName": "derby", "flag" : "1",
"connectString": "jdbc:derby://172.26.0.93:1527/sample", "businessId" : 203,
"connectType": "DERBY", "fileName" : "mysql",
"authStatus": "可连接", "anotherName" : "mysql",
"foundDataSource": 11, "parentId" : 101,
"executionState": "执行成功", "code:": "008",
"collectionType": "详细元数据", "ancestors" : "0,100,101",
"isPeriodicCheck": "0", "orderNum" : 5,
"driveVersion": "derby", "selectType" : null,
"delFlag": "0", "location":"/任务流/典型案例/分-改良区",
"flag": "1", "holder":"admin",
"createBy": "admin", "createDate": "2024-10-23 12:04:04",
"createDate": "2024-11-03 20:14:14", "updateDate": "2024-10-23 12:04:04",
"updateBy": "admin", icon:'ant-design:api-twotone'
"updateDate": "2024-11-03 20:14:14",
"hdfsMap":"hive"
}, },
{ {
"id": 12, "delFlag" : "0",
"connectName": "cockroachdb", "flag" : "1",
"connectString": "jdbc:postgresql://172.26.0.94:26257?sslmode=disable", "businessId" : 204,
"connectType": "COCKROACHDB", "fileName" : "oracle",
"authStatus": "未认证", "anotherName" : "oracle",
"foundDataSource": 15, "parentId" : 107,
"executionState": "执行成功", "code:": "009",
"collectionType": "不采集", "ancestors" : "0,100,107",
"isPeriodicCheck": "0", "orderNum" : 1,
"driveVersion": "postgresql42", "selectType" : null,
"delFlag": "0", "location":"/任务流/典型案例/分-个人体验1",
"flag": "1", "holder":"admin",
"createBy": "admin", "createDate": "2024-10-24 13:04:04",
"createDate": "2024-11-04 21:15:15", "updateDate": "2024-10-24 13:04:04",
"updateBy": "admin", icon:'ant-design:api-twotone'
"updateDate": "2024-11-04 21:15:15",
"hdfsMap":"hive"
}, },
{ {
"id": 13, "delFlag" : "0",
"connectName": "neo4j", "flag" : "0",
"connectString": "bolt://172.26.0.95:7687", "businessId" : 205,
"connectType": "NEO4J", "fileName" : "sqlserver",
"authStatus": "可连接", "anotherName" : "sqlserver",
"foundDataSource": 13, "parentId" : 107,
"executionState": "执行成功", "code:": "010",
"collectionType": "详细元数据", "ancestors" : "0,100,107",
"isPeriodicCheck": "0", "orderNum" : 2,
"driveVersion": "neo4j", "selectType" : null,
"delFlag": "0", "location":"/任务流/典型案例/分-个人体验2",
"flag": "1", "holder":"admin",
"createBy": "admin", "createDate": "2024-10-24 14:04:04",
"createDate": "2024-11-05 22:16:16", "updateDate": "2024-10-25 14:04:04",
"updateBy": "admin", icon:'ant-design:api-twotone'
"updateDate": "2024-11-05 22:16:16",
"hdfsMap":"hive"
}, },
{
"id": 16,
"connectName": "kundb",
"connectString": "jdbc:kun://172.26.0.96:5432/kundb",
"connectType": "KUNDB",
"authStatus": "可连接",
"foundDataSource": 4,
"executionState": "执行成功",
"collectionType": "详细元数据",
"isPeriodicCheck": "0",
"driveVersion": "kun",
"delFlag": "0",
"flag": "1",
"createBy": "admin",
"createDate": "2024-11-06 14:30:00",
"updateBy": "admin",
"updateDate": "2024-11-06 14:30:00",
"hdfsMap":"hive"
}
]; ];
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
import {h, nextTick, onMounted, ref, unref} from 'vue'; import {h, nextTick, onMounted, ref, unref} from 'vue';
import {BasicTree, ContextMenuItem, TreeActionType, TreeItem} from '@/components/Tree'; import {BasicTree, ContextMenuItem, TreeActionType, TreeItem} from '@/components/Tree';
import {Nullable} from "@vben/types"; import {Nullable} from "@vben/types";
import { TreeData } from "@/views/commonFile/commonFileData"; import { dataSourceTreeData } from "@/views/dataSourceManage/connect/connectData";
import {EventDataNode} from "ant-design-vue/es/vc-tree/interface"; import {EventDataNode} from "ant-design-vue/es/vc-tree/interface";
import {PlusOutlined,EllipsisOutlined} from "@ant-design/icons-vue"; import {PlusOutlined,EllipsisOutlined} from "@ant-design/icons-vue";
import {useMessage} from "@/hooks/web/useMessage"; import {useMessage} from "@/hooks/web/useMessage";
...@@ -43,7 +43,7 @@ function getTree() { ...@@ -43,7 +43,7 @@ function getTree() {
} }
async function fetch() { async function fetch() {
const data = TreeData const data = dataSourceTreeData
treeData.value = handleTree(data, 'businessId',undefined,undefined,undefined) treeData.value = handleTree(data, 'businessId',undefined,undefined,undefined)
await nextTick(() => { await nextTick(() => {
getTree().expandAll(true) getTree().expandAll(true)
......
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
import {fileData, TreeData} from "@/views/commonFile/commonFileData"; import {fileData, TreeData} from "@/views/commonFile/commonFileData";
import {connectListData} from "@/views/dataSourceManage/connect/connectData"; import {connectListData} from "@/views/dataSourceManage/connect/connectData";
import KrbFiveModal from "@/views/dataSourceManage/driveManage/KrbFiveModal.vue"; import KrbFiveModal from "@/views/dataSourceManage/driveManage/KrbFiveModal.vue";
import DriveModal from "@/views/dataSourceManage/driveManage/DriveModal.vue"; import DriveModal from "@/views/dataSourceManage/driveManage/TableModal.vue";
import ConnectModal from "@/views/dataSourceManage/connect/ConnectModal.vue"; import ConnectModal from "@/views/dataSourceManage/connect/ConnectModal.vue";
import ResetNameModal from "@/views/dataSourceManage/connect/resetNameModal.vue"; import ResetNameModal from "@/views/dataSourceManage/connect/resetNameModal.vue";
import Krb5Modal from "@/views/dataSourceManage/connect/Krb5Modal.vue"; import Krb5Modal from "@/views/dataSourceManage/connect/Krb5Modal.vue";
...@@ -146,6 +146,7 @@ ...@@ -146,6 +146,7 @@
/** 刷新 按钮 */ /** 刷新 按钮 */
function handleReload() { function handleReload() {
createMessage.success('刷新成功!')
reload(); reload();
} }
...@@ -174,7 +175,7 @@ ...@@ -174,7 +175,7 @@
/** 删除 按钮 */ /** 删除 按钮 */
async function handleDelete(record: Recordable) { async function handleDelete(record: Recordable) {
createMessage.success('删除成功!');
} }
/** 连接 按钮 */ /** 连接 按钮 */
......
<template>
<!-- 数据源管理-连接 -->
<PageWrapper dense contentFullHeight fixedHeight contentClass="flex">
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleKrbFiveManage">Krb5管理</a-button>
<a-button type="primary" @click="handleDriverManage">驱动管理</a-button>
<a-button type="primary" @click="handleReload">刷新</a-button>
<a-button type="primary" @click="handleAdd">新增</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
icon: 'ant-design:signature-outlined',
// label: '重命名',
onClick: handleRename.bind(null, record),
},
{
icon: 'clarity:note-edit-line',
// label: '编辑',
onClick: handleEdit.bind(null, record),
},
{
icon: 'ant-design:delete-outlined',
// label: '删除',
color: 'error',
popConfirm: {
title: '是否确认删除',
placement: 'left',
confirm: handleDelete.bind(null, record),
},
},
{
icon: 'ant-design:caret-right-filled',
// label: '执行',
onClick: handleConnect.bind(null, record),
},
{
icon: 'ant-design:step-forward-filled',
// label: '停止',
onClick: handleStopConnect.bind(null, record),
},
{
icon: 'clarity:info-standard-line',
// label: '采集详情',
onClick: handleDetails.bind(null, record),
},
]"
/>
</template>
</template>
</BasicTable>
</PageWrapper>
<!-- Krb5管理 弹窗 -->
<KrbFiveModal @register="registerKrbFiveModal" @success="handleSuccess"/>
<!-- 驱动管理 弹窗 -->
<DriveModal @register="registerDriveModal"/>
<!-- 数据源-连接-新增或修改 抽屉 -->
<ConnectDrawer @register="registerConnectDrawer" @success="handleSuccess"/>
</template>
<script lang="ts" setup>
import {ref} from 'vue';
import {PageWrapper} from '@/components/Page';
import {BasicTable, useTable, TableAction} from '@/components/Table';
import {useMessage} from '@/hooks/web/useMessage';
import {useModal} from '@/components/Modal';
import {useDrawer} from '@/components/Drawer';
import KrbFiveModal from "@/views/dataSourceManage/driveManage/KrbFiveModal.vue";
import DriveModal from "@/views/dataSourceManage/driveManage/DriveModal.vue";
import {columns, searchFormSchema} from "@/views/dataSourceManage/connect/connect.data";
import {getConnectListByPage, deleteById} from "@/api/system/connect/connect";
import ConnectDrawer from "@/views/dataSourceManage/connect/ConnectDrawer.vue";
const [registerKrbFiveModal, {openModal: openKrbFiveModal}] = useModal();
const [registerDriveModal, {openModal: openDriveModal}] = useModal();
const [registerConnectDrawer, {openDrawer: openConnectDrawer}] = useDrawer();
const {createMessage} = useMessage();
const isUpdate = ref(true);
const [registerTable, {reload, getForm}] = useTable({
api: getConnectListByPage,
columns,
formConfig: {
labelWidth: 120,
schemas: searchFormSchema,
},
useSearchForm: true,
showTableSetting: false,
bordered: true,
showIndexColumn: false,
actionColumn: {
width: 200,
title: '操作',
dataIndex: 'action',
fixed: undefined,
},
});
/** Krb5管理 按钮 */
function handleKrbFiveManage() {
// openModal(true, {
// isPermiss: true,
// record,
// });
}
/** 驱动管理 按钮 */
function handleDriverManage() {
openDriveModal(true, {});
}
/** 刷新 按钮 */
function handleReload() {
reload();
}
/** 新增 按钮 */
function handleAdd() {
openConnectDrawer(true, {
isUpdate: false,
});
}
/** 重命名 按钮 */
function handleRename(record: Recordable) {
openConnectDrawer(true, {
isUpdate: true,
record
});
}
/** 编辑 按钮 */
function handleEdit(record: Recordable) {
openConnectDrawer(true, {
isUpdate: true,
record
});
}
/** 删除 按钮 */
async function handleDelete(record: Recordable) {
await deleteById(record.id);
await reload();
}
/** 连接 按钮 */
function handleConnect(record: Recordable) {
const connectName = record.connectName
createMessage.info('正在尝试连接:' + connectName);
setTimeout(() => {
createMessage.success(connectName + '测试连接成功');
}, Math.floor(Math.random() * 2000) + 100)
}
/** 终止连接 按钮 */
function handleStopConnect(record: Recordable) {
const connectName = record.connectName
createMessage.info('正在终止连接:' + connectName);
setTimeout(() => {
createMessage.success(connectName + '连接已终止');
}, Math.floor(Math.random() * 1500) + 100)
}
/** 查看详情 按钮 */
function handleDetails(record: Recordable) {
// openDrawer(true, {
// record,
// isUpdate: true,
// });
}
/** 成功时返回的方法 */
function handleSuccess() {
reload();
}
</script>
<template> <template>
<!-- 驱动管理 --> <!-- 数据源-连接-新增或修改 弹窗 -->
<BasicModal <BasicModal
v-bind="$attrs" v-bind="$attrs"
width="60%"
@register="registerModal" @register="registerModal"
showFooter
:title="getTitle" :title="getTitle"
width="35%"
@ok="handleSubmit" @ok="handleSubmit"
> >
<BasicTable @register="registerTable"> <BasicForm @register="registerForm"/>
<template #toolbar>
<a-button type="primary" @click="handleDriverAdd">新增驱动</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'actions'">
<TableAction
:actions="[
{
// icon: 'clarity:note-edit-line',
label: '编辑',
onClick: handleEdit.bind(null, record),
},
{
// icon: 'ant-design:delete-outlined',
label: '删除',
color: 'error',
popConfirm: {
title: '是否确认删除',
placement: 'left',
confirm: handleDelete.bind(null, record),
},
},
]"
/>
</template>
</template>
</BasicTable>
</BasicModal> </BasicModal>
<!-- 驱动管理 新增或修改 弹窗 -->
<AddAndUpdateModal @register="registerAddAndUpdateModal"/>
</template> </template>
<script setup lang="ts"> <script lang="ts" setup>
import {BasicTable, useTable} from '@/components/Table'; import {computed, ref, unref} from 'vue';
import {useModal, useModalInner} from '@/components/Modal'; import {BasicForm, useForm} from '@/components/Form';
import {PageWrapper} from '@/components/Page'; import {useModalInner} from '@/components/Modal';
import BasicModal from '@/components/Modal/src/BasicModal.vue'; import BasicModal from '@/components/Modal/src/BasicModal.vue';
import {ref} from 'vue'; import {useMessage} from "@/hooks/web/useMessage";
import {columns} from "@/views/dataSourceManage/driveManage/drive.data"; import {formSchema} from "@/views/dataSourceManage/connect/connect.data";
import {useMessage} from '@/hooks/web/useMessage'; import {driveFormSchema, searchSchema} from "@/views/dataSourceManage/driveManage/drive.data";
import AddAndUpdateModal from "@/views/dataSourceManage/driveManage/AddAndUpdateModal.vue";
import {getDriveListByPage} from "@/api/system/driveManage/driveManage";
import {driveListData} from "@/views/dataSourceManage/driveManage/driveData";
defineOptions({name: 'DriveModal'}); defineOptions({name: 'ConnectDrawer'});
const [registerAddAndUpdateModal, {openModal}] = useModal();
const getTitle = ref('驱动管理');
const {createMessage} = useMessage();
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const formData = ref({}); const {createMessage} = useMessage();
const isUpdate = ref(false)
const [registerTable, {reload, getForm}] = useTable({
title: '驱动管理', // 初始化弹窗
api: async (params) => { const [registerModal, {setModalProps, closeModal}] = useModalInner(async (data) => {
//过滤掉tableData.value中,businessId等于100的 resetFields();
var data = []; setModalProps({loading: false, confirmLoading: false});
data = driveListData isUpdate.value = !!data?.isUpdate;
const response = { if (unref(isUpdate)) {
pageNu: "1", setFieldsValue({
pageSize: "10", ...data.record
pages: "1", });
total: data.length, }
code:'',
message:'',
data: [],
};
//过滤data中的数据,取出等于params.deptId的数据
return { ...response,data: data };
},
columns,
useSearchForm: false,
showTableSetting: false,
bordered: true,
showIndexColumn: false,
actionColumn: {
width: 150,
title: '操作',
dataIndex: 'actions',
fixed: undefined,
},
}); });
const [registerForm, {resetFields, setFieldsValue, validate, setProps}] = useForm({
const [registerModal, {closeModal, setModalProps}] = useModalInner(async (data) => { labelWidth: 90,
setModalProps({confirmLoading: false}); baseColProps: {span: 24},
schemas: driveFormSchema,
showActionButtonGroup: false,
}); });
/** 新增驱动 */ const getTitle = computed(() => (!unref(isUpdate) ? '新增驱动' : '编辑驱动'));
function handleDriverAdd() {
openModal(true, {
isUpdate: false,
});
}
/** 编辑按钮 */
function handleEdit(record: Recordable) {
openModal(true, {
isUpdate: true,
record
});
}
/** 删除按钮 */
function handleDelete(record: Recordable) {
reload()
}
/** 确认按钮 */ /** 确认按钮 */
function handleSubmit() { async function handleSubmit() {
closeModal() const values = await validate();
} if (unref(isUpdate)) {
</script> createMessage.success('修改成功');
<style scoped lang="less"> closeModal()
.modal-content { } else {
display: flex; createMessage.success('新增成功');
height: 100%; // 可以根据需要调整高度 closeModal()
.table-container, .form-container {
flex: 1; // 每个容器占据一半的空间
overflow: auto; // 如果内容超出容器高度,则显示滚动条
}
.table-container {
border-right: 1px solid #e9ecef; // 可选:在表格和表单之间添加分隔线
} }
} }
</style> </script>
<template>
<BasicModal width="50%" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary" @click="handleAddButton">新增驱动</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<TableAction
:actions="[
{
label: '删除',
color: 'error',
popConfirm: {
title: '是否确认删除',
placement: 'left',
confirm: handleDelete.bind(null, record),
},
},
{
label: '编辑',
onClick: handleEdit.bind(null, record),
},
]"
/>
</template>
</template>
</BasicTable>
<!-- 新增/编辑 弹窗 -->
<DriverModal @register="registerDriverModal" @success="handleSuccess"/>
</BasicModal>
</template>
<script lang="ts" setup>
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { reactive,unref,onDeactivated,onMounted,ref } from 'vue';
import { BasicTable, useTable, TableAction } from '@/components/Table';
import { useMessage } from '@/hooks/web/useMessage';
import { useModal } from '@/components/Modal';
import {columns, driveFormSchema, searchSchema} from '@/views/dataSourceManage/driveManage/drive.data.ts';
import { driveListData } from '@/views/dataSourceManage/driveManage/driveData.ts';
import DriverModal from "@/views/dataSourceManage/driveManage/DriveModal.vue";
defineOptions({ name: 'AccountManagement' });
const { createMessage } = useMessage();
const [registerDriverModal, { openModal: openDriverModal }] = useModal();
const searchInfo = reactive<Recordable>({});
const emit = defineEmits(['success', 'register']);
const tableData = ref([])
const [registerTable, { reload, updateTableDataRecord, getSearchInfo,getForm,getRowSelection }] = useTable({
title: '驱动列表',
api: async (params) => {
const response = {
pageNu: "1",
pageSize: "10",
pages: "1",
total: driveListData.length,
code:'',
message:'',
data: driveListData,
};
return { ...response, data: driveListData };
},
columns,
rowSelection: false,
formConfig: {
labelWidth: 100,
schemas: searchSchema,
autoSubmitOnEnter: false,
},
useSearchForm: true,
showTableSetting: false,
showIndexColumn: true,
bordered: true,
actionColumn: {
width: 100,
title: '操作',
dataIndex: 'action',
},
});
//初始化弹框
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
setModalProps({ confirmLoading: false,showOkBtn: false,showCancelBtn: false });
});
/** 新增 按钮 */
async function handleAddButton(record: Recordable) {
openDriverModal(true, {
isUpdate: false
});
}
/** 删除 按钮 */
async function handleDelete(record: Recordable) {
createMessage.success('删除成功!');
}
/** 编辑 按钮 */
function handleEdit(record: Recordable) {
openDriverModal(true, {
isUpdate: true,
record: record,
});
}
onMounted(() => {
});
</script>
import {BasicColumn, FormSchema} from "@/components/Table"; import {BasicColumn, FormSchema} from "@/components/Table";
import {uploadApi} from "@/api/sys/upload";
// 表头参数 // 表头参数
export const columns: BasicColumn[any] = [ export const columns: BasicColumn[any] = [
...@@ -24,6 +25,18 @@ export const columns: BasicColumn[any] = [ ...@@ -24,6 +25,18 @@ export const columns: BasicColumn[any] = [
}, },
] ]
// 表头参数
export const searchSchema: BasicColumn[any] = [
{
field: 'driveType',
component: 'Input',
componentProps: {
placeholder: '输入驱动类型',
},
colProps: {span: 7},
},
]
// 表单 // 表单
export const formSchema: FormSchema[] = [ export const formSchema: FormSchema[] = [
{ {
...@@ -83,6 +96,41 @@ export const formSchema: FormSchema[] = [ ...@@ -83,6 +96,41 @@ export const formSchema: FormSchema[] = [
field: 'driveFile', field: 'driveFile',
label: '驱动文件', label: '驱动文件',
component: 'Input', component: 'Input',
required: false,
},
]
// 添加/修改驱动 表头
export const driveFormSchema: FormSchema[any] = [
{
field: 'driveType',
label: '驱动类型',
component: 'Input',
required: true,
labelWidth: 150,
},
{
field: 'driveVersion',
label: '驱动版本',
component: 'Input',
required: true, required: true,
labelWidth: 150,
},
{
field: 'driveClass',
label: '驱动类名',
component: 'Input',
required: true,
labelWidth: 150,
},
{
field: 'driveFile',
component: 'Upload',
label: '驱动文件',
rules: [{ required: false, message: '请选择上传文件' }],
componentProps: {
api: uploadApi,
},
labelWidth: 150,
}, },
] ]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment