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