From 69c189a0c97cc6efedae19a4d7d89e18cfd4f4e6 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期五, 01 三月 2024 20:08:52 +0800
Subject: [PATCH] 代码生成新增创建表结构功能

---
 src/views/tool/gen/createTable.vue |   46 +++++++++++++++++++++++
 src/api/tool/gen.js                |    9 ++++
 src/views/tool/gen/index.vue       |   16 ++++++++
 3 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/src/api/tool/gen.js b/src/api/tool/gen.js
index afaf2a9..5728980 100644
--- a/src/api/tool/gen.js
+++ b/src/api/tool/gen.js
@@ -43,6 +43,15 @@
   })
 }
 
+// 鍒涘缓琛�
+export function createTable(data) {
+  return request({
+    url: '/tool/gen/createTable',
+    method: 'post',
+    params: data
+  })
+}
+
 // 棰勮鐢熸垚浠g爜
 export function previewTable(tableId) {
   return request({
diff --git a/src/views/tool/gen/createTable.vue b/src/views/tool/gen/createTable.vue
new file mode 100644
index 0000000..00fdfdb
--- /dev/null
+++ b/src/views/tool/gen/createTable.vue
@@ -0,0 +1,46 @@
+<template>
+  <!-- 鍒涘缓琛� -->
+  <el-dialog title="鍒涘缓琛�" v-model="visible" width="800px" top="5vh" append-to-body>
+    <span>鍒涘缓琛ㄨ鍙�(鏀寔澶氫釜寤鸿〃璇彞)锛�</span>
+    <el-input type="textarea" :rows="10" placeholder="璇疯緭鍏ユ枃鏈�" v-model="content"></el-input>
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button type="primary" @click="handleImportTable">纭� 瀹�</el-button>
+        <el-button @click="visible = false">鍙� 娑�</el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup>
+import { createTable } from "@/api/tool/gen";
+
+const visible = ref(false);
+const content = ref("");
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["ok"]);
+
+/** 鏄剧ず寮规 */
+function show() {
+  visible.value = true;
+}
+
+/** 瀵煎叆鎸夐挳鎿嶄綔 */
+function handleImportTable() {
+  if (content.value === "") {
+    proxy.$modal.msgError("璇疯緭鍏ュ缓琛ㄨ鍙�");
+    return;
+  }
+  createTable({ sql: content.value }).then(res => {
+    proxy.$modal.msgSuccess(res.msg);
+    if (res.code === 200) {
+      visible.value = false;
+      emit("ok");
+    }
+  });
+}
+
+defineExpose({
+  show,
+});
+</script>
diff --git a/src/views/tool/gen/index.vue b/src/views/tool/gen/index.vue
index 8c9ce6a..77e8a80 100644
--- a/src/views/tool/gen/index.vue
+++ b/src/views/tool/gen/index.vue
@@ -41,9 +41,19 @@
           type="primary"
           plain
           icon="Download"
+          :disabled="multiple"
           @click="handleGenTable"
           v-hasPermi="['tool:gen:code']"
         >鐢熸垚</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="openCreateTable"
+          v-hasRole="['admin']"
+        >鍒涘缓</el-button>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -146,6 +156,7 @@
       </el-tabs>
     </el-dialog>
     <import-table ref="importRef" @ok="handleQuery" />
+    <create-table ref="createRef" @ok="handleQuery" />
   </div>
 </template>
 
@@ -153,6 +164,7 @@
 import { listTable, previewTable, delTable, genCode, synchDb } from "@/api/tool/gen";
 import router from "@/router";
 import importTable from "./importTable";
+import createTable from "./createTable";
 
 const route = useRoute();
 const { proxy } = getCurrentInstance();
@@ -238,6 +250,10 @@
 function openImportTable() {
   proxy.$refs["importRef"].show();
 }
+/** 鎵撳紑鍒涘缓琛ㄥ脊绐� */
+function openCreateTable() {
+  proxy.$refs["createRef"].show();
+}
 /** 閲嶇疆鎸夐挳鎿嶄綔 */
 function resetQuery() {
   dateRange.value = [];

--
Gitblit v1.9.3