优化代码生成功能、新增自定义路径代码生成

This commit is contained in:
不做码农 2022-01-04 22:07:00 +08:00
parent df1cae2857
commit d50c034624
12 changed files with 164 additions and 159 deletions

View File

@ -1,6 +1,7 @@
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Enums;
using Infrastructure.Extensions;
using Mapster;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
@ -105,11 +106,13 @@ namespace ZR.Admin.WebApi.Controllers
[ActionPermissionFilter(Permission = "tool:gen:query")]
public IActionResult GetColumnList(long tableId)
{
var tableColumns = GenTableColumnService.GenTableColumns(tableId);
var tableInfo = GenTableService.GetGenTableInfo(tableId);
var tables = GenTableService.GetGenTableAll();
return SUCCESS(new { columns = tableColumns, info = tableInfo, tables });
if (tableInfo != null)
{
tableInfo.Columns = GenTableColumnService.GenTableColumns(tableId);
}
return SUCCESS(new { info = tableInfo, tables });
}
/// <summary>
@ -202,6 +205,7 @@ namespace ZR.Admin.WebApi.Controllers
}
var genTable = genTableDto.Adapt<GenTable>().ToUpdate(HttpContext);
//将前端额外参数转成字符串存入Options中
genTable.Options = JsonConvert.SerializeObject(genTableDto.Params);
DbResult<bool> result = GenTableService.UseTran(() =>
{
@ -211,19 +215,21 @@ namespace ZR.Admin.WebApi.Controllers
GenTableColumnService.UpdateGenTableColumn(genTable.Columns);
}
});
return SUCCESS(result.IsSuccess);
}
/// <summary>
/// 预览代码
/// </summary>
/// <param name="dto"></param>
/// <param name="tableId"></param>
/// <returns></returns>
[HttpPost("preview/{tableId}")]
[ActionPermissionFilter(Permission = "tool:gen:preview")]
public IActionResult Preview([FromBody] GenerateDto dto)
public IActionResult Preview(long tableId = 0)
{
GenerateDto dto = new();
dto.TableId = tableId;
if (dto == null || dto.TableId <= 0)
{
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
@ -231,10 +237,9 @@ namespace ZR.Admin.WebApi.Controllers
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId);
dto.DbType = ConfigUtils.Instance.GetAppConfig(OptionsSetting.ConnBusDbType, 0);
dto.GenTable = genTableInfo;
dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));
dto.IsPreview = 1;
dto.IsPreview = true;
//生成代码
CodeGeneratorTool.Generate(dto);
@ -251,23 +256,37 @@ namespace ZR.Admin.WebApi.Controllers
[ActionPermissionFilter(Permission = "tool:gen:code")]
public IActionResult CodeGenerate([FromBody] GenerateDto dto)
{
if (dto.TableId <= 0)
if (dto?.TableId <= 0)
{
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
}
dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId);
dto.DbType = ConfigUtils.Instance.GetAppConfig(OptionsSetting.ConnBusDbType, 0);
dto.GenTable = genTableInfo;
//生成代码
//自定义路径
if (genTableInfo.GenType == "1")
{
string tempPath = WebHostEnvironment.ContentRootPath;
//代码生成文件夹路径
dto.GenCodePath = genTableInfo.GenPath.IsEmpty() ? Directory.GetParent(tempPath).FullName : genTableInfo.GenPath;
}
else
{
dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));
}
//生成压缩包
string zipReturnFileName = $"ZrAdmin.NET-{genTableInfo.TableComment}-{DateTime.Now:MMddHHmmss}.zip";
//生成代码到指定文件夹
CodeGeneratorTool.Generate(dto);
//下载文件
FileHelper.ZipGenCode(dto);
FileHelper.ZipGenCode(dto.ZipPath, dto.GenCodePath, zipReturnFileName);
return SUCCESS(new { path = "/Generatecode/" + dto.ZipFileName, fileName = dto.ZipFileName });
return SUCCESS(new { path = "/Generatecode/" + zipReturnFileName, fileName = dto.ZipFileName });
}
/// <summary>

View File

@ -68,7 +68,6 @@
<ItemGroup>
<Folder Include="DataProtection\" />
<Folder Include="wwwroot\export\" />
<Folder Include="wwwroot\Generatecode\" />
</ItemGroup>
<ItemGroup>

View File

