From 64d172717748c383a5c88348037354bffd60f966 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 27 五月 2025 17:52:03 +0800 Subject: [PATCH] 页面样式修改 --- src/views/tool/gen/index.vue | 308 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 308 insertions(+), 0 deletions(-) diff --git a/src/views/tool/gen/index.vue b/src/views/tool/gen/index.vue new file mode 100644 index 0000000..c2a0877 --- /dev/null +++ b/src/views/tool/gen/index.vue @@ -0,0 +1,308 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch"> + <el-form-item label="琛ㄥ悕绉�" prop="tableName"> + <el-input + v-model="queryParams.tableName" + placeholder="璇疯緭鍏ヨ〃鍚嶇О" + clearable + style="width: 200px" + @keyup.enter="handleQuery" + /> + </el-form-item> + <el-form-item label="琛ㄦ弿杩�" prop="tableComment"> + <el-input + v-model="queryParams.tableComment" + placeholder="璇疯緭鍏ヨ〃鎻忚堪" + clearable + style="width: 200px" + @keyup.enter="handleQuery" + /> + </el-form-item> + <el-form-item label="鍒涘缓鏃堕棿" style="width: 308px"> + <el-date-picker + v-model="dateRange" + value-format="YYYY-MM-DD" + type="daterange" + range-separator="-" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + ></el-date-picker> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button> + <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + 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 + type="info" + plain + icon="Upload" + @click="openImportTable" + v-hasPermi="['tool:gen:import']" + >瀵煎叆</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="Edit" + :disabled="single" + @click="handleEditTable" + v-hasPermi="['tool:gen:edit']" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="Delete" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['tool:gen:remove']" + >鍒犻櫎</el-button> + </el-col> + <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table ref="genRef" v-loading="loading" :data="tableList" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange"> + <el-table-column type="selection" align="center" width="55"></el-table-column> + <el-table-column label="搴忓彿" type="index" width="50" align="center"> + <template #default="scope"> + <span>{{(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1}}</span> + </template> + </el-table-column> + <el-table-column label="琛ㄥ悕绉�" align="center" prop="tableName" :show-overflow-tooltip="true" /> + <el-table-column label="琛ㄦ弿杩�" align="center" prop="tableComment" :show-overflow-tooltip="true" /> + <el-table-column label="瀹炰綋" align="center" prop="className" :show-overflow-tooltip="true" /> + <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="160" sortable="custom" :sort-orders="['descending', 'ascending']" /> + <el-table-column label="鏇存柊鏃堕棿" align="center" prop="updateTime" width="160" sortable="custom" :sort-orders="['descending', 'ascending']" /> + <el-table-column label="鎿嶄綔" align="center" width="330" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-tooltip content="棰勮" placement="top"> + <el-button link type="primary" icon="View" @click="handlePreview(scope.row)" v-hasPermi="['tool:gen:preview']"></el-button> + </el-tooltip> + <el-tooltip content="缂栬緫" placement="top"> + <el-button link type="primary" icon="Edit" @click="handleEditTable(scope.row)" v-hasPermi="['tool:gen:edit']"></el-button> + </el-tooltip> + <el-tooltip content="鍒犻櫎" placement="top"> + <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['tool:gen:remove']"></el-button> + </el-tooltip> + <el-tooltip content="鍚屾" placement="top"> + <el-button link type="primary" icon="Refresh" @click="handleSynchDb(scope.row)" v-hasPermi="['tool:gen:edit']"></el-button> + </el-tooltip> + <el-tooltip content="鐢熸垚浠g爜" placement="top"> + <el-button link type="primary" icon="Download" @click="handleGenTable(scope.row)" v-hasPermi="['tool:gen:code']"></el-button> + </el-tooltip> + </template> + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="total" + v-model:page="queryParams.pageNum" + v-model:limit="queryParams.pageSize" + @pagination="getList" + /> + <!-- 棰勮鐣岄潰 --> + <el-dialog :title="preview.title" v-model="preview.open" width="80%" top="5vh" append-to-body class="scrollbar"> + <el-tabs v-model="preview.activeName"> + <el-tab-pane + v-for="(value, key) in preview.data" + :label="key.substring(key.lastIndexOf('/')+1,key.indexOf('.vm'))" + :name="key.substring(key.lastIndexOf('/')+1,key.indexOf('.vm'))" + :key="value" + > + <el-link :underline="false" icon="DocumentCopy" v-copyText="value" v-copyText:callback="copyTextSuccess" style="float:right"> 澶嶅埗</el-link> + <pre>{{ value }}</pre> + </el-tab-pane> + </el-tabs> + </el-dialog> + <import-table ref="importRef" @ok="handleQuery" /> + <create-table ref="createRef" @ok="handleQuery" /> + </div> +</template> + +<script setup name="Gen"> +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() + +const tableList = ref([]) +const loading = ref(true) +const showSearch = ref(true) +const ids = ref([]) +const single = ref(true) +const multiple = ref(true) +const total = ref(0) +const tableNames = ref([]) +const dateRange = ref([]) +const uniqueId = ref("") +const defaultSort = ref({ prop: "createTime", order: "descending" }) + +const data = reactive({ + queryParams: { + pageNum: 1, + pageSize: 10, + tableName: undefined, + tableComment: undefined, + orderByColumn: defaultSort.value.prop, + isAsc: defaultSort.value.order + }, + preview: { + open: false, + title: "浠g爜棰勮", + data: {}, + activeName: "domain.java" + } +}) + +const { queryParams, preview } = toRefs(data) + +onActivated(() => { + const time = route.query.t + if (time != null && time != uniqueId.value) { + uniqueId.value = time + queryParams.value.pageNum = Number(route.query.pageNum) + dateRange.value = [] + proxy.resetForm("queryForm") + getList() + } +}) + +/** 鏌ヨ琛ㄩ泦鍚� */ +function getList() { + loading.value = true + listTable(proxy.addDateRange(queryParams.value, dateRange.value)).then(response => { + tableList.value = response.rows + total.value = response.total + loading.value = false + }) +} + +/** 鎼滅储鎸夐挳鎿嶄綔 */ +function handleQuery() { + queryParams.value.pageNum = 1 + getList() +} + +/** 鐢熸垚浠g爜鎿嶄綔 */ +function handleGenTable(row) { + const tbNames = row.tableName || tableNames.value + if (tbNames == "") { + proxy.$modal.msgError("璇烽�夋嫨瑕佺敓鎴愮殑鏁版嵁") + return + } + if (row.genType === "1") { + genCode(row.tableName).then(response => { + proxy.$modal.msgSuccess("鎴愬姛鐢熸垚鍒拌嚜瀹氫箟璺緞锛�" + row.genPath) + }) + } else { + proxy.$download.zip("/tool/gen/batchGenCode?tables=" + tbNames, "ruoyi.zip") + } +} + +/** 鍚屾鏁版嵁搴撴搷浣� */ +function handleSynchDb(row) { + const tableName = row.tableName + proxy.$modal.confirm('纭瑕佸己鍒跺悓姝�"' + tableName + '"琛ㄧ粨鏋勫悧锛�').then(function () { + return synchDb(tableName) + }).then(() => { + proxy.$modal.msgSuccess("鍚屾鎴愬姛") + }).catch(() => {}) +} + +/** 鎵撳紑瀵煎叆琛ㄥ脊绐� */ +function openImportTable() { + proxy.$refs["importRef"].show() +} + +/** 鎵撳紑鍒涘缓琛ㄥ脊绐� */ +function openCreateTable() { + proxy.$refs["createRef"].show() +} + +/** 閲嶇疆鎸夐挳鎿嶄綔 */ +function resetQuery() { + dateRange.value = [] + proxy.resetForm("queryRef") + queryParams.value.pageNum = 1 + proxy.$refs["genRef"].sort(defaultSort.value.prop, defaultSort.value.order) +} + +/** 棰勮鎸夐挳 */ +function handlePreview(row) { + previewTable(row.tableId).then(response => { + preview.value.data = response.data + preview.value.open = true + preview.value.activeName = "domain.java" + }) +} + +/** 澶嶅埗浠g爜鎴愬姛 */ +function copyTextSuccess() { + proxy.$modal.msgSuccess("澶嶅埗鎴愬姛") +} + +// 澶氶�夋閫変腑鏁版嵁 +function handleSelectionChange(selection) { + ids.value = selection.map(item => item.tableId) + tableNames.value = selection.map(item => item.tableName) + single.value = selection.length != 1 + multiple.value = !selection.length +} + +/** 鎺掑簭瑙﹀彂浜嬩欢 */ +function handleSortChange(column, prop, order) { + queryParams.value.orderByColumn = column.prop + queryParams.value.isAsc = column.order + getList() +} + +/** 淇敼鎸夐挳鎿嶄綔 */ +function handleEditTable(row) { + const tableId = row.tableId || ids.value[0] + const tableName = row.tableName || tableNames.value[0] + const params = { pageNum: queryParams.value.pageNum } + proxy.$tab.openPage("淇敼[" + tableName + "]鐢熸垚閰嶇疆", '/tool/gen-edit/index/' + tableId, params) +} + +/** 鍒犻櫎鎸夐挳鎿嶄綔 */ +function handleDelete(row) { + const tableIds = row.tableId || ids.value + proxy.$modal.confirm('鏄惁纭鍒犻櫎琛ㄧ紪鍙蜂负"' + tableIds + '"鐨勬暟鎹」锛�').then(function () { + return delTable(tableIds) + }).then(() => { + getList() + proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛") + }).catch(() => {}) +} + +getList() +</script> -- Gitblit v1.9.3