Merge branch 'net5.0' into net6.0
This commit is contained in:
commit
b791233eaf
@ -144,5 +144,89 @@ namespace Infrastructure.Extensions
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 转换为Pascal风格-每一个单词的首字母大写
|
||||
/// </summary>
|
||||
/// <param name="fieldName">字段名</param>
|
||||
/// <param name="fieldDelimiter">分隔符</param>
|
||||
/// <returns></returns>
|
||||
public static string ConvertToPascal(this string fieldName, string fieldDelimiter)
|
||||
{
|
||||
string result = string.Empty;
|
||||
if (fieldName.Contains(fieldDelimiter))
|
||||
{
|
||||
//全部小写
|
||||
string[] array = fieldName.ToLower().Split(fieldDelimiter.ToCharArray());
|
||||
foreach (var t in array)
|
||||
{
|
||||
//首字母大写
|
||||
result += t.Substring(0, 1).ToUpper() + t[1..];
|
||||
}
|
||||
}
|
||||
else if (string.IsNullOrWhiteSpace(fieldName))
|
||||
{
|
||||
result = fieldName;
|
||||
}
|
||||
else if (fieldName.Length == 1)
|
||||
{
|
||||
result = fieldName.ToUpper();
|
||||
}
|
||||
else if (fieldName.Length == CountUpper(fieldName))
|
||||
{
|
||||
result = fieldName.Substring(0, 1).ToUpper() + fieldName[1..].ToLower();
|
||||
}
|
||||
else
|
||||
{
|
||||
result = fieldName.Substring(0, 1).ToUpper() + fieldName[1..];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 大写字母个数
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static int CountUpper(this string str)
|
||||
{
|
||||
int count1 = 0;
|
||||
char[] chars = str.ToCharArray();
|
||||
foreach (char num in chars)
|
||||
{
|
||||
if (num >= 'A' && num <= 'Z')
|
||||
{
|
||||
count1++;
|
||||
}
|
||||
//else if (num >= 'a' && num <= 'z')
|
||||
//{
|
||||
// count2++;
|
||||
//}
|
||||
}
|
||||
return count1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 转换为Camel风格-第一个单词小写,其后每个单词首字母大写
|
||||
/// </summary>
|
||||
/// <param name="fieldName">字段名</param>
|
||||
/// <param name="fieldDelimiter">分隔符</param>
|
||||
/// <returns></returns>
|
||||
public static string ConvertToCamel(this string fieldName, string fieldDelimiter)
|
||||
{
|
||||
//先Pascal
|
||||
string result = ConvertToPascal(fieldName, fieldDelimiter);
|
||||
//然后首字母小写
|
||||
if (result.Length == 1)
|
||||
{
|
||||
result = result.ToLower();
|
||||
}
|
||||
else
|
||||
{
|
||||
result = result.Substring(0, 1).ToLower() + result[1..];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
18
README.md
18
README.md
@ -26,7 +26,7 @@
|
||||
|
||||
## 🍿在线体验
|
||||
- 官方文档:http://www.izhaorui.cn/doc
|
||||
- vue3.x版本体验:http://www.izhaorui.cn/vue3
|
||||
- vue3.x版本体验:http://www.izhaorui.cn/vue-next-admin
|
||||
- vue2.x版本体验:http://www.izhaorui.cn/admin
|
||||
- 账号密码:admin/123456
|
||||
|
||||
@ -44,21 +44,21 @@
|
||||
Vue版前端技术栈 :基于vue2.x/vue3.x、vuex、vue-router 、vue-cli 、axios 和 element-ui/element plus,前端采用vscode工具开发
|
||||
|
||||
## 🍀后端技术
|
||||
核心框架:.Net5.0/.Net6.0 + Web API + sqlsugar + swagger + signalR + IpRateLimit
|
||||
- 核心框架:.Net5.0/.Net6.0 + Web API + sqlsugar + swagger + signalR + IpRateLimit
|
||||
|
||||
定时计划任务:Quartz.Net组件,支持执行程序集或者http网络请求
|
||||
- 定时计划任务:Quartz.Net组件,支持执行程序集或者http网络请求
|
||||
|
||||
安全支持:过滤器(数据权限过滤)、Sql注入、请求伪造
|
||||
- 安全支持:过滤器(数据权限过滤)、Sql注入、请求伪造
|
||||
|
||||
日志管理:NLog、登录日志、操作日志、定时任务日志
|
||||
- 日志管理:NLog、登录日志、操作日志、定时任务日志
|
||||
|
||||
工具类:验证码、丰富公共功能
|
||||
- 工具类:验证码、丰富公共功能
|
||||
|
||||
接口限流:支持接口限流,避免恶意请求导致服务层压力过大
|
||||
- 接口限流:支持接口限流,避免恶意请求导致服务层压力过大
|
||||
|
||||
代码生成:高效率开发,代码生成器可以一键生成所有代码
|
||||
- 代码生成:高效率开发,代码生成器可以一键生成所有代码
|
||||
|
||||
数据字典:支持数据字典,可以方便对一些状态进行管理
|
||||
- 数据字典:支持数据字典,可以方便对一些状态进行管理
|
||||
|
||||
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ $if(column.HtmlType == "datetime")
|
||||
$elseif(column.HtmlType == "select" || column.HtmlType == "radio")
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-select v-model="queryParams.${columnName}" placeholder="请选择${labelName}">
|
||||
<el-option v-for="item in ${column.DictType}" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"></el-option>
|
||||
<el-option v-for="item in $if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
$else
|
||||
@ -119,9 +119,9 @@ $elseif(column.HtmlType == "checkbox" || column.HtmlType == "select" || column.H
|
||||
<el-table-column prop="${columnName}" label="${labelName}" align="center">
|
||||
<template #default="scope">
|
||||
$if(column.HtmlType == "checkbox")
|
||||
<dict-tag :options="${column.DictType}" :value="scope.row.${columnName} ? scope.row.${columnName}.split(',') : []" />
|
||||
<dict-tag :options="$if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :value="scope.row.${columnName} ? scope.row.${columnName}.split(',') : []" />
|
||||
$else
|
||||
<dict-tag :options="${column.DictType}" :value="scope.row.${columnName}" />
|
||||
<dict-tag :options="$if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :value="scope.row.${columnName}" />
|
||||
$end
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -227,7 +227,7 @@ $elseif(column.HtmlType == "radio")
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-radio-group v-model="form.${columnName}">
|
||||
<el-radio v-for="item in ${column.DictType}" :key="item.dictValue" :label="${value}">{{item.dictLabel}}</el-radio>
|
||||
<el-radio v-for="item in $if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="${value}">{{item.dictLabel}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -247,7 +247,7 @@ $elseif(column.HtmlType == "select")
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-select v-model="form.${columnName}" placeholder="请选择${labelName}">
|
||||
<el-option v-for="item in ${column.DictType}" :key="item.dictValue" :label="item.dictLabel" :value="${value}"></el-option>
|
||||
<el-option v-for="item in $if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="item.dictLabel" :value="${value}"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -255,7 +255,7 @@ $elseif(column.HtmlType == "checkbox")
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-checkbox-group v-model="form.${columnName}Checked">
|
||||
<el-checkbox v-for="item in ${column.DictType}" :key="item.dictValue" :label="item.dictValue">{{item.dictLabel}}</el-checkbox>
|
||||
<el-checkbox v-for="item in $if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="item.dictValue">{{item.dictLabel}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -349,7 +349,7 @@ const formRef = ref()
|
||||
$foreach(item in genTable.Columns)
|
||||
$if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "checkbox"))
|
||||
// ${item.ColumnComment}选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
|
||||
const ${item.DictType} = ref([])
|
||||
const $if(item.DictType != "") ${item.DictType} $else ${item.CsharpFieldFl}Options$end = ref([])
|
||||
$elseif(item.HtmlType == "datetime" && item.IsQuery == true)
|
||||
// ${item.ColumnComment}时间范围
|
||||
const dateRange${item.CsharpField} = ref([])
|
||||
|
||||
@ -9,32 +9,40 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<!-- :model属性用于表单验证使用 比如下面的el-form-item 的 prop属性用于对表单值进行验证操作 -->
|
||||
<el-form :model="queryParams" label-position="right" inline ref="queryRef" v-show="showSearch"
|
||||
@submit.prevent>
|
||||
<el-form :model="queryParams" label-position="right" inline ref="queryRef" v-show="showSearch" @submit.prevent>
|
||||
$foreach(column in genTable.Columns)
|
||||
$set(labelName = "")
|
||||
$set(columnName = "")
|
||||
$set(numLabel = "")
|
||||
$if(column.IsQuery == true)
|
||||
$set(columnName = column.CsharpFieldFl)
|
||||
$if(column.ColumnComment != "")
|
||||
$set(labelName = column.ColumnComment)
|
||||
$else
|
||||
$set(labelName = column.CsharpFieldFl)
|
||||
$end
|
||||
$if(column.CsharpType == "int" || column.CsharpType == "long")
|
||||
$set(numLabel = ".number")
|
||||
$end
|
||||
|
||||
$set(columnName = column.CsharpFieldFl)
|
||||
$if(column.ColumnComment != "")
|
||||
$set(labelName = column.ColumnComment)
|
||||
$else
|
||||
$set(labelName = column.CsharpFieldFl)
|
||||
$end
|
||||
$if(column.CsharpType == "int" || column.CsharpType == "long")
|
||||
$set(numLabel = ".number")
|
||||
$end
|
||||
$if(column.HtmlType == "datetime")
|
||||
<el-form-item label="$labelName">
|
||||
<el-date-picker v-model="dateRange${column.CsharpField}" style="width: 240px" type="daterange" range-separator="-"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期" placeholder="请选择$labelName" :picker-options="{ firstDayOfWeek: 1}"></el-date-picker>
|
||||
<el-date-picker
|
||||
v-model="dateRange${column.CsharpField}"
|
||||
style="width: 240px"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
placeholder="请选择$labelName"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
:shortcuts="dateOptions"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
$elseif(column.HtmlType == "select" || column.HtmlType == "radio")
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-select v-model="queryParams.${columnName}" placeholder="请选择${labelName}">
|
||||
<el-option v-for="item in ${column.DictType}" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"></el-option>
|
||||
<el-option v-for="item in $if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
$else
|
||||
@ -112,9 +120,9 @@ $elseif(column.HtmlType == "checkbox" || column.HtmlType == "select" || column.H
|
||||
<el-table-column prop="${columnName}" label="${labelName}" align="center">
|
||||
<template #default="scope">
|
||||
$if(column.HtmlType == "checkbox")
|
||||
<dict-tag :options="${column.DictType}" :value="scope.row.${columnName} ? scope.row.${columnName}.split(',') : []" />
|
||||
<dict-tag :options="$if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :value="scope.row.${columnName} ? scope.row.${columnName}.split(',') : []" />
|
||||
$else
|
||||
<dict-tag :options="${column.DictType}" :value="scope.row.${columnName}" />
|
||||
<dict-tag :options="$if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :value="scope.row.${columnName}" />
|
||||
$end
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -203,7 +211,7 @@ $elseif(column.HtmlType == "radio")
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-radio-group v-model="form.${columnName}">
|
||||
<el-radio v-for="item in ${column.DictType}" :key="item.dictValue" :label="${value}">{{item.dictLabel}}</el-radio>
|
||||
<el-radio v-for="item in $if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="${value}">{{item.dictLabel}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -223,7 +231,7 @@ $elseif(column.HtmlType == "select")
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-select v-model="form.${columnName}" placeholder="请选择${labelName}">
|
||||
<el-option v-for="item in ${column.DictType}" :key="item.dictValue" :label="item.dictLabel" :value="${value}"></el-option>
|
||||
<el-option v-for="item in $if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="item.dictLabel" :value="${value}"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -231,7 +239,7 @@ $elseif(column.HtmlType == "checkbox")
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="${labelName}" prop="${columnName}">
|
||||
<el-checkbox-group v-model="form.${columnName}Checked">
|
||||
<el-checkbox v-for="item in ${column.DictType}" :key="item.dictValue" :label="item.dictValue">{{item.dictLabel}}</el-checkbox>
|
||||
<el-checkbox v-for="item in $if(column.DictType != "") ${column.DictType} $else ${column.CsharpFieldFl}Options$end" :key="item.dictValue" :label="item.dictValue">{{item.dictLabel}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -295,12 +303,10 @@ const open = ref(false)
|
||||
const state = reactive({
|
||||
form: {},
|
||||
rules: {
|
||||
$foreach(column in genTable.Columns)
|
||||
$foreach(column in genTable.Columns)
|
||||
$if(column.IsRequired && column.IsIncrement == false)
|
||||
${column.CsharpFieldFl}: [
|
||||
{ required: true, message: "${column.ColumnComment}不能为空", trigger: $if(column.htmlType == "select")"change"$else"blur"$end
|
||||
$if(column.CsharpType == "int" || column.CsharpType == "long"), type: "number"$end }
|
||||
],
|
||||
${column.CsharpFieldFl}: [{ required: true, message: "${column.ColumnComment}不能为空", trigger: $if(column.htmlType == "select")"change"$else"blur"$end
|
||||
$if(column.CsharpType == "int" || column.CsharpType == "long"), type: "number"$end }],
|
||||
$end
|
||||
$end
|
||||
}
|
||||
@ -315,7 +321,7 @@ const formRef = ref()
|
||||
$foreach(item in genTable.Columns)
|
||||
$if((item.HtmlType == "radio" || item.HtmlType == "select" || item.HtmlType == "checkbox"))
|
||||
// ${item.ColumnComment}选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
|
||||
const ${item.DictType} = ref([])
|
||||
const $if(item.DictType != "")${item.DictType}$else${item.CsharpFieldFl}Options$end = ref([])
|
||||
$elseif(item.HtmlType == "datetime" && item.IsQuery == true)
|
||||
// ${item.ColumnComment}时间范围
|
||||
const dateRange${item.CsharpField} = ref([])
|
||||
|
||||
@ -452,7 +452,7 @@ namespace ZR.CodeGenerator
|
||||
TableId = genTable.TableId,
|
||||
TableName = genTable.TableName,
|
||||
CsharpType = GetCSharpDatatype(column.DataType),
|
||||
CsharpField = column.DbColumnName.UnderScoreToCamelCase().FirstUpperCase(),
|
||||
CsharpField = column.DbColumnName.ConvertToPascal("_"),
|
||||
IsRequired = !column.IsNullable,
|
||||
IsIncrement = column.IsIdentity,
|
||||
Create_by = genTable.Create_by,
|
||||
|
||||
@ -71,12 +71,15 @@ namespace ZR.Service.System
|
||||
{
|
||||
SysDept info = DeptRepository.GetFirst(it => it.DeptId == dept.ParentId);
|
||||
//如果父节点不为正常状态,则不允许新增子节点
|
||||
if (!UserConstants.DEPT_NORMAL.Equals(info.Status))
|
||||
if (info != null && !UserConstants.DEPT_NORMAL.Equals(info?.Status))
|
||||
{
|
||||
throw new CustomException("部门停用,不允许新增");
|
||||
}
|
||||
|
||||
dept.Ancestors = info.Ancestors + "," + dept.ParentId;
|
||||
dept.Ancestors = "";
|
||||
if (info != null)
|
||||
{
|
||||
dept.Ancestors = info.Ancestors + "," + dept.ParentId;
|
||||
}
|
||||
return DeptRepository.Add(dept);
|
||||
}
|
||||
|
||||
|
||||
@ -126,6 +126,7 @@
|
||||
</div>
|
||||
<h2></h2>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user