@ -85,7 +85,7 @@ namespace ZR.CodeGenerator
GenerateVueJs(replaceDto, dto);
GenerateSql(replaceDto, dto);
if (dto.IsPreview == 1) return;
if (dto.IsPreview) return;
foreach (var item in dto.GenCodes)
{
@ -102,11 +102,10 @@ namespace ZR.CodeGenerator
/// <param name="replaceDto">替换实体</param>
private static void GenerateModels(ReplaceDto replaceDto, GenerateDto generateDto)
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
var tpl = FileHelper.ReadJtTemplate("TplModel.txt");
var result = tpl.Render();
string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs");
generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, result));
}
@ -117,10 +116,11 @@ namespace ZR.CodeGenerator
/// <param name="replaceDto">替换实体</param>
private static void GenerateInputDto(ReplaceDto replaceDto, GenerateDto generateDto)
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
var tpl = FileHelper.ReadJtTemplate("TplDto.txt");
var result = tpl.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs");
generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPath, result));
}
@ -131,10 +131,10 @@ namespace ZR.CodeGenerator
/// <param name="replaceDto">替换实体</param>
private static void GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto)
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
var tpl = FileHelper.ReadJtTemplate("TplRepository.txt");
var result = tpl.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs");
generateDto.GenCodes.Add(new GenCode(3, "Repository.cs", fullPath, result));
}
@ -143,14 +143,15 @@ namespace ZR.CodeGenerator
/// </summary>
private static void GenerateService(ReplaceDto replaceDto, GenerateDto generateDto)
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
var tpl = FileHelper.ReadJtTemplate("TplService.txt");
var result = tpl.Render();
generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, result));
var fullPath2 = Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
var tpl2 = FileHelper.ReadJtTemplate("TplIService.txt");
var result = tpl.Render();
var result2 = tpl2.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs");
var fullPath2 = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs");
generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, result));
generateDto.GenCodes.Add(new GenCode(4, "IService.cs", fullPath2, result2));
}
@ -159,11 +160,11 @@ namespace ZR.CodeGenerator
/// </summary>
private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto)
{
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
var tpl = FileHelper.ReadJtTemplate("TplControllers.txt");
tpl.Set("QueryCondition", replaceDto.QueryCondition);
var result = tpl.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs");
generateDto.GenCodes.Add(new GenCode(5, "Controller.cs", fullPath, result));
}
@ -171,7 +172,6 @@ namespace ZR.CodeGenerator
/// 生成Vue页面
private static void GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto)
{
var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", FirstLowerCase(generateDto.GenTable.ModuleName), $"{generateDto.GenTable.BusinessName}.vue");
string fileName = string.Empty;
switch (generateDto.GenTable.TplCategory)
{
@ -192,6 +192,8 @@ namespace ZR.CodeGenerator
tpl.Set("lowerBusinessName", FirstLowerCase(generateDto.GenTable.BusinessName));
var result = tpl.Render();
var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", FirstLowerCase(generateDto.GenTable.ModuleName), $"{generateDto.GenTable.BusinessName}.vue");
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result));
}
@ -203,10 +205,10 @@ namespace ZR.CodeGenerator
/// <returns></returns>
public static void GenerateVueJs(ReplaceDto replaceDto, GenerateDto generateDto)
{
string fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", FirstLowerCase(generateDto.GenTable.ModuleName), FirstLowerCase(generateDto.GenTable.BusinessName) + ".js");
var tpl = FileHelper.ReadJtTemplate("TplVueApi.txt");
var result = tpl.Render();
string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", FirstLowerCase(generateDto.GenTable.ModuleName), FirstLowerCase(generateDto.GenTable.BusinessName) + ".js");
generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result));
}
@ -217,8 +219,6 @@ namespace ZR.CodeGenerator
/// <param name="generateDto"></param>
public static void GenerateSql(ReplaceDto replaceDto, GenerateDto generateDto)
{
string fullPath = Path.Combine(generateDto.GenCodePath, generateDto.GenTable.BusinessName + ".sql");
var tempName = "";
switch (generateDto.DbType)
{
@ -234,6 +234,8 @@ namespace ZR.CodeGenerator
var tpl = FileHelper.ReadJtTemplate($"{tempName}.txt");
tpl.Set("parentId", generateDto.GenTable.ParentMenuId ?? 0);
var result = tpl.Render();
string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, generateDto.GenTable.BusinessName + ".sql");
generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, result));
}

