代码生成新增是否显示指定按钮

This commit is contained in:
不做码农 2021-12-10 18:50:26 +08:00
parent d9e8de4957
commit f4906a16de
9 changed files with 89 additions and 32 deletions

View File

@ -206,25 +206,24 @@ namespace ZR.Admin.WebApi.Controllers
/// <summary>
/// 预览代码
/// </summary>
/// <param name="tableId"></param>
/// <param name="dto"></param>
/// <returns></returns>
[HttpGet("preview/{tableId}")]
[HttpPost("preview/{tableId}")]
[ActionPermissionFilter(Permission = "tool:gen:preview")]
public IActionResult Preview(long tableId)
public IActionResult Preview([FromBody] GenerateDto dto)
{
if (tableId <= 0)
if (dto == null || dto.TableId <= 0)
{
throw new CustomException(ResultCode.CUSTOM_ERROR, "请求参数为空");
}
var genTableInfo = GenTableService.GetGenTableInfo(tableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(tableId);
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId);
//var dictList = genTableInfo.Columns.FindAll(x => !string.IsNullOrEmpty(x.DictType));
//foreach (var item in dictList)
//{
// item.DictDatas = SysDictDataService.SelectDictDataByType(item.DictType);
//}
GenerateDto dto = new();
dto.GenTable = genTableInfo;
dto.ZipPath = Path.Combine(WebHostEnvironment.WebRootPath, "Generatecode");
dto.GenCodePath = Path.Combine(dto.ZipPath, DateTime.Now.ToString("yyyyMMdd"));

View File

@ -25,7 +25,7 @@ namespace ZR.Admin.WebApi.Framework
/// <returns></returns>
public static LoginUser GetLoginUser(HttpContext httpContext)
{
string token = HttpContextExtension.GetToken(httpContext);
string token = httpContext.GetToken();
if (!string.IsNullOrEmpty(token))
{
@ -58,7 +58,7 @@ namespace ZR.Admin.WebApi.Framework
Audience = jwtSettings.Audience,
IssuedAt = authTime,//token生成时间
Expires = expiresAt,
NotBefore = authTime,
//NotBefore = authTime,
TokenType = "Bearer",
//对称秘钥,签名证书
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
@ -86,7 +86,8 @@ namespace ZR.Admin.WebApi.Framework
ValidAudience = jwtSettings.Audience,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateLifetime = true,//是否验证Token有效期使用当前时间与Token的Claims中的NotBefore和Expires对比
RequireExpirationTime = true,//过期时间
ClockSkew = TimeSpan.FromSeconds(30)
//RequireExpirationTime = true,//过期时间
};
return tokenDescriptor;
}

View File

@ -67,6 +67,7 @@
<ItemGroup>
<Folder Include="Controllers\business\" />
<Folder Include="DataProtection\" />
<Folder Include="wwwroot\export\" />
<Folder Include="wwwroot\Generatecode\" />
<Folder Include="wwwroot\uploads\" />

View File

@ -20,9 +20,11 @@ ${vueQueryFormHtml}
<el-col :span="1.5">
<el-button type="danger" :disabled="multiple" v-hasPermi="['${replaceDto.PermissionPrefix}:delete']" plain icon="el-icon-delete" size="mini" @click="handleDelete">删除</el-button>
</el-col>
$if(replaceDto.ShowBtnExport)
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" v-hasPermi="['${replaceDto.PermissionPrefix}:export']">导出</el-button>
</el-col>
$end
$if(genTable.SortField != "" && 1 == 2)
<el-col :span="1.5">
<el-button type="info" plain icon="el-icon-edit" size="mini" @click="handleShowSort" v-hasPermi="['${replaceDto.PermissionPrefix}:update']">修改排序</el-button>
@ -101,6 +103,13 @@ export default {
form: {},
// 时间范围数组
timeRange: [],
columns: [
$set(index = 0)
$foreach(column in genTable.Columns)
{ index: $index, key: '${column.ColumnName}', label: `${column.ColumnComment}`, checked: $if(index < 9) true $else false $end },
$set(index = index + 1)
$end
],
$foreach(item in genTable.Columns)
$if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "checkbox"))
// ${item.ColumnComment}选项列表

View File

@ -52,6 +52,10 @@ namespace ZR.CodeGenerator
replaceDto.ModelTypeName = dto.GenTable.ClassName;//表名对应C# 实体类名
replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限
replaceDto.Author = dto.GenTable.FunctionAuthor;
replaceDto.ShowBtnAdd = dto.CheckedBtn.Any(f => f == 1);
replaceDto.ShowBtnEdit = dto.CheckedBtn.Any(f => f == 2);
replaceDto.ShowBtnDelete = dto.CheckedBtn.Any(f => f == 3);
replaceDto.ShowBtnExport = dto.CheckedBtn.Any(f => f == 4);
//循环表字段信息
foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns)
@ -262,7 +266,7 @@ namespace ZR.CodeGenerator
{
if (!string.IsNullOrEmpty(searcList[i].ToString()))
{
tableName = tableName.Replace(searcList[i], "");
tableName = tableName.Replace(searcList[i], "", StringComparison.OrdinalIgnoreCase);
}
}
}
@ -276,11 +280,11 @@ namespace ZR.CodeGenerator
/// <returns>业务名</returns>
public static string GetBusinessName(string tableName)
{
int lastIndex = tableName.IndexOf("_");//_前缀长度
int nameLength = tableName.Length;
int subLength = (nameLength - lastIndex) - 1;
string businessName = tableName[(lastIndex + 1)..];
return businessName.Substring(0, 1).ToUpper() + tableName[1..].Replace("_", "");
//int firstIndex = tableName.IndexOf("_");//_前缀长度
//int nameLength = tableName.Length;
//int subLength = (nameLength - lastIndex) - 1;
//string businessName = tableName[(lastIndex + 1)..];
return tableName.Substring(0, 1).ToUpper() + tableName[1..].Replace("_", "");
}
/// <summary>
@ -427,9 +431,11 @@ namespace ZR.CodeGenerator
options.Data.Set("replaceDto", replaceDto);
options.Data.Set("options", dto.GenOptions);
options.Data.Set("genTable", dto.GenTable);
options.Data.Set("btns", dto.CheckedBtn);
//options.Data.Set("codeTool", new CodeGeneratorTool());
options.EnableCache = true;
//...其它数据
});
}
}
}

