开发代码生成功能
This commit is contained in:
@@ -70,7 +70,7 @@ export function genCode(tableName) {
|
||||
// 同步数据库
|
||||
export function synchDb(tableName) {
|
||||
return request({
|
||||
url: '/tool/gen/synchDb/' + tableName,
|
||||
url: 'tool/gen/synchDb/' + tableName,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
@@ -80,9 +80,9 @@ export function synchDb(tableName) {
|
||||
/**
|
||||
* 创建数据库连接
|
||||
*/
|
||||
export function createGetDBConn(data) {
|
||||
export function createGetDBConn(data) {
|
||||
return request({
|
||||
url: 'CodeGenerator/CreateDBConn',
|
||||
url: 'tool/gen/CreateDBConn',
|
||||
method: 'post',
|
||||
data: data,
|
||||
})
|
||||
@@ -92,7 +92,7 @@ export function synchDb(tableName) {
|
||||
*/
|
||||
export function codeGetDBList() {
|
||||
return request({
|
||||
url: 'CodeGenerator/GetListDataBase',
|
||||
url: 'tool/gen/getDbList',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
@@ -101,7 +101,7 @@ export function codeGetDBList() {
|
||||
*/
|
||||
export function codeGetTableList(data) {
|
||||
return request({
|
||||
url: 'CodeGenerator/FindListTable',
|
||||
url: 'tool/gen/FindListTable',
|
||||
method: 'get',
|
||||
params: data,
|
||||
})
|
||||
@@ -111,12 +111,26 @@ export function codeGetTableList(data) {
|
||||
*/
|
||||
export async function codeGenerator(data) {
|
||||
return await request({
|
||||
url: 'CodeGenerator/Generate',
|
||||
method: 'get',
|
||||
params: data,
|
||||
url: '/tool/gen/Generate',
|
||||
method: 'post',
|
||||
data: data,
|
||||
timeout: 0,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取表格列信息
|
||||
* @param {*} data
|
||||
* @returns
|
||||
*/
|
||||
export function queryColumnInfo(data) {
|
||||
return request({
|
||||
url: 'tool/gen/queryColumnInfo',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* 数据库解密
|
||||
|
||||
+88
-110
@@ -36,13 +36,13 @@
|
||||
<!-- 工具区域 -->
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" v-hasPermi="['Article:add']" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" v-hasPermi="['Article:update']" plain icon="el-icon-edit" size="mini" @click="handleUpdate">修改</el-button>
|
||||
<el-button type="success" plain icon="el-icon-edit" size="mini" @click="handleUpdate">修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" v-hasPermi="['Article:delete']" plain icon="el-icon-delete" size="mini" @click="handleDelete">删除</el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" @click="handleDelete">删除</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport">导入</el-button>
|
||||
@@ -54,27 +54,30 @@
|
||||
</el-row>
|
||||
|
||||
<!-- 数据区域 -->
|
||||
<el-table :data="dataList" ref="table" border @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="50" />
|
||||
<el-table-column prop="cid" label="Cid" align="center" width="100" />
|
||||
<el-table-column prop="title" label="文章标题" align="center" width="100" :show-overflow-tooltip="true" />
|
||||
<el-table-column prop="content" label="文章内容" align="center" width="100" />
|
||||
<el-table-column prop="userId" label="用户id" align="center" width="100" />
|
||||
<el-table-column prop="status" label="文章状态1、已发布 2、草稿" align="center" width="100" :show-overflow-tooltip="true" />
|
||||
<el-table-column prop="fmt_type" label="编辑器类型markdown,html" align="center" width="100" :show-overflow-tooltip="true" />
|
||||
<el-table-column prop="tags" label="文章标签" align="center" width="100" :show-overflow-tooltip="true" />
|
||||
<el-table-column prop="hits" label="点击量" align="center" width="100" />
|
||||
<el-table-column prop="category_id" label="目录id" align="center" width="100" />
|
||||
<el-table-column prop="createTime" label="创建时间" align="center" width="100" />
|
||||
<el-table-column prop="updateTime" label="修改时间" align="center" width="100" />
|
||||
<el-table-column prop="authorName" label="作者名" align="center" width="100" :show-overflow-tooltip="true" />
|
||||
<el-table :data="dataList" ref="table" border>
|
||||
<el-table-column prop="id" label="id" width="60" sortable> </el-table-column>
|
||||
<el-table-column prop="userId" label="userid" width="80"> </el-table-column>
|
||||
<!-- 显示图片 -->
|
||||
<el-table-column prop="photo" label="图片">
|
||||
<template slot-scope="scope">
|
||||
<el-image class="table-td-thumb" :src="scope.row.photo" :preview-src-list="[scope.row.photo]"></el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="content" label="介绍" width="100" :show-overflow-tooltip="true">
|
||||
</el-table-column>
|
||||
<el-table-column sortable prop="isStart" align="center" label="状态" width="90">
|
||||
<template>
|
||||
<el-tag size="mini" type="success" disable-transitions>标签</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="addtime" label="创建时间"> </el-table-column>
|
||||
<el-table-column label="操作" align="center" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)">详情</el-button>
|
||||
<el-button size="mini" v-hasPermi="['Article:update']" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||
<el-popconfirm title="确定删除吗?" @onConfirm="handleDelete(scope.row)" style="margin-left:10px">
|
||||
<el-button slot="reference" v-hasPermi="['Article:del']" size="mini" type="text" icon="el-icon-delete">删除</el-button>
|
||||
<el-button slot="reference" size="mini" type="text" icon="el-icon-delete">删除</el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@@ -84,57 +87,35 @@
|
||||
<!-- 添加或修改菜单对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="Cid" :label-width="labelWidth" prop="cid">
|
||||
<el-input v-model="form.cid" placeholder="请输入Cid" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="文章标题" :label-width="labelWidth" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入文章标题" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="文章内容" :label-width="labelWidth" prop="content">
|
||||
<el-input v-model="form.content" placeholder="请输入文章内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="用户id" :label-width="labelWidth" prop="userId">
|
||||
<el-input v-model="form.userId" placeholder="请输入用户id" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="文章状态1、已发布 2、草稿" :label-width="labelWidth" prop="status">
|
||||
<el-input v-model="form.status" placeholder="请输入文章状态1、已发布 2、草稿" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="编辑器类型markdown,html" :label-width="labelWidth" prop="fmt_type">
|
||||
<el-input v-model="form.fmt_type" placeholder="请输入编辑器类型markdown,html" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="文章标签" :label-width="labelWidth" prop="tags">
|
||||
<el-input v-model="form.tags" placeholder="请输入文章标签" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="点击量" :label-width="labelWidth" prop="hits">
|
||||
<el-input v-model="form.hits" placeholder="请输入点击量" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="目录id" :label-width="labelWidth" prop="category_id">
|
||||
<el-input v-model="form.category_id" placeholder="请输入目录id" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="作者名" :label-width="labelWidth" prop="authorName">
|
||||
<el-input v-model="form.authorName" placeholder="请输入作者名" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="用户Id" prop="userId">
|
||||
<el-input v-model.number="form.userId" placeholder="" :disabled="form.userId > 0" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="用户昵称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="顺序" prop="sortId">
|
||||
<el-input-number v-model="form.sortId" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictValue">{{dict.dictLabel}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="content">
|
||||
<el-input v-model="form.content" :rows="2" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer" v-if="btnSubmitVisible">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
@@ -145,17 +126,13 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
// import { listArticle,addArticle,delArticle,editArticle } from '@/api/Article.js'
|
||||
// import { listXXXX} from '@/api/xxxx.js'
|
||||
|
||||
export default {
|
||||
name: "Article",
|
||||
name: "demo",
|
||||
data() {
|
||||
return {
|
||||
labelWidth: "70px",
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 显示搜索条件
|
||||
@@ -173,14 +150,34 @@ export default {
|
||||
// xxx下拉框
|
||||
statusOptions: [],
|
||||
// 数据列表
|
||||
dataList: [],
|
||||
dataList: [
|
||||
{
|
||||
id: 1,
|
||||
photo:
|
||||
"https://ss1.baidu.com/-4o3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/d788d43f8794a4c2b124d0000df41bd5ad6e3991.jpg",
|
||||
name: "你好",
|
||||
userId: 1000001,
|
||||
sortId: 1,
|
||||
address: "浙江省杭州市西湖区",
|
||||
content: "我是一个超长超长的文字啊",
|
||||
addtime: "2021-8-7 23:00:00",
|
||||
},
|
||||
],
|
||||
// 总记录数
|
||||
total: 0,
|
||||
// 提交按钮是否显示
|
||||
btnSubmitVisible: true,
|
||||
// 表单校验
|
||||
rules: {
|
||||
Cid: [{ required: true, message: "请输入", trigger: "blur" }],
|
||||
name: [{ required: true, message: "名称不能为空", trigger: "blur" }],
|
||||
userId: [
|
||||
{
|
||||
type: "number",
|
||||
required: true,
|
||||
message: "id不能为空,且不能为非数字",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -196,14 +193,12 @@ export default {
|
||||
// 查询数据
|
||||
getList() {
|
||||
console.log(JSON.stringify(this.queryParams));
|
||||
listArticle(this.addDateRange(this.queryParams, this.timeRange)).then(
|
||||
(res) => {
|
||||
if (res.code == 200) {
|
||||
this.dataList = res.data.result;
|
||||
this.total = res.data.totalCount;
|
||||
}
|
||||
}
|
||||
);
|
||||
// listXXXX(this.addDateRange(this.queryParams, this.timeRange)).then(res => {
|
||||
// if (res.code == 200) {
|
||||
// this.dataList = res.data.result;
|
||||
// this.total = res.data.totalCount;
|
||||
// }
|
||||
// })
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
@@ -213,20 +208,8 @@ export default {
|
||||
// 重置数据表单
|
||||
reset() {
|
||||
this.form = {
|
||||
Cid: "",
|
||||
Title: "",
|
||||
Content: "",
|
||||
UserId: "",
|
||||
Status: "",
|
||||
Fmt_type: "",
|
||||
Tags: "",
|
||||
Hits: "",
|
||||
Category_id: "",
|
||||
CreateTime: "",
|
||||
UpdateTime: "",
|
||||
AuthorName: "",
|
||||
|
||||
//需个性化处理内容
|
||||
Id: undefined,
|
||||
// TODO 其他列字段
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
@@ -239,11 +222,6 @@ export default {
|
||||
//TODO 重置字段
|
||||
};
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map((item) => item.Cid);
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.getList();
|
||||
@@ -258,10 +236,10 @@ export default {
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
delArticle().then((res) => {
|
||||
this.msgSuccess("删除成功");
|
||||
this.handleQuery();
|
||||
});
|
||||
// delXXX().then((res) => {
|
||||
// this.msgSuccess("删除成功");
|
||||
// this.handleQuery();
|
||||
// });
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
@@ -285,7 +263,7 @@ export default {
|
||||
if (valid) {
|
||||
console.log(JSON.stringify(this.form));
|
||||
// TODO 记得改成表的主键
|
||||
if (this.form.Cid != undefined) {
|
||||
if (this.form.Id != undefined) {
|
||||
//TODO 编辑业务代码
|
||||
} else {
|
||||
//TODO 新增业务代码
|
||||
|
||||
+136
-120
@@ -1,44 +1,15 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- <div class="filter-container">
|
||||
<el-card>
|
||||
<el-form ref="searchDbform" :inline="true" :model="searchform" class="demo-form-inline" size="small">
|
||||
<el-form-item label="数据库地址" prop="DbAddress">
|
||||
<el-input v-model="searchDbform.DbAddress" placeholder="请输入数据库地址" autocomplete="off" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="数据库名称" prop="DbName">
|
||||
<el-input v-model="searchDbform.DbName" placeholder="请输入数据库名称" autocomplete="off" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户名" prop="DbUserName">
|
||||
<el-input v-model="searchDbform.DbUserName" placeholder="请输入用户名" autocomplete="off" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="访问密码" prop="DbPassword">
|
||||
<el-input v-model="searchDbform.DbPassword" placeholder="请输入访问密码" autocomplete="off" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="数据库类型" prop="DbType">
|
||||
<el-select v-model="searchDbform.DbType" clearable placeholder="请选数据库类型">
|
||||
<el-option v-for="item in selectDbTypes" :key="item.Id" :label="item.Title" :value="item.Id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据库端口" prop="DbPort">
|
||||
<el-input v-model="searchDbform.DbPort" placeholder="请输入数据库端口" autocomplete="off" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleDbConn()">链接</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div> -->
|
||||
<el-card>
|
||||
<div class="list-btn-container">
|
||||
<el-form ref="codeform" :inline="true" :rules="rules" :model="codeform" class="demo-form-inline" size="small">
|
||||
<div>
|
||||
<el-form ref="codeform" :inline="true" :rules="rules" :model="codeform" size="small">
|
||||
<el-form-item label="数据库" prop="dbName">
|
||||
<el-select v-model="codeform.dbName" clearable placeholder="请选择" @change="handleShowTable">
|
||||
<el-option v-for="item in selectedDataBase" :key="item.Id" :label="item.dbName" :value="item.dbName" />
|
||||
<el-option v-for="item in selectedDataBase" :key="item" :label="item" :value="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="表名">
|
||||
<el-input v-model="searchform.tableName" clearable placeholder="输入要查询的表名" />
|
||||
<el-input v-model="codeform.tableName" clearable placeholder="输入要查询的表名" />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="项目命名空间:" prop="baseSpace">
|
||||
<el-tooltip class="item" effect="dark" content="系统会根据项目命名空间自动生成IService、Service、Models等子命名空间" placement="bottom">
|
||||
@@ -46,32 +17,89 @@
|
||||
</el-tooltip>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="去掉表名前缀:">
|
||||
<el-tooltip class="item" effect="dark" content="表名直接变为类名,去掉表名前缀。多个前缀用“;”隔开和结束" placement="bottom">
|
||||
<el-input v-model="codeform.replaceTableNameStr" clearable width="300" placeholder="多个前缀用“;”隔开" />
|
||||
<el-tooltip class="item" effect="dark" content="表名直接变为类名,去掉表名前缀。" placement="bottom">
|
||||
<el-input v-model="codeform.replaceTableNameStr" clearable width="300" placeholder="例如:sys_" />
|
||||
</el-tooltip>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch()">查询</el-button>
|
||||
<!-- <el-button type="primary" icon="iconfont icon-code" @click="handleGenerate()">生成代码</el-button> -->
|
||||
<el-button type="default" icon="el-icon-refresh" size="small" @click="loadTableData()">刷新</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-table ref="gridtable" v-loading="tableloading" :data="tableData" border stripe highlight-current-row style="width: 100%" @selection-change="handleSelectChange">
|
||||
<el-table ref="gridtable" v-loading="tableloading" :data="tableData" border stripe highlight-current-row style="width: 100%">
|
||||
<!-- <el-table-column type="selection" width="50" /> -->
|
||||
<el-table-column prop="name" label="表名" sortable="custom" width="380" />
|
||||
<el-table-column prop="description" label="表描述" />
|
||||
<el-table-column label="操作" align="center" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" icon="el-icon-view">预览</el-button>
|
||||
<el-button type="text" icon="el-icon-download" @click="handleGenerate(scope.row)">生成代码</el-button>
|
||||
<el-button type="text" icon="el-icon-view" @click="handlePreview()">预览</el-button>
|
||||
<el-button type="text" icon="el-icon-download" @click="handleShowDialog(scope.row)">生成代码</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="pagination-container">
|
||||
<el-pagination background :current-page="pagination.pageNum" :page-sizes="[5,10,20,50,100, 200, 300, 400]" :page-size="pagination.pagesize" layout="total, sizes, prev, pager, next, jumper" :total="pagination.pageTotal" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</div>
|
||||
<el-pagination background :current-page="pagination.pageNum" :page-sizes="[5,10,20,50,100, 200, 300, 400]" :page-size="pagination.pagesize" layout="total, sizes, prev, pager, next, jumper" :total="pagination.pageTotal" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
|
||||
</el-card>
|
||||
|
||||
<el-dialog :visible.sync="showGenerate" title="代码生成" width="800px">
|
||||
<el-form ref="codeGenerateForm" label-width="140px">
|
||||
<el-form-item label="要生成的文件">
|
||||
<el-checkbox-group v-model="checkedCodeGenerateForm">
|
||||
<el-checkbox :label="1">生成Model</el-checkbox>
|
||||
<el-checkbox :label="2">生成Dto</el-checkbox>
|
||||
<el-checkbox :label="3">生成Repository</el-checkbox>
|
||||
<el-checkbox :label="4">生成Service</el-checkbox>
|
||||
<el-checkbox :label="5">生成Controller</el-checkbox>
|
||||
<el-checkbox :label="6">生成Views和js</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="是否覆盖生成">
|
||||
<el-radio v-model="coverd" :label="true">是</el-radio>
|
||||
<el-radio v-model="coverd" :label="false">否</el-radio>
|
||||
</el-form-item>
|
||||
<el-form-item label="生成查询的列">
|
||||
<!-- <el-checkbox-group v-model="checkedQueryColumn">
|
||||
<el-checkbox :label="item.dbColumnName" v-for="item in columnData" :key="item.dbColumnName">{{item.dbColumnName}}</el-checkbox>
|
||||
</el-checkbox-group> -->
|
||||
|
||||
<el-table :data="columnData" height="300px">
|
||||
<el-table-column type="selection" width="60" />
|
||||
<el-table-column label="字段列名" prop="dbColumnName" />
|
||||
<el-table-column label="字段描述" prop="columnDescription">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.columnDescription" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="表数据类型" prop="dataType" />
|
||||
<el-table-column label="C#类型">
|
||||
<template slot-scope="scope">
|
||||
<el-select v-model="scope.row.dataType">
|
||||
<el-option value="int">int</el-option>
|
||||
<el-option value="bigint">bigint</el-option>
|
||||
<el-option value="varchar">varchar</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="显示类型">
|
||||
<el-select v-model="selectType">
|
||||
<el-option value="input">文本框</el-option>
|
||||
<el-option value="textArea">文本域</el-option>
|
||||
<el-option value="select">下拉框</el-option>
|
||||
<el-option value="radio">单选框</el-option>
|
||||
<el-option value="datetime">日期控件</el-option>
|
||||
<el-option value="upload">图片上传</el-option>
|
||||
<el-option value="fileUpload">文件上传</el-option>
|
||||
</el-select>
|
||||
</el-table-column> -->
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="handleGenerate">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -81,43 +109,28 @@ import {
|
||||
codeGetDBList,
|
||||
codeGetTableList,
|
||||
codeGenerator,
|
||||
queryColumnInfo,
|
||||
} from "@/api/tool/gen";
|
||||
import { downloadFile } from "@/utils/index";
|
||||
// import { downloadFile } from "@/utils/index";
|
||||
import { Loading } from "element-ui";
|
||||
|
||||
import defaultSettings from "@/settings";
|
||||
import template from "../../../document/template.vue";
|
||||
|
||||
// import defaultSettings from "@/settings";
|
||||
|
||||
export default {
|
||||
components: { template },
|
||||
name: "CodeGenerator",
|
||||
data() {
|
||||
return {
|
||||
searchDbform: {
|
||||
DbName: "",
|
||||
DbAddress: "",
|
||||
DbPort: "1433",
|
||||
DbUserName: "",
|
||||
DbPassword: "",
|
||||
DbType: "",
|
||||
},
|
||||
searchform: {
|
||||
codeform: {
|
||||
dbName: "",
|
||||
tableName: "",
|
||||
},
|
||||
codeform: {
|
||||
baseSpace: "",
|
||||
replaceTableNameStr: "",
|
||||
},
|
||||
showGenerate: false,
|
||||
checkedCodeGenerateForm: [1, 2, 3, 4, 5, 6],
|
||||
rules: {
|
||||
// baseSpace: [
|
||||
// { required: true, message: "请输入项目名称", trigger: "blur" },
|
||||
// {
|
||||
// min: 2,
|
||||
// max: 50,
|
||||
// message: "长度在 2 到 50 个字符",
|
||||
// trigger: "blur",
|
||||
// },
|
||||
// ],
|
||||
dbName: [
|
||||
{ required: true, message: "请选择数据库名称", trigger: "blur" },
|
||||
],
|
||||
@@ -125,16 +138,6 @@ export default {
|
||||
{ min: 0, max: 50, message: "长度小于50个字符", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
selectDbTypes: [
|
||||
{
|
||||
Id: "SqlServer",
|
||||
Title: "SqlServer",
|
||||
},
|
||||
{
|
||||
Id: "MySql",
|
||||
Title: "MySql",
|
||||
},
|
||||
],
|
||||
tableData: [],
|
||||
tableloading: false,
|
||||
pagination: {
|
||||
@@ -142,30 +145,35 @@ export default {
|
||||
pagesize: 20,
|
||||
pageTotal: 0,
|
||||
},
|
||||
sortableData: {
|
||||
order: "",
|
||||
sort: "",
|
||||
},
|
||||
currentSelected: [],
|
||||
// 选中行的表
|
||||
currentSelected: {},
|
||||
selectedDataBase: [],
|
||||
// 列信息
|
||||
columnData: [],
|
||||
// 选中的列
|
||||
checkedQueryColumn: [],
|
||||
//是否覆盖原先代码
|
||||
coverd: true,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.pagination.pageNum = 1;
|
||||
this.loadData();
|
||||
// this.loadTableData();
|
||||
this.loadTableData();
|
||||
},
|
||||
methods: {
|
||||
loadData: function () {
|
||||
loadData() {
|
||||
codeGetDBList().then((res) => {
|
||||
this.selectedDataBase = res.data;
|
||||
const { dbList, defaultDb } = res.data;
|
||||
this.codeform.dbName = defaultDb;
|
||||
this.selectedDataBase = dbList;
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 加载页面table数据
|
||||
*/
|
||||
loadTableData: function () {
|
||||
if (this.codeform.dataBaseName !== "") {
|
||||
loadTableData() {
|
||||
if (this.codeform.dbName !== "") {
|
||||
this.tableloading = true;
|
||||
var seachdata = {
|
||||
pageNum: this.pagination.pageNum,
|
||||
@@ -183,46 +191,53 @@ export default {
|
||||
/**
|
||||
* 点击查询
|
||||
*/
|
||||
handleSearch: function () {
|
||||
handleSearch() {
|
||||
this.$refs["codeform"].validate((valid) => {
|
||||
if (valid) {
|
||||
this.tableloading = true;
|
||||
this.pagination.pageNum = 1;
|
||||
this.loadTableData();
|
||||
}else{
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
handleShowTable: function () {
|
||||
this.pagination.pageNum = 1;
|
||||
// this.loadTableData();
|
||||
},
|
||||
handleDbConn: function () {
|
||||
var dataInfo = {
|
||||
DbAddress: this.searchDbform.DbAddress,
|
||||
DbPort: this.searchDbform.DbPort,
|
||||
DbName: this.searchDbform.DbName,
|
||||
DbUserName: this.searchDbform.DbUserName,
|
||||
DbPassword: this.searchDbform.DbPassword,
|
||||
DbType: this.searchDbform.DbType,
|
||||
};
|
||||
createGetDBConn(dataInfo).then((res) => {
|
||||
this.selectedDataBase = res.ResData;
|
||||
this.searchform.DbName = this.searchDbform.DbName;
|
||||
});
|
||||
handleShowTable() {
|
||||
this.pagination.pageNum = 1;
|
||||
this.loadTableData();
|
||||
},
|
||||
handlePreview() {
|
||||
this.msgSuccess("敬请期待");
|
||||
},
|
||||
handleShowDialog(row) {
|
||||
console.log(row);
|
||||
this.showGenerate = true;
|
||||
this.currentSelected = row.name;
|
||||
|
||||
queryColumnInfo({
|
||||
dbName: this.codeform.dbName,
|
||||
tableName: row.name,
|
||||
}).then((res) => {
|
||||
if (res.code === 200) {
|
||||
const columnData = res.data;
|
||||
|
||||
// for (let i = 0; i < columnData.length; i++) {
|
||||
// this.$set(columnData[i], "selectType", 1);
|
||||
// }
|
||||
this.columnData = columnData;
|
||||
// this.checkedQueryColumn = res.data.map((r) => r.dbColumnName);
|
||||
}
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 点击生成服务端代码
|
||||
*/
|
||||
handleGenerate: async function (row) {
|
||||
console.log(JSON.stringify(row));
|
||||
// if (this.currentSelected.length === 0 || this.currentSelected.length > 3) {
|
||||
// this.msgError("请先选择要生成代码的数据表", "提示");
|
||||
// return false;
|
||||
// } else {
|
||||
handleGenerate: async function () {
|
||||
console.log(JSON.stringify(this.checkedCodeGenerateForm));
|
||||
if (!this.currentSelected) {
|
||||
this.msgError("请先选择要生成代码的数据表");
|
||||
return false;
|
||||
}
|
||||
this.$refs["codeform"].validate((valid) => {
|
||||
if (valid) {
|
||||
var loadop = {
|
||||
@@ -235,10 +250,15 @@ export default {
|
||||
|
||||
var seachdata = {
|
||||
dbName: this.codeform.dbName,
|
||||
tables: row.name, // this.currentSelected.toString(),
|
||||
tables: this.currentSelected.name,
|
||||
baseSpace: this.codeform.baseSpace,
|
||||
replaceTableNameStr: this.codeform.replaceTableNameStr,
|
||||
genFiles: this.checkedCodeGenerateForm,
|
||||
coverd: this.coverd,
|
||||
queryColumn: this.checkedQueryColumn,
|
||||
};
|
||||
console.log(JSON.stringify(seachdata));
|
||||
//return;
|
||||
codeGenerator(seachdata)
|
||||
.then((res) => {
|
||||
if (res.code == 200) {
|
||||
@@ -246,7 +266,7 @@ export default {
|
||||
// defaultSettings.fileUrl + res.ResData[0],
|
||||
// res.ResData[1]
|
||||
// );
|
||||
|
||||
this.showGenerate = false;
|
||||
this.msgSuccess("恭喜你,代码生成完成!");
|
||||
} else {
|
||||
this.msgError(res.msg);
|
||||
@@ -260,14 +280,6 @@ export default {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
// }
|
||||
},
|
||||
/**
|
||||
* 当用户手动勾选checkbox数据行事件
|
||||
*/
|
||||
handleSelectChange: function (selection, row) {
|
||||
console.log(JSON.stringify(selection));
|
||||
this.currentSelected = selection.map((item) => item.name);
|
||||
},
|
||||
/**
|
||||
* 选择每页显示数量
|
||||
@@ -284,6 +296,10 @@ export default {
|
||||
this.pagination.pageNum = val;
|
||||
this.loadTableData();
|
||||
},
|
||||
cancel() {
|
||||
this.showGenerate = false;
|
||||
this.currentSelected = {};
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user