View File

@ -123,31 +123,31 @@ namespace ZR.CodeGenerator
/// <summary>
/// 压缩代码
/// </summary>
/// <param name="dto"></param>
/// <param name="zipPath"></param>
/// <param name="genCodePath"></param>
/// <param name="zipFileName">压缩后的文件名</param>
/// <returns></returns>
public static string ZipGenCode(GenerateDto dto)
public static bool ZipGenCode(string zipPath, string genCodePath,string zipFileName)
{
if (string.IsNullOrEmpty(zipPath)) return false;
try
{
//生成压缩包
string zipReturnFileName = "ZrAdmin.NET" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".zip";
CreateDirectory(dto.GenCodePath);
string zipFileName = Path.Combine(dto.ZipPath, zipReturnFileName);
if (File.Exists(zipFileName))
CreateDirectory(genCodePath);
string zipFileFullName = Path.Combine(zipPath, zipFileName);
if (File.Exists(zipFileFullName))
{
File.Delete(zipFileName);
File.Delete(zipFileFullName);
}
ZipFile.CreateFromDirectory(dto.GenCodePath, zipFileName);
DeleteDirectory(dto.GenCodePath);
dto.ZipFileName = zipReturnFileName;
return zipReturnFileName;
ZipFile.CreateFromDirectory(genCodePath, zipFileFullName);
DeleteDirectory(genCodePath);
return true;
}
catch (Exception ex)
{
Console.WriteLine("压缩文件出错。" + ex.Message);
return "";
return false;
}
}

View File

@ -9,7 +9,7 @@ namespace ZR.CodeGenerator.Model
/// <summary>
/// 是否预览代码
/// </summary>
public int IsPreview { get; set; }
public bool IsPreview { get; set; }
/// <summary>
/// 生成代码的数据库类型 0、mysql 1、sqlserver
/// </summary>
@ -17,7 +17,7 @@ namespace ZR.CodeGenerator.Model
/// <summary>
/// 生成的按钮功能
/// </summary>
public int[] CheckedBtn { get; set; }
public int[] CheckedBtn { get; set; } = System.Array.Empty<int>();
public GenTable GenTable { get; set; }
public CodeGenerateOption GenOptions { get; set; }
#region
@ -37,6 +37,11 @@ namespace ZR.CodeGenerator.Model
/// 代码生成压缩包名称
/// </summary>
public string ZipFileName { get; set; }
/// <summary>
/// 生成代码方式0zip压缩包 1自定义路径
/// </summary>
public string GenType { get; set; }
public string GenPath { get; set; } = "/";
#endregion
}

View File

@ -20,13 +20,7 @@ namespace ZR.Model.System.Dto
public string FunctionName { get; set; }
public string FunctionAuthor { get; set; }
public string GenType { get; set; }
public string Options { get; set; }
/// <summary>
/// 上级菜单id
/// </summary>
//public int? ParentMenuId { get; set; }
//public string SortField { get; set; }
//public string SortType { get; set; }
public string GenPath { get; set; }
/// <summary>
/// 额外参数
/// </summary>
@ -36,6 +30,7 @@ namespace ZR.Model.System.Dto
/// <summary>
/// 额外参数
/// ****注意里面参数统一首字母小写*****
/// </summary>
public class Options
{
@ -45,6 +40,10 @@ namespace ZR.Model.System.Dto
public int? parentMenuId { get; set; }
public string sortField { get; set; }
public string sortType { get; set; }
/// <summary>
/// 额外参数字符串
/// </summary>
public string checkedBtn { get; set; }
}
public class GenTableColumnDto
{

View File

@ -68,6 +68,7 @@ namespace ZR.Model.System.Generate
/// 生成代码方式0zip压缩包 1自定义路径
/// </summary>
public string GenType { get; set; }
public string GenPath { get; set; }
/// <summary>
/// 其他生成选项
/// </summary>
@ -86,7 +87,7 @@ namespace ZR.Model.System.Generate
[SqlSugar.SugarColumn(IsIgnore = true)]
public object SortField { get; set; } = string.Empty;
[SqlSugar.SugarColumn(IsIgnore = true)]
public object TreeCode { get; set; } = string.Empty;
@ -95,6 +96,11 @@ namespace ZR.Model.System.Generate
[SqlSugar.SugarColumn(IsIgnore = true)]
public object TreeParentCode { get; set; }
/// <summary>
/// 生成的按钮功能
/// </summary>
[SqlSugar.SugarColumn(IsIgnore = true)]
public int[] CheckedBtn { get; set; } = new int[] { 1, 2, 3 };
#endregion
}
}

