优化代码生成模板
This commit is contained in:
parent
d08ecdd563
commit
84aeb9b27b
@ -17,6 +17,10 @@
|
||||
<Compile Remove="Middleware\RequestIPMiddleware.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="wwwroot\CodeGenTemplate\VueTemplate.txt" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="EPPlus" Version="5.8.3" />
|
||||
<PackageReference Include="Hei.Captcha" Version="0.3.0" />
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
-- 菜单
|
||||
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', '', sysdate(), '${genTable.functionName}菜单');
|
||||
VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${genTable.BusinessName}/index', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', '', sysdate(), '${genTable.functionName}菜单');
|
||||
|
||||
-- 按钮父菜单id
|
||||
SELECT @menuId := LAST_INSERT_ID();
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
-- ${genTable.functionName}菜单
|
||||
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_time, remark)
|
||||
VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${replaceDto.ModelTypeName}', '${genTable.ModuleName}/${replaceDto.ViewsFileName}/index', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', GETDATE(), '${genTable.functionName}');
|
||||
VALUES ('${genTable.functionName}', ${parentId}, 1, '${genTable.ModuleName}/${genTable.BusinessName}', '${genTable.ModuleName}/${genTable.BusinessName}', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', 'icon1', GETDATE(), '${genTable.functionName}');
|
||||
|
||||
-- 按钮父菜单id
|
||||
declare @menuId int = @@identity
|
||||
|
||||
@ -93,7 +93,11 @@ $end
|
||||
|
||||
return SUCCESS(_${replaceDto.ModelTypeName}Service.Insert(model, it => new
|
||||
{
|
||||
${InsertColumn}
|
||||
$foreach(item in genTable.Columns)
|
||||
$if((item.IsInsert))
|
||||
it.$item.CsharpField,
|
||||
$end
|
||||
${end}
|
||||
}));
|
||||
}
|
||||
|
||||
@ -116,7 +120,11 @@ ${InsertColumn}
|
||||
var response = _${replaceDto.ModelTypeName}Service.Update(w => w.${replaceDto.PKName} == model.${replaceDto.PKName}, it => new ${replaceDto.ModelTypeName}()
|
||||
{
|
||||
//Update 字段映射
|
||||
${UpdateColumn}
|
||||
$foreach(item in genTable.Columns)
|
||||
$if((item.IsEdit))
|
||||
$item.CsharpField = model.$item.CsharpField,
|
||||
$end
|
||||
${end}
|
||||
});
|
||||
|
||||
return SUCCESS(response);
|
||||
|
||||
@ -10,7 +10,7 @@ namespace ${options.ModelsNamespace}.Models
|
||||
/// @author ${replaceDto.Author}
|
||||
/// @date ${replaceDto.AddTime}
|
||||
/// </summary>
|
||||
[SugarTable("${replaceDto.TableName}")]
|
||||
[SugarTable("${genTable.TableName}")]
|
||||
public class ${replaceDto.ModelTypeName}
|
||||
{
|
||||
$foreach(item in genTable.Columns)
|
||||
|
||||
265
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt
Normal file
265
ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt
Normal file
@ -0,0 +1,265 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- :model属性用于表单验证使用 比如下面的el-form-item 的 prop属性用于对表单值进行验证操作 -->
|
||||
<el-form :model="queryParams" label-position="left" inline ref="queryForm" :label-width="labelWidth" v-show="showSearch" @submit.native.prevent>
|
||||
${vueQueryFormHtml}
|
||||
<el-row class="mb8" style="text-align:center">
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<!-- 工具区域 -->
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" v-hasPermi="['${replaceDto.PermissionPrefix}:add']" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" :disabled="single" v-hasPermi="['${replaceDto.PermissionPrefix}:update']" plain icon="el-icon-edit" size="mini" @click="handleUpdate">修改</el-button>
|
||||
</el-col>
|
||||
<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>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<!-- 数据区域 -->
|
||||
<el-table :data="dataList" ref="table" border @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="50" />
|
||||
${VueViewListContent}
|
||||
<el-table-column label="操作" align="center" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button v-hasPermi="['${replaceDto.PermissionPrefix}:update']" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||
<el-popconfirm title="确定删除吗?" @confirm="handleDelete(scope.row)" style="margin-left:10px">
|
||||
<el-button slot="reference" v-hasPermi="['${replaceDto.PermissionPrefix}:delete']" type="text" icon="el-icon-delete">删除</el-button>
|
||||
</el-popconfirm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination class="mt10" background :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
|
||||
|
||||
<!-- 添加或修改菜单对话框 -->
|
||||
<el-dialog :title="title" :lock-scroll="false" :visible.sync="open" >
|
||||
<el-form ref="form" :model="form" :rules="rules" :label-width="formLabelWidth">
|
||||
<el-row>
|
||||
${VueViewFormContent}
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer" v-if="btnSubmitVisible">
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
list${genTable.BusinessName},
|
||||
add${genTable.BusinessName},
|
||||
del${genTable.BusinessName},
|
||||
update${genTable.BusinessName},
|
||||
get${genTable.BusinessName}
|
||||
} from '@/api/${genTable.ModuleName}/${lowerBusinessName}.js';
|
||||
|
||||
export default {
|
||||
name: "${genTable.BusinessName}",
|
||||
data() {
|
||||
return {
|
||||
labelWidth: "100px",
|
||||
formLabelWidth:"100px",
|
||||
// 选中${replaceDto.PKName}数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 查询参数
|
||||
queryParams: {},
|
||||
// 弹出层标题
|
||||
title: "",
|
||||
// 是否显示弹出层
|
||||
open: false,
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 时间范围数组
|
||||
timeRange: [],
|
||||
$foreach(item in genTable.Columns)
|
||||
$if((item.HtmlType == "radio" || item.HtmlType == "select"))
|
||||
// ${item.ColumnComment}选项列表
|
||||
${item.CsharpField2}Options: [],
|
||||
$end
|
||||
$end
|
||||
$if(replaceDto.UploadFile == 1)
|
||||
//文件上传地址
|
||||
uploadUrl: process.env.VUE_APP_BASE_API + "upload/SaveFile",
|
||||
$end
|
||||
// 数据列表
|
||||
dataList: [],
|
||||
// 总记录数
|
||||
total: 0,
|
||||
// 提交按钮是否显示
|
||||
btnSubmitVisible: true,
|
||||
// 表单校验
|
||||
rules: {
|
||||
${VueViewEditFormRuleContent}
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
// 列表数据查询
|
||||
this.getList();
|
||||
|
||||
$foreach(item in genTable.Columns)
|
||||
$if((item.HtmlType == "radio" || item.HtmlType == "select") && item.DictType != "")
|
||||
this.getDicts("${item.DictType}").then((response) => {
|
||||
this.${item.CsharpField2}Options = response.data;
|
||||
})
|
||||
$end
|
||||
$end
|
||||
},
|
||||
methods: {
|
||||
// 查询数据
|
||||
getList() {
|
||||
console.log(JSON.stringify(this.queryParams));
|
||||
list${genTable.BusinessName}(this.addDateRange(this.queryParams, this.timeRange)).then(res => {
|
||||
if (res.code == 200) {
|
||||
this.dataList = res.data.result;
|
||||
this.total = res.data.totalNum;
|
||||
}
|
||||
})
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
this.open = false;
|
||||
this.reset();
|
||||
},
|
||||
// 重置数据表单
|
||||
reset() {
|
||||
this.form = {
|
||||
$foreach(item in genTable.Columns)
|
||||
$if((item.IsEdit || item.IsInsert))
|
||||
$item.ColumnName: undefined,
|
||||
$end
|
||||
$end
|
||||
};
|
||||
this.resetForm("form");
|
||||
},
|
||||
/** 重置查询操作 */
|
||||
resetQuery() {
|
||||
this.timeRange = [];
|
||||
this.resetForm("queryForm");
|
||||
this.queryParams = {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
//TODO 重置字段
|
||||
};
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map((item) => item.${replaceDto.PKName});
|
||||
this.single = selection.length != 1
|
||||
this.multiple = !selection.length;
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
this.getList();
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加";
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const Ids = row.${replaceDto.PKName} || this.ids;
|
||||
del${genTable.BusinessName}(Ids).then((res) => {
|
||||
this.msgSuccess("删除成功");
|
||||
this.handleQuery();
|
||||
});
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const ${replaceDto.PKName} = row.${replaceDto.PKName} || this.ids;
|
||||
get${genTable.BusinessName}(${replaceDto.PKName}).then((res) => {
|
||||
if (res.code == 200) {
|
||||
this.form = res.data;
|
||||
this.open = true;
|
||||
this.title = "修改数据";
|
||||
}
|
||||
});
|
||||
},
|
||||
$if(replaceDto.UploadFile == 1)
|
||||
//文件上传前判断方法
|
||||
beforeFileUpload(file) {
|
||||
const isJPG = file.type === "image/jpeg";
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
if (!isJPG) {
|
||||
this.msgError("上传图片只能是 JPG 格式!");
|
||||
}
|
||||
if (!isLt2M) {
|
||||
this.msgError("上传图片大小不能超过 2MB!");
|
||||
}
|
||||
return isJPG && isLt2M;
|
||||
},
|
||||
$end
|
||||
$foreach(item in genTable.Columns)
|
||||
$if((item.HtmlType == "imageUpload" || item.HtmlType == "fileUpload"))
|
||||
//${item.ColumnComment}上传成功方法
|
||||
handleUpload${item.CsharpField}Success(res, file) {
|
||||
this.form.$item.ColumnName = res.data;
|
||||
// this.form.$item.ColumnName = URL.createObjectURL(file.raw);
|
||||
// this.${refs}refs.upload.clearFiles();
|
||||
},
|
||||
$elseif((item.HtmlType == "radio" || item.HtmlType == "select") && item.DictType != "")
|
||||
// ${item.ColumnComment}字典翻译
|
||||
${item.ColumnName}Format(row, column) {
|
||||
return this.selectDictLabel(this.${item.ColumnName}Options, row.${item.ColumnName});
|
||||
},
|
||||
$end
|
||||
$end
|
||||
/** 提交按钮 */
|
||||
submitForm: function () {
|
||||
this.${refs}refs["form"].validate((valid) => {
|
||||
if (valid) {
|
||||
console.log(JSON.stringify(this.form));
|
||||
|
||||
if (this.form.${replaceDto.PKName} != undefined || this.title === "修改数据") {
|
||||
update${genTable.BusinessName}(this.form).then((res) => {
|
||||
if (!res.data) {
|
||||
this.msgError("修改失败");
|
||||
return;
|
||||
}
|
||||
this.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
add${genTable.BusinessName}(this.form).then((res) => {
|
||||
if (!res.data) {
|
||||
this.msgError("新增失败");
|
||||
return;
|
||||
}
|
||||
this.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.table-td-thumb {
|
||||
width: 80px;
|
||||
}
|
||||
</style>
|
||||
@ -4,7 +4,7 @@
|
||||
* ${genTable.functionName}分页查询
|
||||
* @param {查询条件} data
|
||||
*/
|
||||
export function list${replaceDto.ModelTypeName}(query) {
|
||||
export function list${genTable.BusinessName}(query) {
|
||||
return request({
|
||||
url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/list',
|
||||
method: 'get',
|
||||
@ -16,7 +16,7 @@ export function list${replaceDto.ModelTypeName}(query) {
|
||||
* 新增${genTable.functionName}
|
||||
* @param data
|
||||
*/
|
||||
export function add${replaceDto.ModelTypeName}(data) {
|
||||
export function add${genTable.BusinessName}(data) {
|
||||
return request({
|
||||
url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}',
|
||||
method: 'post',
|
||||
@ -28,7 +28,7 @@ export function add${replaceDto.ModelTypeName}(data) {
|
||||
* 修改${genTable.functionName}
|
||||
* @param data
|
||||
*/
|
||||
export function update${replaceDto.ModelTypeName}(data) {
|
||||
export function update${genTable.BusinessName}(data) {
|
||||
return request({
|
||||
url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}',
|
||||
method: 'PUT',
|
||||
@ -40,7 +40,7 @@ export function update${replaceDto.ModelTypeName}(data) {
|
||||
* 获取${genTable.functionName}详情
|
||||
* @param {Id}
|
||||
*/
|
||||
export function get${replaceDto.ModelTypeName}(id) {
|
||||
export function get${genTable.BusinessName}(id) {
|
||||
return request({
|
||||
url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/' + id,
|
||||
method: 'get'
|
||||
@ -51,7 +51,7 @@ export function get${replaceDto.ModelTypeName}(id) {
|
||||
* 删除${genTable.functionName}
|
||||
* @param {主键} pid
|
||||
*/
|
||||
export function del${replaceDto.ModelTypeName}(pid) {
|
||||
export function del${genTable.BusinessName}(pid) {
|
||||
return request({
|
||||
url: '${genTable.ModuleName}/${replaceDto.ModelTypeName}/' + pid,
|
||||
method: 'delete'
|
||||
@ -42,39 +42,6 @@ namespace ZR.CodeGenerator
|
||||
|
||||
#region vue 模板
|
||||
|
||||
/// <summary>
|
||||
/// 生成vuejs模板,目前只有上传文件方法
|
||||
/// </summary>
|
||||
/// <param name="dbFieldInfo"></param>
|
||||
/// <param name="replaceDto"></param>
|
||||
/// <returns></returns>
|
||||
public static void TplVueJsMethod(GenTableColumn dbFieldInfo, ReplaceDto replaceDto)
|
||||
{
|
||||
string columnName = dbFieldInfo.ColumnName;
|
||||
var sb = new StringBuilder();
|
||||
|
||||
if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD))
|
||||
{
|
||||
sb.AppendLine($" //文件上传成功方法");
|
||||
sb.AppendLine($" handleUpload{dbFieldInfo.CsharpField}Success(res, file) {{");
|
||||
sb.AppendLine($" this.form.{columnName} = res.data;");
|
||||
sb.AppendLine($" // this.form.{columnName} = URL.createObjectURL(file.raw);");
|
||||
sb.AppendLine($" // this.$refs.upload.clearFiles();");
|
||||
sb.AppendLine($" }},");
|
||||
replaceDto.VueBeforeUpload = TplJsBeforeUpload();
|
||||
replaceDto.VueUploadUrl = TplJsUploadUrl();
|
||||
}
|
||||
//有下拉框选项初列表查询数据
|
||||
if ((dbFieldInfo.HtmlType == GenConstants.HTML_SELECT || dbFieldInfo.HtmlType == GenConstants.HTML_RADIO) && !string.IsNullOrEmpty(dbFieldInfo.DictType))
|
||||
{
|
||||
sb.AppendLine(@$" // {dbFieldInfo.ColumnComment}字典翻译");
|
||||
sb.AppendLine($" {columnName}Format(row, column) {{");
|
||||
sb.AppendLine(@$" return this.selectDictLabel(this.{columnName}Options, row.{columnName});");
|
||||
sb.AppendLine(@" },");
|
||||
}
|
||||
replaceDto.VueJsMethod += sb.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Vue rules
|
||||
/// </summary>
|
||||
@ -264,15 +231,6 @@ namespace ZR.CodeGenerator
|
||||
sb.AppendLine(" </template>");
|
||||
sb.AppendLine(" </el-table-column>");
|
||||
}
|
||||
//else if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_RADIO))
|
||||
//{
|
||||
// vueViewListContent += $" <el-table-column prop=\"{columnName}\" label=\"{label}\" width=\"120\" >\r\n";
|
||||
// vueViewListContent += " <template slot-scope=\"scope\">\r\n";
|
||||
// vueViewListContent += $" <el-tag :type=\"scope.row.{columnName} === true ? 'success' : 'info'\" disable-transitions >";
|
||||
// vueViewListContent += $" {{scope.row.{columnName}===true?'启用':'禁用'}} </el-tag>\r\n";
|
||||
// vueViewListContent += " </template>\r\n";
|
||||
// vueViewListContent += " </el-table-column>\r\n";
|
||||
//}
|
||||
else if (dbFieldInfo.IsList)
|
||||
{
|
||||
sb.AppendLine($" <el-table-column prop=\"{columnName}\" label=\"{label}\" align=\"center\" {showToolTip}{formatter}/>");
|
||||
@ -280,36 +238,6 @@ namespace ZR.CodeGenerator
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 文件上传前方法判断
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string TplJsBeforeUpload()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine(@" //文件上传前判断方法");
|
||||
sb.AppendLine(@" beforeFileUpload(file) {");
|
||||
sb.AppendLine(@" const isJPG = file.type === ""image/jpeg"";");
|
||||
sb.AppendLine(@" const isLt2M = file.size / 1024 / 1024 < 2;");
|
||||
sb.AppendLine(@" if (!isJPG) {");
|
||||
sb.AppendLine(@" this.msgError(""上传图片只能是 JPG 格式!"");");
|
||||
sb.AppendLine(@" }");
|
||||
sb.AppendLine(@" if (!isLt2M) {");
|
||||
sb.AppendLine(@" this.msgError(""上传图片大小不能超过 2MB!"");");
|
||||
sb.AppendLine(@" }");
|
||||
sb.AppendLine(@" return isJPG && isLt2M;");
|
||||
sb.AppendLine(@" },");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
public static string TplJsUploadUrl()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine(@" //文件上传前判断方法");
|
||||
sb.AppendLine(@" uploadUrl: process.env.VUE_APP_BASE_API + ""upload/SaveFile"",");
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
#endregion
|
||||
|
||||
public static string QueryExp(string propertyName, string queryType)
|
||||
|
||||
@ -5,7 +5,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using ZR.CodeGenerator.Model;
|
||||
using ZR.Model.System.Generate;
|
||||
|
||||
@ -51,59 +50,33 @@ namespace ZR.CodeGenerator
|
||||
string PKType = "int";
|
||||
ReplaceDto replaceDto = new();
|
||||
replaceDto.ModelTypeName = dto.GenTable.ClassName;//表名对应C# 实体类名
|
||||
replaceDto.TableName = dto.GenTable.TableName;//表名
|
||||
replaceDto.PermissionPrefix = $"{dto.GenTable.ModuleName}:{dto.GenTable.ClassName.ToLower()}";//权限
|
||||
replaceDto.Author = dto.GenTable.FunctionAuthor;
|
||||
replaceDto.ViewsFileName = FirstLowerCase(replaceDto.ModelTypeName);
|
||||
|
||||
StringBuilder sb1 = new StringBuilder();
|
||||
StringBuilder sb2 = new StringBuilder();
|
||||
//StringBuilder sb1 = new StringBuilder();
|
||||
//StringBuilder sb2 = new StringBuilder();
|
||||
|
||||
//循环表字段信息
|
||||
foreach (GenTableColumn dbFieldInfo in dto.GenTable.Columns)
|
||||
{
|
||||
string columnName = dbFieldInfo.ColumnName;
|
||||
|
||||
if (dbFieldInfo.IsInsert || dbFieldInfo.IsEdit)
|
||||
{
|
||||
replaceDto.VueViewFormResetHtml += $" {columnName}: undefined,\r\n";
|
||||
}
|
||||
if (dbFieldInfo.IsPk || dbFieldInfo.IsIncrement)
|
||||
{
|
||||
PKName = dbFieldInfo.CsharpField;
|
||||
PKType = dbFieldInfo.CsharpType;
|
||||
}
|
||||
//编辑字段
|
||||
if (dbFieldInfo.IsEdit)
|
||||
if (dbFieldInfo.HtmlType.Equals(GenConstants.HTML_IMAGE_UPLOAD))
|
||||
{
|
||||
replaceDto.UpdateColumn += $" {dbFieldInfo.CsharpField} = model.{dbFieldInfo.CsharpField}, \n";
|
||||
replaceDto.UploadFile = 1;
|
||||
}
|
||||
//新增字段
|
||||
if (dbFieldInfo.IsInsert)
|
||||
{
|
||||
replaceDto.InsertColumn += $" it.{dbFieldInfo.CsharpField}, \n";
|
||||
}
|
||||
if ((dbFieldInfo.HtmlType == GenConstants.HTML_SELECT || dbFieldInfo.HtmlType == GenConstants.HTML_RADIO) && !string.IsNullOrEmpty(dbFieldInfo.DictType))
|
||||
{
|
||||
sb1.AppendLine($" // {dbFieldInfo.ColumnComment}选项列表");
|
||||
sb1.AppendLine($" {FirstLowerCase(dbFieldInfo.CsharpField)}Options: [],");
|
||||
|
||||
sb2.AppendLine($" this.getDicts(\"{dbFieldInfo.DictType}\").then((response) => {{");
|
||||
sb2.AppendLine($" this.{FirstLowerCase(dbFieldInfo.CsharpField)}Options = response.data;");
|
||||
sb2.AppendLine(" })");
|
||||
}
|
||||
|
||||
CodeGenerateTemplate.GetQueryDtoProperty(dbFieldInfo, replaceDto);
|
||||
CodeGenerateTemplate.TplVueJsMethod(dbFieldInfo, replaceDto);
|
||||
|
||||
replaceDto.VueViewFormHtml += CodeGenerateTemplate.TplVueFormContent(dbFieldInfo);
|
||||
replaceDto.VueViewListHtml += CodeGenerateTemplate.TplTableColumn(dbFieldInfo);
|
||||
replaceDto.VueViewEditFormRuleContent += CodeGenerateTemplate.TplFormRules(dbFieldInfo);
|
||||
replaceDto.VueQueryFormHtml += CodeGenerateTemplate.TplQueryFormHtml(dbFieldInfo);
|
||||
}
|
||||
replaceDto.VueDataContent = sb1.ToString();
|
||||
replaceDto.MountedMethod = sb2.ToString();
|
||||
replaceDto.VueJsMethod += replaceDto.VueBeforeUpload;
|
||||
replaceDto.VueDataContent += replaceDto.VueUploadUrl;
|
||||
|
||||
replaceDto.PKName = PKName;
|
||||
replaceDto.PKType = PKType;
|
||||
@ -112,7 +85,6 @@ namespace ZR.CodeGenerator
|
||||
GenerateModels(replaceDto, dto);
|
||||
GenerateInputDto(replaceDto, dto);
|
||||
GenerateRepository(replaceDto, dto);
|
||||
GenerateIService(replaceDto, dto);
|
||||
GenerateService(replaceDto, dto);
|
||||
GenerateControllers(replaceDto, dto);
|
||||
GenerateVueViews(replaceDto, dto);
|
||||
@ -171,7 +143,6 @@ namespace ZR.CodeGenerator
|
||||
private static void GenerateRepository(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
var fullPath = Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, "Repositories", $"{replaceDto.ModelTypeName}Repository.cs");
|
||||
|
||||
var tpl = FileHelper.ReadJtTemplate("TplRepository.txt");
|
||||
|
||||
var result = tpl.Render();
|
||||
@ -181,20 +152,6 @@ namespace ZR.CodeGenerator
|
||||
#endregion
|
||||
|
||||
#region 生成Service
|
||||
/// <summary>
|
||||
/// 生成IService文件
|
||||
/// </summary>
|
||||
/// <param name="generateDto"></param>
|
||||
/// <param name="replaceDto">替换实体</param>
|
||||
private static void GenerateIService(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
var fullPath = Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, "Business", "IBusService", $"I{replaceDto.ModelTypeName}Service.cs");
|
||||
|
||||
var tpl = FileHelper.ReadJtTemplate("IServiceTemplate.txt");
|
||||
|
||||
var result = tpl.Render();
|
||||
generateDto.GenCodes.Add(new GenCode(4, "IService", fullPath, result));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生成Service文件
|
||||
@ -202,11 +159,16 @@ namespace ZR.CodeGenerator
|
||||
private static void GenerateService(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, "Business", $"{replaceDto.ModelTypeName}Service.cs");
|
||||
|
||||
var tpl = FileHelper.ReadJtTemplate("ServiceTemplate.txt");
|
||||
var tpl = FileHelper.ReadJtTemplate("TplService.txt");
|
||||
|
||||
var result = tpl.Render();
|
||||
generateDto.GenCodes.Add(new GenCode(4, "Service", fullPath, result));
|
||||
|
||||
var fullPath2 = Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, "Business", "IBusService", $"I{replaceDto.ModelTypeName}Service.cs");
|
||||
var tpl2 = FileHelper.ReadJtTemplate("TplIService.txt");
|
||||
|
||||
var result2 = tpl2.Render();
|
||||
generateDto.GenCodes.Add(new GenCode(4, "IService", fullPath2, result2));
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -215,45 +177,12 @@ namespace ZR.CodeGenerator
|
||||
/// <summary>
|
||||
/// 生成控制器ApiControllers文件
|
||||
/// </summary>
|
||||
//private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
//{
|
||||
// var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", generateDto.GenTable.ModuleName, $"{replaceDto.ModelTypeName}Controller.cs");
|
||||
|
||||
// var content = FileHelper.ReadTemplate("ControllersTemplate.txt")
|
||||
// .Replace("{ApiControllerNamespace}", _option.ApiControllerNamespace)
|
||||
// .Replace("{ServicesNamespace}", _option.ServicesNamespace)
|
||||
// .Replace("{ModelsNamespace}", _option.ModelsNamespace)
|
||||
// .Replace("{FunctionName}", generateDto.GenTable.FunctionName)
|
||||
// .Replace("{ModelName}", replaceDto.ModelTypeName)
|
||||
// .Replace("{Permission}", replaceDto.Permission)
|
||||
// .Replace("{PrimaryKey}", replaceDto.PKName)
|
||||
// .Replace("{ModuleName}", generateDto.GenTable.ModuleName)
|
||||
// .Replace("{PKCsharpType}", replaceDto.PKType)
|
||||
// .Replace("{Author}", replaceDto.Author)
|
||||
// .Replace("{DateTime}", replaceDto.AddTime);
|
||||
|
||||
// if (replaceDto.UpdateColumn != null)
|
||||
// {
|
||||
// content = content.Replace("{UpdateColumn}", replaceDto.UpdateColumn.TrimEnd('\n'));
|
||||
// }
|
||||
// if (replaceDto.InsertColumn != null)
|
||||
// {
|
||||
// content = content.Replace("{InsertColumn}", replaceDto.InsertColumn.TrimEnd('\n'));
|
||||
// }
|
||||
// if (replaceDto.QueryCondition != null)
|
||||
// {
|
||||
// content = content.Replace("{QueryCondition}", replaceDto.QueryCondition);
|
||||
// }
|
||||
// generateDto.GenCodes.Add(new GenCode(5, "控制器", fullPath, content));
|
||||
//}
|
||||
private static void GenerateControllers(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
var fullPath = Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", generateDto.GenTable.ModuleName, $"{replaceDto.ModelTypeName}Controller.cs");
|
||||
|
||||
var tpl = FileHelper.ReadJtTemplate("TplControllers.txt");
|
||||
|
||||
tpl.Set("QueryCondition", replaceDto.QueryCondition);
|
||||
tpl.Set("InsertColumn", replaceDto.InsertColumn.TrimEnd('\n'));
|
||||
tpl.Set("UpdateColumn", replaceDto.UpdateColumn.TrimEnd('\n'));
|
||||
var result = tpl.Render();
|
||||
generateDto.GenCodes.Add(new GenCode(5, "Controller", fullPath, result));
|
||||
}
|
||||
@ -264,24 +193,17 @@ namespace ZR.CodeGenerator
|
||||
/// 6、生成Vue页面
|
||||
private static void GenerateVueViews(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName, replaceDto.ViewsFileName, "index.vue");
|
||||
var fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName, $"{generateDto.GenTable.BusinessName}.vue");
|
||||
|
||||
var content = FileHelper.ReadTemplate("VueTemplate.txt")
|
||||
.Replace("{fileClassName}", replaceDto.ViewsFileName)
|
||||
.Replace("{VueViewListContent}", replaceDto.VueViewListHtml)//查询 table列
|
||||
.Replace("{VueViewFormContent}", replaceDto.VueViewFormHtml)//添加、修改表单
|
||||
.Replace("{ModelTypeName}", replaceDto.ModelTypeName)
|
||||
.Replace("{Permission}", replaceDto.PermissionPrefix)
|
||||
.Replace("{VueViewFormResetHtml}", replaceDto.VueViewFormResetHtml)
|
||||
.Replace("{vueJsMethod}", replaceDto.VueJsMethod)
|
||||
.Replace("{vueQueryFormHtml}", replaceDto.VueQueryFormHtml)
|
||||
.Replace("{VueDataContent}", replaceDto.VueDataContent)
|
||||
.Replace("{PrimaryKey}", FirstLowerCase(replaceDto.PKName))
|
||||
.Replace("{MountedMethod}", replaceDto.MountedMethod)
|
||||
.Replace("{ModuleName}", generateDto.GenTable.ModuleName)
|
||||
.Replace("{VueViewEditFormRuleContent}", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则
|
||||
var tpl = FileHelper.ReadJtTemplate("TplVue.txt");
|
||||
tpl.Set("vueQueryFormHtml", replaceDto.VueQueryFormHtml);
|
||||
tpl.Set("VueViewEditFormRuleContent", replaceDto.VueViewEditFormRuleContent);//添加、修改表单验证规则
|
||||
tpl.Set("VueViewFormContent", replaceDto.VueViewFormHtml);//添加、修改表单
|
||||
tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列
|
||||
tpl.Set("lowerBusinessName", FirstLowerCase(generateDto.GenTable.BusinessName));
|
||||
|
||||
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, content));
|
||||
var result = tpl.Render();
|
||||
generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result));
|
||||
}
|
||||
/// <summary>
|
||||
/// 7、生成vue页面api
|
||||
@ -291,9 +213,8 @@ namespace ZR.CodeGenerator
|
||||
/// <returns></returns>
|
||||
public static void GenerateVueJs(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
string fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", generateDto.GenTable.ModuleName, replaceDto.ViewsFileName + ".js");
|
||||
|
||||
var tpl = FileHelper.ReadJtTemplate("VueJsTemplate.txt");
|
||||
string fullPath = Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", generateDto.GenTable.ModuleName, FirstLowerCase(generateDto.GenTable.BusinessName) + ".js");
|
||||
var tpl = FileHelper.ReadJtTemplate("TplVueApi.txt");
|
||||
|
||||
var result = tpl.Render();
|
||||
generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result));
|
||||
@ -301,11 +222,11 @@ namespace ZR.CodeGenerator
|
||||
|
||||
#endregion
|
||||
|
||||
#region 8、生成SQL
|
||||
#region 生成SQL
|
||||
|
||||
public static void GenerateSql(ReplaceDto replaceDto, GenerateDto generateDto)
|
||||
{
|
||||
string fullPath = Path.Combine(generateDto.GenCodePath, replaceDto.ViewsFileName + ".sql");
|
||||
string fullPath = Path.Combine(generateDto.GenCodePath, generateDto.GenTable.BusinessName + ".sql");
|
||||
|
||||
var tempName = "";
|
||||
switch (generateDto.DbType)
|
||||
@ -363,7 +284,7 @@ namespace ZR.CodeGenerator
|
||||
{
|
||||
int lastIndex = tableName.LastIndexOf("_");
|
||||
int nameLength = tableName.Length;
|
||||
string businessName = tableName.Substring(nameLength - lastIndex + 1);
|
||||
string businessName = tableName[(nameLength - lastIndex + 1)..];
|
||||
return businessName.ToLower();
|
||||
}
|
||||
|
||||
@ -512,7 +433,7 @@ namespace ZR.CodeGenerator
|
||||
options.TagFlag = '$';
|
||||
options.OutMode = OutMode.Auto;
|
||||
//options.DisableeLogogram = true;//禁用简写
|
||||
options.Data.Set("${flag}", "$");//特殊标签替换
|
||||
options.Data.Set("refs", "$");//特殊标签替换
|
||||
options.Data.Set("replaceDto", replaceDto);
|
||||
options.Data.Set("options", dto.GenOptions);
|
||||
options.Data.Set("genTable", dto.GenTable);
|
||||
|
||||
@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ZR.Model.System.Generate;
|
||||
|
||||
namespace ZR.CodeGenerator.Model
|
||||
{
|
||||
@ -25,19 +20,6 @@ namespace ZR.CodeGenerator.Model
|
||||
/// C#类名
|
||||
/// </summary>
|
||||
public string ModelTypeName { get; set; }
|
||||
/// <summary>
|
||||
/// 数据库表名
|
||||
/// </summary>
|
||||
public string TableName { get; set; }
|
||||
/// <summary>
|
||||
/// 修改列
|
||||
/// </summary>
|
||||
public string UpdateColumn { get; set; }
|
||||
/// <summary>
|
||||
/// 插入列
|
||||
/// </summary>
|
||||
public string InsertColumn { get; set; }
|
||||
|
||||
//vue、api
|
||||
public string VueViewFormResetHtml { get; set; }
|
||||
/// <summary>
|
||||
@ -52,10 +34,7 @@ namespace ZR.CodeGenerator.Model
|
||||
/// 前端搜索表单html
|
||||
/// </summary>
|
||||
public string VueQueryFormHtml { get; set; }
|
||||
/// <summary>
|
||||
/// vue js方法
|
||||
/// </summary>
|
||||
public string VueJsMethod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// vue 添加、编辑表单规则
|
||||
/// </summary>
|
||||
@ -64,32 +43,12 @@ namespace ZR.CodeGenerator.Model
|
||||
/// 查询条件
|
||||
/// </summary>
|
||||
public string QueryCondition { get; set; } = "";
|
||||
///// <summary>
|
||||
///// 查询属性
|
||||
///// </summary>
|
||||
//public string QueryProperty { get; set; }
|
||||
/// <summary>
|
||||
/// vue data内容
|
||||
/// </summary>
|
||||
public string VueDataContent { get; set; }
|
||||
/// <summary>
|
||||
/// vue mounted 方法
|
||||
/// </summary>
|
||||
public string MountedMethod { get; set; }
|
||||
/// <summary>
|
||||
/// views、js文件名
|
||||
/// </summary>
|
||||
public string ViewsFileName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 上传前js
|
||||
/// </summary>
|
||||
public string VueBeforeUpload { get; set; }
|
||||
/// <summary>
|
||||
/// 上传URL data
|
||||
/// </summary>
|
||||
public string VueUploadUrl { get; set; }
|
||||
//public bool UploadImage{ get; set; }
|
||||
//public string VueUploadUrl { get; set; }
|
||||
public int UploadFile { get; set; } = 0;
|
||||
public string Author { get; set; }
|
||||
public string AddTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd");
|
||||
}
|
||||
|
||||
@ -14,6 +14,7 @@ namespace ZR.Common
|
||||
public static long[] SpitLongArrary(string str)
|
||||
{
|
||||
if (string.IsNullOrEmpty(str)) { return Array.Empty<long>(); }
|
||||
str = str.TrimStart(',').TrimEnd(',');
|
||||
string[] strIds = str.Split(',', (char)StringSplitOptions.RemoveEmptyEntries);
|
||||
long[] infoIdss = Array.ConvertAll(strIds, s => long.Parse(s));
|
||||
return infoIdss;
|
||||
|
||||
@ -25,6 +25,14 @@ namespace ZR.Model.System.Generate
|
||||
public string ColumnType { get; set; }
|
||||
public string CsharpType { get; set; }
|
||||
public string CsharpField { get; set; }
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
public string CsharpField2
|
||||
{
|
||||
get
|
||||
{
|
||||
return CsharpField.Substring(0, 1).ToLower() + CsharpField[1..];
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否主键(1是)
|
||||
/// </summary>
|
||||
@ -61,7 +69,7 @@ namespace ZR.Model.System.Generate
|
||||
/// <summary>
|
||||
/// 字典类型
|
||||
/// </summary>
|
||||
public string DictType { get; set; }
|
||||
public string DictType { get; set; } = "";
|
||||
|
||||
#region 额外字段
|
||||
[SugarColumn(IsIgnore = true)]
|
||||
@ -70,7 +78,7 @@ namespace ZR.Model.System.Generate
|
||||
get
|
||||
{
|
||||
string[] arr = new string[] { "int", "long" };
|
||||
return (!IsRequired &&(arr.Any(f => f.Contains(CsharpType))) || typeof(DateTime).Name == CsharpType) ? "?" : "";
|
||||
return (!IsRequired && (arr.Any(f => f.Contains(CsharpType))) || typeof(DateTime).Name == CsharpType) ? "?" : "";
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user