From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/views/infra/codegen/ImportTable.vue | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 160 insertions(+), 0 deletions(-)
diff --git a/src/views/infra/codegen/ImportTable.vue b/src/views/infra/codegen/ImportTable.vue
new file mode 100644
index 0000000..132a602
--- /dev/null
+++ b/src/views/infra/codegen/ImportTable.vue
@@ -0,0 +1,160 @@
+<template>
+ <Dialog v-model="dialogVisible" title="瀵煎叆琛�" width="800px">
+ <!-- 鎼滅储鏍� -->
+ <el-form ref="queryFormRef" :inline="true" :model="queryParams" label-width="68px">
+ <el-form-item label="鏁版嵁婧�" prop="dataSourceConfigId">
+ <el-select
+ v-model="queryParams.dataSourceConfigId"
+ class="!w-240px"
+ placeholder="璇烽�夋嫨鏁版嵁婧�"
+ >
+ <el-option
+ v-for="config in dataSourceConfigList"
+ :key="config.id"
+ :label="config.name"
+ :value="config.id"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="琛ㄥ悕绉�" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ class="!w-240px"
+ clearable
+ placeholder="璇疯緭鍏ヨ〃鍚嶇О"
+ @keyup.enter="getList"
+ />
+ </el-form-item>
+ <el-form-item label="琛ㄦ弿杩�" prop="comment">
+ <el-input
+ v-model="queryParams.comment"
+ class="!w-240px"
+ clearable
+ placeholder="璇疯緭鍏ヨ〃鎻忚堪"
+ @keyup.enter="getList"
+ />
+ </el-form-item>
+ <el-form-item>
+ <el-button @click="getList">
+ <Icon class="mr-5px" icon="ep:search" />
+ 鎼滅储
+ </el-button>
+ <el-button @click="resetQuery">
+ <Icon class="mr-5px" icon="ep:refresh" />
+ 閲嶇疆
+ </el-button>
+ </el-form-item>
+ </el-form>
+ <!-- 鍒楄〃 -->
+ <el-row>
+ <el-table
+ ref="tableRef"
+ v-loading="dbTableLoading"
+ :data="dbTableList"
+ height="260px"
+ @row-click="handleRowClick"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="55" />
+ <el-table-column :show-overflow-tooltip="true" label="琛ㄥ悕绉�" prop="name" />
+ <el-table-column :show-overflow-tooltip="true" label="琛ㄦ弿杩�" prop="comment" />
+ </el-table>
+ </el-row>
+ <!-- 鎿嶄綔 -->
+ <template #footer>
+ <el-button
+ :disabled="tableList.length === 0 || dbTableLoading"
+ type="primary"
+ @click="handleImportTable"
+ >
+ 瀵煎叆
+ </el-button>
+ <el-button @click="close">鍏抽棴</el-button>
+ </template>
+ </Dialog>
+</template>
+<script lang="ts" setup>
+import * as CodegenApi from '@/api/infra/codegen'
+import * as DataSourceConfigApi from '@/api/infra/dataSourceConfig'
+import { ElTable } from 'element-plus'
+
+defineOptions({ name: 'InfraCodegenImportTable' })
+
+const message = useMessage() // 娑堟伅寮圭獥
+
+const dialogVisible = ref(false) // 寮圭獥鐨勬槸鍚﹀睍绀�
+const dbTableLoading = ref(true) // 鏁版嵁婧愮殑鍔犺浇涓�
+const dbTableList = ref<CodegenApi.DatabaseTableVO[]>([]) // 琛ㄧ殑鍒楄〃
+const queryParams = reactive({
+ name: undefined,
+ comment: undefined,
+ dataSourceConfigId: 0
+})
+const queryFormRef = ref() // 鎼滅储鐨勮〃鍗�
+const dataSourceConfigList = ref<DataSourceConfigApi.DataSourceConfigVO[]>([]) // 鏁版嵁婧愬垪琛�
+
+/** 鏌ヨ琛ㄦ暟鎹� */
+const getList = async () => {
+ dbTableLoading.value = true
+ try {
+ dbTableList.value = await CodegenApi.getSchemaTableList(queryParams)
+ } finally {
+ dbTableLoading.value = false
+ }
+}
+
+/** 閲嶇疆鎿嶄綔 */
+const resetQuery = async () => {
+ queryParams.name = undefined
+ queryParams.comment = undefined
+ queryParams.dataSourceConfigId = dataSourceConfigList.value[0].id as number
+ await getList()
+}
+
+/** 鎵撳紑寮圭獥 */
+const open = async () => {
+ // 鍔犺浇鏁版嵁婧愮殑鍒楄〃
+ dataSourceConfigList.value = await DataSourceConfigApi.getDataSourceConfigList()
+ queryParams.dataSourceConfigId = dataSourceConfigList.value[0].id as number
+ dialogVisible.value = true
+ // 鍔犺浇琛ㄧ殑鍒楄〃
+ await getList()
+}
+defineExpose({ open }) // 鎻愪緵 open 鏂规硶锛岀敤浜庢墦寮�寮圭獥
+
+/** 鍏抽棴寮圭獥 */
+const close = () => {
+ dialogVisible.value = false
+ tableList.value = []
+}
+
+const tableRef = ref<typeof ElTable>() // 琛ㄦ牸鐨� Ref
+const tableList = ref<string[]>([]) // 閫変腑鐨勮〃鍚�
+
+/** 澶勭悊鏌愪竴琛岀殑鐐瑰嚮 */
+const handleRowClick = (row) => {
+ unref(tableRef)?.toggleRowSelection(row)
+}
+
+/** 澶氶�夋閫変腑鏁版嵁 */
+const handleSelectionChange = (selection) => {
+ tableList.value = selection.map((item) => item.name)
+}
+
+/** 瀵煎叆鎸夐挳鎿嶄綔 */
+const handleImportTable = async () => {
+ dbTableLoading.value = true
+ try {
+ await CodegenApi.createCodegenList({
+ dataSourceConfigId: queryParams.dataSourceConfigId,
+ tableNames: tableList.value
+ })
+ message.success('瀵煎叆鎴愬姛')
+ emit('success')
+ close()
+ } finally {
+ dbTableLoading.value = false
+ }
+}
+const emit = defineEmits(['success'])
+</script>
--
Gitblit v1.8.0