View File

@ -5,6 +5,7 @@ using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using ZR.Common;
using ZR.Model;
using ZR.Model.System.Generate;
using ZR.Repository.System;
@ -89,6 +90,9 @@ namespace ZR.Service.System
genTable.TreeParentCode = options.GetValueOrDefault("treeParentCode") ?? "";
genTable.TreeName = options.GetValueOrDefault("treeName") ?? "";
genTable.TreeCode = options.GetValueOrDefault("treeCode") ?? "";
var checkdBtn = options.GetValueOrDefault("checkedBtn");
genTable.CheckedBtn = Tools.SpitIntArrary(checkdBtn.ToString());
}
}

View File

@ -1,23 +1,5 @@
import request from '@/utils/request'
import request from '@/utils/request';
// 预览生成代码
// export function previewTable(tableId) {
// return request({
// url: '/tool/gen/preview/' + tableId,
// method: 'get'
// })
// }
/**
* 创建数据库连接
*/
// export function createGetDBConn(data) {
// return request({
// url: 'tool/gen/CreateDBConn',
// method: 'post',
// data: data,
// })
// }
/**
* 获取数据库
*/
@ -43,7 +25,7 @@ export function listDbTable(data) {
export async function codeGenerator(data) {
return await request({
url: 'tool/gen/genCode',
method: 'post',
method: 'POST',
data: data,
})
}
@ -103,11 +85,11 @@ export function updateGenTable(data) {
}
// 预览生成代码
export function previewTable(tableId, data) {
export function previewTable(tableId) {
return request({
url: '/tool/gen/preview/' + tableId,
method: 'post',
data: data
// data: data
})
}

View File

@ -8,12 +8,13 @@
<gen-info-form ref="genInfo" :info="info" :tables="tables" :menus="menus" :columns="columns" />
</el-tab-pane>
<el-tab-pane label="字段信息" name="cloum">
<el-table ref="dragTable" :data="columns" row-key="columnId" :max-height="tableHeight">
<el-table ref="dragTable" v-loading="loading" :data="columns" row-key="columnId" :max-height="tableHeight">
<el-table-column label="序号" type="index" min-width="5%" class-name="allowDrag" />
<el-table-column label="字段列名" prop="columnName" min-width="10%" :show-overflow-tooltip="true" />
<el-table-column label="字段描述" min-width="10%">
<template slot-scope="scope">
<el-input v-model="scope.row.columnComment" :ref='scope.row.columnId' @keydown.native="nextFocus(scope.row,scope.$index, $event)"></el-input>
<el-input v-model="scope.row.columnComment" :ref='scope.row.columnId' @keydown.native="nextFocus(scope.row,scope.$index, $event)">
</el-input>
</template>
</el-table-column>
<el-table-column label="物理类型" prop="columnType" min-width="10%" :show-overflow-tooltip="true" />
@ -93,7 +94,8 @@
</el-table-column>
<el-table-column label="字典类型" min-width="12%">
<template slot-scope="scope">
<el-select v-model="scope.row.dictType" clearable filterable placeholder="请选择" v-if="scope.row.htmlType == 'select' || scope.row.htmlType == 'radio' || scope.row.htmlType =='checkbox'">
<el-select v-model="scope.row.dictType" clearable filterable placeholder="请选择"
v-if="scope.row.htmlType == 'select' || scope.row.htmlType == 'radio' || scope.row.htmlType =='checkbox'">
<el-option v-for="dict in dictOptions" :key="dict.dictType" :label="dict.dictName" :value="dict.dictType">
<span style="float: left">{{ dict.dictName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ dict.dictType }}</span>
@ -143,6 +145,7 @@ export default {
menus: [],
//
info: {},
loading: true,
};
},
created() {
@ -155,7 +158,8 @@ export default {
if (tableId) {
//
getGenTable(tableId).then((res) => {
this.columns = res.data.columns;
this.loading = false;
this.columns = res.data.info.columns;
this.info = res.data.info;
this.tables = res.data.tables; //
});
@ -178,16 +182,18 @@ export default {
if (validateResult) {
const genTable = Object.assign({}, basicForm.model, genForm.model);
genTable.columns = this.columns;
//
genTable.params = {
treeCode: genTable.treeCode,
treeName: genTable.treeName,
treeParentCode: genTable.treeParentCode,
parentMenuId: genTable.parentMenuId,
sortField: genTable.sortField,
sortType: genTable.sortType
sortField: genTable.sortField,
sortType: genTable.sortType,
checkedBtn: genTable.checkedBtn.toString(),
};
console.log("genForm", genTable);
updateGenTable(genTable).then((res) => {
this.msgSuccess(res.msg);
if (res.code === 200) {

View File

@ -5,10 +5,10 @@
<el-form-item prop="tplCategory">
<span slot="label">生成模板</span>
<el-select v-model="info.tplCategory" @change="tplSelectChange">
<el-option label="单表(增删改查)" value="crud" />
<el-option label="单表(增删改查)" value="crud" />
<!-- <el-option label="单表查询" value="select" /> -->
<el-option label="树表(增删改查)" value="tree" />
<!-- <el-option label="导航查询" value="subNav"></el-option> -->
<!-- <el-option label="导航查询" value="subNav"></el-option> -->
<!-- <el-option label="主子表(增删改查)" value="sub" /> -->
</el-select>
</el-form-item>
@ -34,7 +34,7 @@
<i class="el-icon-question"></i>
</el-tooltip>
</span>
<el-input v-model="info.moduleName" auto-complete=""/>
<el-input v-model="info.moduleName" auto-complete="" />
</el-form-item>
</el-col>
@ -94,12 +94,12 @@
<el-form-item prop="genType">
<span slot="label">
生成代码方式
<!-- <el-tooltip content="默认为zip压缩包下载,也可以自定义生成路径" placement="top">
<el-tooltip content="默认为zip压缩包下载" placement="top">
<i class="el-icon-question"></i>
</el-tooltip> -->
</el-tooltip>
</span>
<el-radio v-model="info.genType" label="0">zip压缩包</el-radio>
<!-- <el-radio v-model="info.genType" label="1">自定义路径</el-radio> -->
<el-radio v-model="info.genType" label="1">自定义路径</el-radio>
</el-form-item>
</el-col>
@ -124,6 +124,24 @@
</el-input>
</el-form-item>
</el-col>
<el-col :lg="24">
<el-form-item label="显示按钮">
<el-checkbox-group v-model="checkedBtn" @change="checkedBtnSelect">
<el-checkbox :label="1" disabled>
<el-tag type="primary">添加</el-tag>
</el-checkbox>
<el-checkbox :label="2" disabled>
<el-tag type="success">修改</el-tag>
</el-checkbox>
<el-checkbox :label="3" disabled>
<el-tag type="danger">删除</el-tag>
</el-checkbox>
<el-checkbox :label="4">
<el-tag type="warning">导出</el-tag>
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="info.tplCategory == 'tree'">
@ -234,6 +252,7 @@ export default {
},
data() {
return {
checkedBtn: [],
subColumns: [],
rules: {
tplCategory: [
@ -265,6 +284,10 @@ export default {
"info.subTableName": function (val) {
this.setSubTableColumns(val);
},
"info.checkedBtn": function (val) {
console.log(val + ',checkedBtn');
this.checkedBtn = val;
},
},
methods: {
/** 转换菜单数据结构 */
@ -282,6 +305,9 @@ export default {
subSelectChange(value) {
this.info.subTableFkName = "";
},
checkedBtnSelect(value) {
this.info.checkedBtn = value;
},
/** 选择生成模板触发 */
tplSelectChange(value) {
if (value !== "sub") {
@ -291,7 +317,6 @@ export default {
},
/** 设置关联外键 */
setSubTableColumns(value) {
console.log(value);
if (value == null || value == undefined || value == "") {
return;
}

View File

@ -37,11 +37,11 @@
<el-table-column prop="updateTime" label="更新时间" />
<el-table-column label="操作" align="center" width="350">
<template slot-scope="scope">
<el-button type="text" icon="el-icon-view" @click="handleShowDialog(scope.row, 'preview')" v-hasPermi="['tool:gen:preview']">预览</el-button>
<el-button type="text" icon="el-icon-view" @click="handlePreview(scope.row)" v-hasPermi="['tool:gen:preview']">预览</el-button>
<el-button type="text" icon="el-icon-edit" @click="handleEditTable(scope.row)" v-hasPermi="['tool:gen:edit']">编辑</el-button>
<el-button type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['tool:gen:remove']">删除</el-button>
<el-button type="text" icon="el-icon-refresh" @click="handleSynchDb(scope.row)" v-hasPermi="['tool:gen:edit']">同步</el-button>
<el-button type="text" icon="el-icon-download" @click="handleShowDialog(scope.row, 'generate')" v-hasPermi="['tool:gen:code']">生成代码
<el-button type="text" icon="el-icon-download" @click="handleGenTable(scope.row)" v-hasPermi="['tool:gen:code']">生成代码
</el-button>
</template>
</el-table-column>
@ -59,35 +59,6 @@
</el-tabs>
</el-dialog>
<import-table ref="import" @ok="handleSearch" />
<el-dialog :visible.sync="showGenerate" :title="preview.title" width="800px">
<el-form ref="codeGenerateForm" label-width="140px">
<el-form-item label="显示按钮">
<el-checkbox-group v-model="checkedBtnForm">
<el-checkbox :label="1" :disabled=true>
<el-tag type="primary">添加</el-tag>
</el-checkbox>
<el-checkbox :label="2" :disabled=true>
<el-tag type="success">修改</el-tag>
</el-checkbox>
<el-checkbox :label="3" :disabled=true>
<el-tag type="danger">删除</el-tag>
</el-checkbox>
<el-checkbox :label="4">
<el-tag type="warning">导出</el-tag>
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="数据库类型">
<el-radio v-model="dbType" :label="0">mySql</el-radio>
<el-radio v-model="dbType" :label="1">sqlServer</el-radio>
</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>
@ -122,8 +93,6 @@ export default {
activeName: "0",
},
showGenerate: false,
// button
checkedBtnForm: [1, 2, 3],
rules: {},
//
tableData: [],
@ -171,39 +140,26 @@ export default {
},
//
handlePreview(row) {
var seachdata = {
tableId: this.currentSelected.tableId,
checkedBtn: this.checkedBtnForm,
dbType: this.dbType,
};
previewTable(row.tableId, seachdata).then((res) => {
if (res.code === 200) {
this.showGenerate = false;
this.preview.open = true;
this.preview.data = res.data;
this.$refs["codeform"].validate((valid) => {
if (!valid) {
this.msgError("请先完成表格");
return;
}
previewTable(row.tableId).then((res) => {
if (res.code === 200) {
this.showGenerate = false;
this.preview.open = true;
this.preview.data = res.data;
}
});
});
},
//
handleShowDialog(row, type) {
this.showGenerate = true;
if (type == "generate") {
this.preview.title = "代码生成";
}
if (type == "preview") {
this.preview.title = "预览";
}
this.currentSelected = row;
},
/**
* 点击生成服务端代码
*/
handleGenerate: async function () {
handleGenTable(row) {
console.log(JSON.stringify(this.currentSelected));
if (this.preview.title == "预览") {
this.handlePreview(this.currentSelected);
return;
}
this.currentSelected = row;
if (!this.currentSelected) {
this.msgError("请先选择要生成代码的数据表");
return false;
@ -221,8 +177,6 @@ export default {
var seachdata = {
tableId: this.currentSelected.tableId,
tableName: this.currentSelected.name,
checkedBtn: this.checkedBtnForm,
dbType: this.dbType,
// queryColumn: this.checkedQueryColumn,
};
console.log(JSON.stringify(seachdata));
@ -232,8 +186,12 @@ export default {
const { code, data } = res;
if (code == 200) {
this.showGenerate = false;
this.msgSuccess("恭喜你,代码生成完成!");
this.download(data.path);
if (row.genType === "1") {
this.msgSuccess("成功生成到自定义路径:" + row.genPath);
} else {
this.msgSuccess("恭喜你,代码生成完成!");
this.download(data.path);
}
} else {
this.msgError(res.msg);
}
@ -251,7 +209,7 @@ export default {
this.showGenerate = false;
this.currentSelected = {};
},
//
/** 打开导入表弹窗 */
openImportTable() {
this.$refs.import.show();
},