1修改模板故障 2统一规范命名 3屏蔽服务接口,规范服务命名
This commit is contained in:
parent
13a7c2bcbe
commit
c71ae2c923
@ -59,7 +59,7 @@ public class SysCodeGenTemplateSeedData : ISqlSugarEntitySeedData<SysCodeGenTemp
|
||||
""Type"": 1,
|
||||
""SysFlag"": 1,
|
||||
""IsDefault"": true,
|
||||
""OutputFile"": ""views/{PagePath}/{TableNameLower}/component/{TableNameLower}List.vue"",
|
||||
""OutputFile"": ""views/{PagePath}/{TableNameLower}/component/list.vue"",
|
||||
""Describe"": ""(WEB)表格组件"",
|
||||
""OrderNo"": 100,
|
||||
""CreateTime"": ""1900-01-01 00:00:00"",
|
||||
@ -76,7 +76,7 @@ public class SysCodeGenTemplateSeedData : ISqlSugarEntitySeedData<SysCodeGenTemp
|
||||
""Type"": 1,
|
||||
""SysFlag"": 1,
|
||||
""IsDefault"": true,
|
||||
""OutputFile"": ""views/{PagePath}/{TableNameLower}/component/editDialog.vue"",
|
||||
""OutputFile"": ""views/{PagePath}/{TableNameLower}/component/edit.vue"",
|
||||
""Describe"": ""(WEB)编辑对话框"",
|
||||
""OrderNo"": 100,
|
||||
""CreateTime"": ""1900-01-01 00:00:00"",
|
||||
|
||||
@ -82,7 +82,7 @@ public partial class @(@Model.ClassName)Service : IDynamicApiController, ITransi
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "page", Description = "分页查询", Order = 1000), HttpPost]
|
||||
[ApiDescriptionSettings(Name = "Page", Description = "分页查询", Order = 1000), HttpPost]
|
||||
[DisplayName("分页查询@(@Model.BusName)")]
|
||||
public async Task<SqlSugarPagedList<@(@Model.ClassName)Output>> Page(Page@(@Model.ClassName)Input input)
|
||||
{
|
||||
@ -98,7 +98,7 @@ public partial class @(@Model.ClassName)Service : IDynamicApiController, ITransi
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "add", Description = "增加@(@Model.BusName)", Order = 990), HttpPost]
|
||||
[ApiDescriptionSettings(Name = "Add", Description = "增加@(@Model.BusName)", Order = 990), HttpPost]
|
||||
[DisplayName("增加@(@Model.BusName)")]
|
||||
public async Task<object> Add(Add@(@Model.ClassName)Input input)
|
||||
{
|
||||
@ -120,7 +120,7 @@ public partial class @(@Model.ClassName)Service : IDynamicApiController, ITransi
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "delete", Description = "删除(@Model.BusName)", Order = 980), HttpPost]
|
||||
[ApiDescriptionSettings(Name = "Delete", Description = "删除(@Model.BusName)", Order = 980), HttpPost]
|
||||
[DisplayName("删除@(@Model.BusName)")]
|
||||
public async Task Delete(Delete@(@Model.ClassName)Input input)
|
||||
{
|
||||
@ -138,7 +138,7 @@ if (@column.ColumnKey == "True"){
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "update", Description = "更新@(@Model.BusName)", Order = 970), HttpPost]
|
||||
[ApiDescriptionSettings(Name = "Update", Description = "更新@(@Model.BusName)", Order = 970), HttpPost]
|
||||
[DisplayName("更新@(@Model.BusName)")]
|
||||
public async Task Update(Update@(@Model.ClassName)Input input)
|
||||
{
|
||||
@ -160,7 +160,7 @@ if (@column.ColumnKey == "True"){
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "detail", Description = "获取@(@Model.BusName)", Order = 960), HttpGet]
|
||||
[ApiDescriptionSettings(Name = "Detail", Description = "获取@(@Model.BusName)", Order = 960), HttpGet]
|
||||
[DisplayName("获取@(@Model.BusName)")]
|
||||
public async Task<@(@Model.ClassName)> Detail([FromQuery] QueryById@(@Model.ClassName)Input input)
|
||||
{
|
||||
@ -170,7 +170,7 @@ if (@column.ColumnKey == "True"){
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*HJ:不要,有分页了,列表多余的
|
||||
/// <summary>
|
||||
/// 获取@(@Model.BusName)列表
|
||||
/// </summary>
|
||||
@ -182,7 +182,9 @@ if (@column.ColumnKey == "True"){
|
||||
{
|
||||
return await @(@Model.ClassName)Mid.GetQuery(_@(@Model.LowerClassName)Rep, input).OrderBuilder(input).ToListAsync();
|
||||
}
|
||||
*/
|
||||
|
||||
/*HJ:不要这应该在视图里,或者用ReZero里用
|
||||
/// <summary>
|
||||
/// 获取@(@Model.BusName)
|
||||
/// </summary>
|
||||
@ -216,7 +218,9 @@ if (@column.ColumnKey == "True"){
|
||||
});
|
||||
return await querystats.ToListAsync();
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/*HJ:不要危险度大,容易SQL注入,且不符合规范
|
||||
/// <summary>
|
||||
/// 根据输入参数获取@(@Model.BusName)统计
|
||||
/// 支持双模式聚合配置:
|
||||
@ -299,6 +303,8 @@ if (@column.ColumnKey == "True"){
|
||||
@:return await query.ToListAsync();
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
@foreach (var column in Model.TableField){
|
||||
if(@column.EffectType == "ForeignKey" && (@column.WhetherAddUpdate == "Y" || column.QueryWhether == "Y")){
|
||||
@ -328,7 +334,7 @@ if(@column.EffectType == "Upload"){
|
||||
@:/// </summary>
|
||||
@:/// <param name="file"></param>
|
||||
@:/// <returns></returns>
|
||||
@:[ApiDescriptionSettings(Name = "upload@(@column.PropertyName)", Description = "上传@(@column.ColumnComment)", Order = 930), HttpPost]
|
||||
@:[ApiDescriptionSettings(Name = "Upload@(@column.PropertyName)", Description = "上传@(@column.ColumnComment)", Order = 930), HttpPost]
|
||||
@:[DisplayName("上传@(@column.ColumnComment)")]
|
||||
@:public async Task<SysFile> Upload@(@column.PropertyName)([Required] IFormFile file)
|
||||
@:{
|
||||
@ -346,11 +352,66 @@ if(@column.EffectType == "ApiTreeSelector" && !definedObjects.ContainsKey("@(@co
|
||||
@:/// </summary>
|
||||
@:/// <param name="input"></param>
|
||||
@:/// <returns></returns>
|
||||
@:[ApiDescriptionSettings(Name = "GetTreeList", Description = "获取@(@Model.BusName)树列表", Order = 960), HttpPost]
|
||||
@:[ApiDescriptionSettings(Name = "Tree", Description = "获取@(@Model.BusName)树列表", Order = 960), HttpPost]
|
||||
@:[DisplayName("获取@(@Model.BusName)树列表")]
|
||||
@:public async Task<dynamic> GetTreeList()
|
||||
@:public async Task<dynamic> Tree(Page@(@Model.ClassName)Input input)
|
||||
@:{
|
||||
@:return await _@(@Model.LowerClassName)Rep.AsQueryable().OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0, u => u.Id);
|
||||
|
||||
@:// 有筛选条件时返回list列表(防止构造不出树)
|
||||
@:var isSearch=false;
|
||||
|
||||
foreach (var columnTree in Model.TableField){
|
||||
if (@columnTree.QueryWhether == "Y"){
|
||||
if (@columnTree.NetType?.TrimEnd('?') == "string"){
|
||||
@:if(!string.IsNullOrWhiteSpace(input.@columnTree.PropertyName))isSearch=true;
|
||||
|
||||
}else if((@columnTree.NetType?.TrimEnd('?') == "int" || @columnTree.NetType?.TrimEnd('?') == "long")){
|
||||
@:if(input.@columnTree.PropertyName>0)isSearch=true;
|
||||
|
||||
}else if((@columnTree.NetType?.TrimEnd('?') == "DateTime" && @columnTree.QueryType == "~")){
|
||||
@:if(input.@(@columnTree.PropertyName)Range != null)isSearch=true;
|
||||
} }}
|
||||
|
||||
|
||||
@:if (isSearch||!string.IsNullOrEmpty(input.SearchKey?.Trim()))
|
||||
@:{
|
||||
|
||||
@:return await _@(@Model.LowerClassName)Rep.AsQueryable()
|
||||
|
||||
@{string conditionFlag = "";}
|
||||
@if (haveLikeCdt) {
|
||||
@:.WhereIF(!string.IsNullOrEmpty(input.SearchKey?.Trim()), u =>
|
||||
@foreach (var columnTree in Model.TableField){
|
||||
if (@columnTree.QueryWhether == "Y" && columnTree.QueryType == "like"){
|
||||
@:@(conditionFlag)u.@(@columnTree.PropertyName).Contains(input.SearchKey.Trim())
|
||||
conditionFlag="|| ";
|
||||
}
|
||||
}
|
||||
@:)
|
||||
}
|
||||
foreach (var columnTree in Model.TableField){
|
||||
if (@columnTree.QueryWhether == "Y"){if (@columnTree.NetType?.TrimEnd('?') == "string"){if(@columnTree.QueryType == "like"){
|
||||
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@columnTree.PropertyName), u => u.@(@columnTree.PropertyName).Contains(input.@(@columnTree.PropertyName).Trim()))
|
||||
}else{
|
||||
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@columnTree.PropertyName), u => u.@(@columnTree.PropertyName) @columnTree.QueryType input.@(@columnTree.PropertyName))
|
||||
}}else if(@columnTree.NetType?.TrimEnd('?') == "int" || @columnTree.NetType?.TrimEnd('?') == "long"){
|
||||
@:.WhereIF(input.@columnTree.PropertyName>0, u => (int)u.@(@columnTree.PropertyName) @columnTree.QueryType input.@(@columnTree.PropertyName))
|
||||
}else if(@columnTree.NetType?.TrimEnd('?') == "DateTime" && @columnTree.QueryType == "~"){
|
||||
@:.WhereIF(input.@(@columnTree.PropertyName)Range != null && input.@(@columnTree.PropertyName)Range.Length == 2, u => u.@(@columnTree.PropertyName) >= input.@(@columnTree.PropertyName)Range[0] && u.@(@columnTree.PropertyName) <= input.@(@columnTree.PropertyName)Range[1])
|
||||
}else if(@columnTree.NetType?.TrimEnd('?').EndsWith("Enum") == true) {
|
||||
@:.WhereIF(input.@(@columnTree.PropertyName).HasValue, u => u.@(@columnTree.PropertyName) @columnTree.QueryType input.@(@columnTree.PropertyName))
|
||||
}}}
|
||||
//HJ @:.OrderBy(u => u.OrderNo)
|
||||
@:.OrderByDescending(u => u.Id)
|
||||
@:.Distinct().ToListAsync();
|
||||
@:}
|
||||
|
||||
@:// 无筛选条件时返回树列表
|
||||
@:return await _@(@Model.LowerClassName)Rep.AsQueryable()
|
||||
//HJ @:.OrderBy(u => u.OrderNo)
|
||||
@:.OrderByDescending(u => u.Id)
|
||||
@:.ToTreeAsync(u => u.Children, u => u.Pid, 0, u => u.Id);
|
||||
|
||||
@:}
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,7 +206,7 @@ import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@@/utils/storage';
|
||||
import { auth } from '/@@/utils/authFunction';
|
||||
import EditDialog from '/@@/views/@(@Model.PagePath)/@(@Model.LowerClassName)/component/editDialog.vue';
|
||||
import EditDialog from '/@@/views/@(@Model.PagePath)/@(@Model.LowerClassName)/component/edit.vue';
|
||||
import ModifyRecord from '/@@/components/table/modifyRecord.vue';
|
||||
|
||||
@if(@Model.TableField.Any(x=>x.EffectType == "DatePicker")){
|
||||
|
||||
@ -52,7 +52,7 @@
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
|
||||
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
|
||||
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" >
|
||||
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.code" :label="`${item.name||''} [${item.code}] ${item.value}`" />
|
||||
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.label} [${item.code}] ${item.value}`" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -60,7 +60,7 @@
|
||||
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
|
||||
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
|
||||
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" >
|
||||
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name} [${item.code}] ${item.value}`" />
|
||||
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.label} [${item.code}] ${item.value}`" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@ -210,7 +210,7 @@ import { useUserInfo } from '/@@/stores/userInfo';
|
||||
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@@/utils/storage';
|
||||
import EditDialog from '/@@/views/@(@Model.PagePath)/@(@Model.LowerClassName)/component/editDialog.vue';
|
||||
import EditDialog from '/@@/views/@(@Model.PagePath)/@(@Model.LowerClassName)/component/edit.vue';
|
||||
import ModifyRecord from '/@@/components/table/modifyRecord.vue';
|
||||
|
||||
@if(@Model.TableField.Any(x=>x.EffectType == "DatePicker")){
|
||||
@ -368,7 +368,7 @@ onMounted(() => {
|
||||
const handleQueryApi = async () => {
|
||||
const params = Object.assign(state.queryParams);
|
||||
@if (@Model.IsApiService) {
|
||||
@:return getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)GetTreeListPost(params);
|
||||
@:return getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)TreePost(params);
|
||||
} else {
|
||||
@:return treelist@(@Model.ClassName)(params);
|
||||
}
|
||||
|
||||
@ -417,7 +417,7 @@ if(@column.EffectType == "ApiTreeSelector" && !definedObjects.ContainsKey("defin
|
||||
@{definedObjects.Add("define_get@(@column.FkEntityName)TreeData", 1);}
|
||||
@:const @LowerFirstLetter(@column.FkEntityName)TreeData = ref<any>([]);
|
||||
@:const get@(@column.FkEntityName)TreeData = async () => {
|
||||
@:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)GetTreeListPost();
|
||||
@:let list = await getAPI(@(@Model.ClassName)Api).api@(@Model.ClassName)TreePost();
|
||||
@:@LowerFirstLetter(@column.FkEntityName)TreeData.value = list.data.result ?? [];
|
||||
@:};
|
||||
@:get@(@column.FkEntityName)TreeData();
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
|
||||
<script lang="ts" setup name="@(@Model.LowerClassName)">
|
||||
import { onMounted, reactive, ref } from 'vue';
|
||||
import IndexList from '/@@/views/@(@Model.PagePath)/@(@Model.LowerClassName)/component/@(@Model.LowerClassName)List.vue';
|
||||
import IndexList from '/@@/views/@(@Model.PagePath)/@(@Model.LowerClassName)/component/list.vue';
|
||||
const indexListRef = ref<InstanceType<typeof IndexList>>();
|
||||
// 变量初始化
|
||||
const state = reactive({
|
||||
|
||||
Loading…
Reference in New Issue
Block a user