View File

@ -14,6 +14,10 @@ namespace ZR.CodeGenerator.Model
/// 生成代码的数据库类型 0、mysql 1、sqlserver
/// </summary>
public int DbType { get; set; }
/// <summary>
/// 生成的按钮功能
/// </summary>
public int[] CheckedBtn { get; set; }
public GenTable GenTable { get; set; }
public CodeGenerateOption GenOptions { get; set; }
#region

View File

@ -25,7 +25,7 @@ namespace ZR.CodeGenerator.Model
/// </summary>
public string ModelTypeName { get; set; }
//vue、api
public string VueViewFormResetHtml { get; set; }
//public string VueViewFormResetHtml { get; set; }
/// <summary>
/// 前端列表查询html
/// </summary>
@ -47,7 +47,10 @@ namespace ZR.CodeGenerator.Model
/// 查询条件
/// </summary>
public string QueryCondition { get; set; } = "";
public bool ShowBtnExport { get; set; }
public bool ShowBtnAdd { get; set; }
public bool ShowBtnEdit { get; set; }
public bool ShowBtnDelete { get; set; }
/// <summary>
/// 上传URL data
/// </summary>

View File

@ -95,10 +95,11 @@ export function updateGenTable(data) {
}
// 预览生成代码
export function previewTable(tableId) {
export function previewTable(tableId, data) {
return request({
url: '/tool/gen/preview/' + tableId,
method: 'get'
method: 'post',
data: data
})
}

View File

@ -29,17 +29,18 @@
</template>
</el-table-column>
<el-table-column prop="tableName" label="表名" sortable="custom" width="180" />
<el-table-column prop="tableComment" label="表描述" :show-overflow-tooltip="true"/>
<el-table-column prop="tableComment" label="表描述" :show-overflow-tooltip="true" />
<el-table-column prop="className" label="实体" />
<el-table-column prop="createTime" label="创建时间" />
<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="handlePreview(scope.row)" v-hasPermi="['tool:gen:preview']">预览</el-button>
<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-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="handleRefresh(scope.row)" v-hasPermi="['tool:gen:refresh']">同步</el-button>
<el-button type="text" icon="el-icon-download" @click="handleShowDialog(scope.row)" v-hasPermi="['tool:gen:code']">生成代码</el-button>
<!-- <el-button type="text" icon="el-icon-refresh" @click="handleRefresh(scope.row)" v-hasPermi="['tool:gen:refresh']">同步</el-button> -->
<el-button type="text" icon="el-icon-download" @click="handleShowDialog(scope.row, 'generate')" v-hasPermi="['tool:gen:code']">生成代码
</el-button>
</template>
</el-table-column>
</el-table>
@ -56,9 +57,24 @@
</el-dialog>
<import-table ref="import" @ok="handleSearch" />
<el-dialog :visible.sync="showGenerate" title="代码生成" width="800px">
<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>
@ -103,7 +119,8 @@ export default {
activeName: "0",
},
showGenerate: false,
checkedCodeGenerateForm: [1, 2, 3, 4, 5, 6, 7, 8],
// button
checkedBtnForm: [1, 2, 3],
rules: {},
//
tableData: [],
@ -151,15 +168,28 @@ export default {
},
//
handlePreview(row) {
previewTable(row.tableId).then((res) => {
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;
}
});
},
handleShowDialog(row) {
//
handleShowDialog(row, type) {
this.showGenerate = true;
if (type == "generate") {
this.preview.title = "代码生成";
}
if (type == "preview") {
this.preview.title = "预览";
}
this.currentSelected = row;
},
/**
@ -167,6 +197,10 @@ export default {
*/
handleGenerate: async function () {
console.log(JSON.stringify(this.currentSelected));
if (this.preview.title == "预览") {
this.handlePreview(this.currentSelected);
return;
}
if (!this.currentSelected) {
this.msgError("请先选择要生成代码的数据表");
return false;
@ -184,8 +218,7 @@ export default {
var seachdata = {
tableId: this.currentSelected.tableId,
tableName: this.currentSelected.name,
// genCodeFiles: this.checkedCodeGenerateForm,
// coverd: this.coverd,
checkedBtn: this.checkedBtnForm,
dbType: this.dbType,
// queryColumn: this.checkedQueryColumn,
};