importTable.vue 3.4 KB
Newer Older
sunhongwei's avatar
sunhongwei committed
1 2
<template>
  <!-- 导入表 -->
Marcus's avatar
Marcus committed
3
  <el-dialog :title="$t('导入表')" :visible.sync="visible" width="800px" top="5vh" append-to-body>
sunhongwei's avatar
sunhongwei committed
4
    <el-form :model="queryParams" ref="queryForm" :inline="true">
Marcus's avatar
Marcus committed
5
      <el-form-item :label="$t('表名称')" prop="tableName">
sunhongwei's avatar
sunhongwei committed
6 7
        <el-input
          v-model="queryParams.tableName"
Marcus's avatar
Marcus committed
8
          :placeholder="$t('请输入表名称')"
sunhongwei's avatar
sunhongwei committed
9 10 11 12 13
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
Marcus's avatar
Marcus committed
14
      <el-form-item :label="$t('表描述')" prop="tableComment">
sunhongwei's avatar
sunhongwei committed
15 16
        <el-input
          v-model="queryParams.tableComment"
Marcus's avatar
Marcus committed
17
          :placeholder="$t('请输入表描述')"
sunhongwei's avatar
sunhongwei committed
18 19 20 21 22 23
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item>
Marcus's avatar
Marcus committed
24 25
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('重置') }}</el-button>
sunhongwei's avatar
sunhongwei committed
26 27 28 29 30
      </el-form-item>
    </el-form>
    <el-row>
      <el-table @row-click="clickRow" ref="table" :data="dbTableList" @selection-change="handleSelectionChange" height="260px">
        <el-table-column type="selection" width="55"></el-table-column>
Marcus's avatar
Marcus committed
31 32 33 34
        <el-table-column prop="tableSchema" :label="$t('数据库')" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="tableName" :label="$t('表名称')" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="tableComment" :label="$t('表描述')" :show-overflow-tooltip="true"></el-table-column>
        <el-table-column prop="createTime" :label="$t('创建时间')">
sunhongwei's avatar
sunhongwei committed
35 36 37 38 39 40 41
          <template slot-scope="scope">
            <span>{{ parseTime(scope.row.createTime) }}</span>
          </template>
        </el-table-column>
      </el-table>
    </el-row>
    <div slot="footer" class="dialog-footer">
Marcus's avatar
Marcus committed
42 43
      <el-button type="primary" @click="handleImportTable">{{ $t('确 定') }}</el-button>
      <el-button @click="visible = false">{{ $t('取 消') }}</el-button>
sunhongwei's avatar
sunhongwei committed
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
    </div>
  </el-dialog>
</template>

<script>
import { getSchemaTableList, createCodegenListFromDB } from "@/api/infra/codegen";
export default {
  data() {
    return {
      // 遮罩层
      visible: false,
      // 选中数组值
      tables: [],
      // 总条数
      total: 0,
      // 表数据
      dbTableList: [],
      // 查询参数
      queryParams: {
        tableName: undefined,
        tableComment: undefined
      }
    };
  },
  methods: {
    // 显示弹框
    show() {
      this.getList();
      this.visible = true;
    },
    clickRow(row) {
      this.$refs.table.toggleRowSelection(row);
    },
    // 多选框选中数据
    handleSelectionChange(selection) {
      this.tables = selection.map(item => item.tableName);
    },
    // 查询表数据
    getList() {
      getSchemaTableList(this.queryParams).then(res => {
        this.dbTableList = res.data;
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** 导入按钮操作 */
    handleImportTable() {
      createCodegenListFromDB(this.tables.join(",")).then(res => {
        this.$modal.msgSuccess("导入成功");
        this.visible = false;
        this.$emit("ok");
      });
    }
  }
};
</script>