添加项目文件。
This commit is contained in:
@@ -0,0 +1,299 @@
|
||||
@{
|
||||
var dataPermission=@Model.DataPermission=="Y";//是否启用数据权限
|
||||
var isOrgTree=@Model.LeftTree=="org";//是否启用组织树
|
||||
var funcList=@Model.FuncList;//获取功能列表
|
||||
var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
|
||||
var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
}
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.ComponentModel;
|
||||
using MoYu.DynamicApiController;
|
||||
using @(@Model.ServicePosition);
|
||||
|
||||
namespace @(@Model.ControllerPosition);
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.FunctionName)控制器
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("@(@Model.ApiGroup)", Tag = "@(@Model.FunctionName)")]
|
||||
[Route("@(@Model.RouteName)/@(@Model.BusName)")]
|
||||
@if(dataPermission) @:[RolePermission]
|
||||
public class @(@Model.ClassName)Controller: IDynamicApiController
|
||||
{
|
||||
private readonly I@(@Model.ServiceName) _@(@Model.ServiceFirstLower);
|
||||
@if(isOrgTree){
|
||||
@if(dataPermission){
|
||||
@:private readonly IOrgService _orgService;
|
||||
}
|
||||
else{
|
||||
@:private readonly ISysOrgService _sysOrgService;
|
||||
}
|
||||
}
|
||||
public @(@Model.ClassName)Controller(I@(@Model.ServiceName) @(@Model.ServiceFirstLower)
|
||||
@if(isOrgTree){
|
||||
@if(dataPermission){
|
||||
@:,IOrgService orgService
|
||||
}
|
||||
else{
|
||||
@:,ISysOrgService sysOrgService
|
||||
}
|
||||
}
|
||||
)
|
||||
{
|
||||
this._@(@Model.ServiceFirstLower) = @(@Model.ServiceFirstLower);
|
||||
@if(isOrgTree){
|
||||
@if(dataPermission){
|
||||
@:_orgService = orgService;
|
||||
}
|
||||
else{
|
||||
@:_sysOrgService = sysOrgService;
|
||||
}
|
||||
}
|
||||
}
|
||||
#region Get请求
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionPage)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("page")]
|
||||
[DisplayName("@(@Model.DescriptionPage)")]
|
||||
public async Task<dynamic> Page([FromQuery] @Model.PageInput input)
|
||||
{
|
||||
return await _@(@Model.ServiceFirstLower).Page(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionList)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("list")]
|
||||
[DisplayName("@(@Model.DescriptionList)")]
|
||||
public async Task<dynamic> List([FromQuery] @Model.PageInput input)
|
||||
{
|
||||
return await _@(@Model.ServiceFirstLower).List(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionDetail)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("detail")]
|
||||
[DisplayName("@(@Model.DescriptionDetail)")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _@(@Model.ServiceFirstLower).Detail(input);
|
||||
}
|
||||
|
||||
@{Fk();}
|
||||
|
||||
@{Tree();}
|
||||
|
||||
@{OtherGet();}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Post请求
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionAdd)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("add")]
|
||||
[DisplayName("@(@Model.DescriptionAdd)")]
|
||||
public async Task Add([FromBody] @(@Model.ClassName)AddInput input)
|
||||
{
|
||||
await _@(@Model.ServiceFirstLower).Add(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionEdit)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("edit")]
|
||||
[DisplayName("@(@Model.DescriptionEdit)")]
|
||||
public async Task Edit([FromBody] @(@Model.ClassName)EditInput input)
|
||||
{
|
||||
await _@(@Model.ServiceFirstLower).Edit(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionDelete)
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("delete")]
|
||||
[DisplayName("@(@Model.DescriptionDelete)")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _@(@Model.ServiceFirstLower).Delete(input);
|
||||
}
|
||||
|
||||
@{OtherPost();}
|
||||
#endregion
|
||||
}
|
||||
|
||||
@{
|
||||
|
||||
void Fk(){
|
||||
foreach (var column in tableFieIds){//遍历字段
|
||||
if(column.EffectType=="fk"){//如果是外键
|
||||
@:/// <summary>
|
||||
@:/// @(column.FieldRemark)选择器
|
||||
@:/// </summary>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpGet("fk@(column.FkEntityName)Selector")]
|
||||
@:[DisplayName("@(column.FieldRemark)选择器")]
|
||||
@:public async Task<dynamic> Fk@(column.FkEntityName)Selector()
|
||||
@:{
|
||||
@:return await _@(@Model.ServiceFirstLower).Fk@(column.FkEntityName)Selector();
|
||||
@:}
|
||||
@:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OtherGet(){
|
||||
foreach(var func in funcList){
|
||||
switch (func)//根据类型生成不同请求
|
||||
{
|
||||
//导入
|
||||
case "import":
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionPreview)
|
||||
@:/// </summary>
|
||||
@:/// <param name="input"></param>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpPost("preview")]
|
||||
@:[DisableRequestSizeLimit]
|
||||
@:[SuppressMonitor]
|
||||
@:[DisplayName("@(@Model.DescriptionPreview)")]
|
||||
@:public async Task<dynamic> Preview([FromForm] ImportPreviewInput input)
|
||||
@:{
|
||||
@:return await _@(@Model.ServiceFirstLower).Preview(input);
|
||||
@:}
|
||||
@:
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionTemplate)
|
||||
@:/// </summary>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpGet("template")]
|
||||
@:[SuppressMonitor]
|
||||
@:public async Task<dynamic> Template()
|
||||
@:{
|
||||
@:return await _@(@Model.ServiceFirstLower).Template();
|
||||
@:}
|
||||
@:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//左侧树接口
|
||||
void Tree(){
|
||||
if(isOrgTree){
|
||||
@:/// <summary>
|
||||
@:/// 获取组织树选择器
|
||||
@:/// </summary>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpGet("orgTreeSelector")]
|
||||
@:[DisplayName("组织树查询")]
|
||||
@:public async Task<dynamic> OrgTreeSelector()
|
||||
@:{
|
||||
@if(dataPermission){
|
||||
@:return await _orgService.Tree();
|
||||
}
|
||||
else{
|
||||
@:return await _sysOrgService.Tree();
|
||||
}
|
||||
@:}
|
||||
}
|
||||
else if(isTreeList){
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionTree)
|
||||
@:/// </summary>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpGet("tree")]
|
||||
@:[DisplayName("@(@Model.DescriptionTree)")]
|
||||
@:public async Task<dynamic> Tree()
|
||||
@:{
|
||||
@:return await _@(@Model.ServiceFirstLower).Tree();
|
||||
@:}
|
||||
}
|
||||
else if(isTreeTree){
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionTree)
|
||||
@:/// </summary>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpGet("tree")]
|
||||
@:[DisplayName("@(@Model.DescriptionTree)")]
|
||||
@:public async Task<dynamic> Tree([FromQuery] @Model.TreeInput input)
|
||||
@:{
|
||||
@:return await _@(@Model.ServiceFirstLower).Tree(input);
|
||||
@:}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void OtherPost(){
|
||||
foreach(var func in funcList){
|
||||
switch (func)//根据类型生成不同请求
|
||||
{
|
||||
//导入
|
||||
case "import":
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionImport)
|
||||
@:/// </summary>
|
||||
@:/// <param name="input"></param>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpPost("import")]
|
||||
@:[DisplayName("@(@Model.DescriptionImport)")]
|
||||
@:public async Task<dynamic> Import([SuppressMonitor][FromBody] ImportResultInput<@(@Model.ClassName)ImportInput> input)
|
||||
@:{
|
||||
@:return await _@(@Model.ServiceFirstLower).Import(input);
|
||||
@:}
|
||||
@:
|
||||
break;
|
||||
//导出
|
||||
case "export":
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionExport)
|
||||
@:/// </summary>
|
||||
@:/// <param name="input"></param>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpPost("export")]
|
||||
@:[DisplayName("@(@Model.DescriptionExport)")]
|
||||
@:public async Task<dynamic> Export([FromBody] @Model.PageInput input)
|
||||
@:{
|
||||
@:return await _@(@Model.ServiceFirstLower).Export(input);
|
||||
@:}
|
||||
@:
|
||||
break;
|
||||
//批量编辑
|
||||
case "batchEdit":
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionEdits)
|
||||
@:/// </summary>
|
||||
@:/// <param name="input"></param>
|
||||
@:/// <returns></returns>
|
||||
@:[HttpPost("edits")]
|
||||
@:[DisplayName("@(@Model.DescriptionEdits)")]
|
||||
@:public async Task Edits([FromBody] BatchEditInput input)
|
||||
@:{
|
||||
@:await _@(@Model.ServiceFirstLower).Edits(input);
|
||||
@:}
|
||||
@:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
@{
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
|
||||
var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
|
||||
}
|
||||
// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
//
|
||||
// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
|
||||
// 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
|
||||
// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
|
||||
// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
|
||||
// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
|
||||
// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Masuit.Tools.Core.Validator;
|
||||
namespace @(@Model.ServicePosition);
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionPage)参数
|
||||
/// </summary>
|
||||
public class @Model.PageInput : BasePageInput
|
||||
{
|
||||
@{PageInput();}
|
||||
@if(@Model.LeftTree=="org"){
|
||||
@:/// <summary>
|
||||
@:/// 组织机构Id
|
||||
@:/// </summary>
|
||||
@:public long OrgId { get; set; }
|
||||
}
|
||||
@if(isTreeList){
|
||||
@:/// <summary>
|
||||
@:/// 父Id
|
||||
@:/// </summary>
|
||||
@:public long @Model.TreePid { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionAdd)参数
|
||||
/// </summary>
|
||||
public class @Model.AddInput
|
||||
{
|
||||
@{AddInput();}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.DescriptionEdit)参数
|
||||
/// </summary>
|
||||
public class @Model.EditInput : @Model.AddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "Id不能为空")]
|
||||
public long Id { get; set; }
|
||||
}
|
||||
|
||||
@if(isTreeTree){
|
||||
@{TreeTree();}
|
||||
}
|
||||
|
||||
@{OtherInput();}
|
||||
|
||||
@{
|
||||
|
||||
void TreeTree(){
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionTree)参数
|
||||
@:/// </summary>
|
||||
@:public class @Model.TreeInput
|
||||
@:{
|
||||
@{PageInput();}
|
||||
@:}
|
||||
}
|
||||
|
||||
void OtherInput(){
|
||||
var funcList=@Model.FuncList;//获取功能列表
|
||||
foreach(var func in funcList){
|
||||
switch (func)//根据类型生成不同请求
|
||||
{
|
||||
//导入
|
||||
case "import":
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionImport)
|
||||
@:/// </summary>
|
||||
@:public class @(@Model.ClassName)ImportInput : ImportTemplateInput
|
||||
@:{
|
||||
ImportInput();
|
||||
@:}
|
||||
break;
|
||||
}}
|
||||
|
||||
}
|
||||
|
||||
//生成导入字段
|
||||
void ImportInput(){
|
||||
foreach (var column in tableFieIds){
|
||||
if(column.WhetherImportExport=="Y")//判断是否新增
|
||||
{
|
||||
@:/// <summary>
|
||||
@:/// @column.FieldRemark
|
||||
@:/// </summary>
|
||||
@:[ImporterHeader(Name = "@column.FieldRemark")]
|
||||
if(column.WhetherImportExport=="Y")//判断是否必填
|
||||
{
|
||||
@:[Required(ErrorMessage = "@(@column.FieldRemark)不能为空")]
|
||||
}
|
||||
if(column.FieldNetType!="string")//如果不是string类型后面要加?号
|
||||
{
|
||||
@:public @(@column.FieldNetType)? @column.FieldName { get; set; }
|
||||
}else{
|
||||
@:public @column.FieldNetType @column.FieldName { get; set; }
|
||||
}
|
||||
@:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//生成分页字段
|
||||
void PageInput()
|
||||
{
|
||||
foreach (var column in tableFieIds){
|
||||
if(column.QueryWhether=="Y")//判断是否查询
|
||||
{
|
||||
if(column.EffectType=="datepicker"){//如果是时间类型
|
||||
@:/// <summary>
|
||||
@:/// @column.FieldRemark
|
||||
@:/// </summary>
|
||||
@:public @column.FieldNetType? Start@(@column.FieldName) { get; set; }
|
||||
@:
|
||||
@:/// <summary>
|
||||
@:/// @column.FieldRemark
|
||||
@:/// </summary>
|
||||
@:public @column.FieldNetType? End@(@column.FieldName) { get; set; }
|
||||
@:
|
||||
}
|
||||
else{
|
||||
@:/// <summary>
|
||||
@:/// @column.FieldRemark
|
||||
@:/// </summary>
|
||||
if(column.FieldNetType!="string")//如果不是string类型后面要加?号
|
||||
{
|
||||
@:public @(@column.FieldNetType)? @column.FieldName { get; set; }
|
||||
}else{
|
||||
@:public @column.FieldNetType @column.FieldName { get; set; }
|
||||
}
|
||||
@:
|
||||
}}}}
|
||||
}
|
||||
|
||||
@{
|
||||
//生成新增字段
|
||||
void AddInput()
|
||||
{
|
||||
foreach (var column in tableFieIds){//遍历字段
|
||||
if(column.WhetherAddUpdate=="Y")//判断是否新增
|
||||
{
|
||||
@:/// <summary>
|
||||
@:/// @column.FieldRemark
|
||||
@:/// </summary>
|
||||
if(column.WhetherRequired=="Y")//判断是否必填
|
||||
{
|
||||
@:[Required(ErrorMessage = "@(@column.FieldName)不能为空")]
|
||||
}
|
||||
if(column.FieldNetType!="string")//如果不是string类型后面要加?号
|
||||
{
|
||||
@:public @(@column.FieldNetType)? @column.FieldName { get; set; }
|
||||
}else{
|
||||
@:public @column.FieldNetType @column.FieldName { get; set; }
|
||||
}
|
||||
@:
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
//
|
||||
// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
|
||||
// 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
|
||||
// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
|
||||
// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
|
||||
// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
|
||||
// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||
namespace @(@Model.ServicePosition);
|
||||
|
||||
@{OtherOutput();}
|
||||
|
||||
|
||||
|
||||
@{
|
||||
|
||||
void OtherOutput(){
|
||||
var funcList=@Model.FuncList;//获取功能列表
|
||||
foreach(var func in funcList){
|
||||
switch (func)//根据类型生成不同请求
|
||||
{
|
||||
//导入
|
||||
case "export":
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionExport)
|
||||
@:/// </summary>
|
||||
@:[ExcelExporter(Name = "@(@Model.FunctionName)信息", TableStyle = TableStyles.Light10, AutoFitAllColumn = true)]
|
||||
@:public class @(@Model.ClassName)ExportOutput
|
||||
@:{
|
||||
ExportOutput();
|
||||
@:}
|
||||
break;
|
||||
}}
|
||||
|
||||
}
|
||||
|
||||
void ExportOutput(){
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
foreach (var column in tableFieIds){
|
||||
if(column.WhetherImportExport=="Y")//判断是否新增
|
||||
{
|
||||
@:/// <summary>
|
||||
@:/// @column.FieldRemark
|
||||
@:/// </summary>
|
||||
@:[ExporterHeader(DisplayName = "@column.FieldRemark")]
|
||||
@:public string @column.FieldName { get; set; }
|
||||
@:
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
@{
|
||||
var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
|
||||
var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
}
|
||||
// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
//
|
||||
// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
|
||||
// 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
|
||||
// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
|
||||
// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
|
||||
// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
|
||||
// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||
|
||||
using MoYu.DependencyInjection;
|
||||
using SimpleAdmin.Core;
|
||||
|
||||
namespace @(@Model.ServicePosition);
|
||||
|
||||
/// <summary>
|
||||
/// @(@Model.FunctionName)服务
|
||||
/// </summary>
|
||||
public interface I@(@Model.ServiceName) : ITransient
|
||||
{
|
||||
#region 查询
|
||||
|
||||
/// <summary>
|
||||
/// @Model.DescriptionPage
|
||||
/// </summary>
|
||||
/// <param name="input">查询参数</param>
|
||||
/// <returns>@(@Model.FunctionName)分页</returns>
|
||||
Task<SqlSugarPagedList<@(@Model.EntityName)>> Page(@Model.PageInput input);
|
||||
|
||||
/// <summary>
|
||||
/// @Model.DescriptionList
|
||||
/// </summary>
|
||||
/// <param name="input">查询参数</param>
|
||||
/// <returns>@(@Model.FunctionName)列表</returns>
|
||||
Task<List<@(@Model.EntityName)>> List(@Model.PageInput input);
|
||||
|
||||
/// <summary>
|
||||
/// @Model.DescriptionDetail
|
||||
/// </summary>
|
||||
/// <param name="input">Id参数</param>
|
||||
/// <returns>详细信息</returns>
|
||||
Task<@(@Model.EntityName)> Detail(BaseIdInput input);
|
||||
|
||||
@if(isTreeList){
|
||||
@:/// <summary>
|
||||
@:/// @Model.DescriptionTree
|
||||
@:/// </summary>
|
||||
@:/// <returns>@(@Model.FunctionName)树</returns>
|
||||
@:Task<List<@(@Model.EntityName)>> Tree();
|
||||
}
|
||||
@if(isTreeTree){
|
||||
@:/// <summary>
|
||||
@:/// @Model.DescriptionTree
|
||||
@:/// </summary>
|
||||
@:/// <returns>@(@Model.FunctionName)树</returns>
|
||||
@:Task<List<@(@Model.EntityName)>> Tree(@Model.TreeInput input);
|
||||
}
|
||||
|
||||
@{Fk();}
|
||||
#endregion
|
||||
|
||||
#region 新增
|
||||
|
||||
/// <summary>
|
||||
/// @Model.DescriptionAdd
|
||||
/// </summary>
|
||||
/// <param name="input">添加参数</param>
|
||||
/// <returns></returns>
|
||||
Task Add(@Model.AddInput input);
|
||||
|
||||
#endregion
|
||||
|
||||
#region 编辑
|
||||
/// <summary>
|
||||
/// @Model.DescriptionEdit
|
||||
/// </summary>
|
||||
/// <param name="input">编辑参数</param>
|
||||
/// <returns></returns>
|
||||
Task Edit(@Model.EditInput input);
|
||||
|
||||
@if(@Model.FuncList.Contains("batchEdit")){
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionEdits)
|
||||
@:/// </summary>
|
||||
@:/// <param name="input">批量编辑信息</param>
|
||||
@:/// <returns></returns>
|
||||
@:Task Edits(BatchEditInput input);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 删除
|
||||
|
||||
/// <summary>
|
||||
/// @Model.DescriptionDelete
|
||||
/// </summary>
|
||||
/// <param name="input">删除参数</param>
|
||||
/// <returns></returns>
|
||||
Task Delete(BaseIdListInput input);
|
||||
|
||||
#endregion
|
||||
|
||||
#region 导入导出
|
||||
|
||||
@{ImportExport();}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@{
|
||||
|
||||
void Fk(){
|
||||
foreach (var column in tableFieIds){//遍历字段
|
||||
if(column.EffectType=="fk"){//如果是外键
|
||||
@:/// <summary>
|
||||
@:/// @(column.FieldRemark)选择器
|
||||
@:/// </summary>
|
||||
@:/// <returns></returns>
|
||||
@:Task<List<BaseSelectorOutput>> Fk@(column.FkEntityName)Selector();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ImportExport(){
|
||||
|
||||
var funcList=@Model.FuncList;//获取功能列表
|
||||
foreach(var func in funcList){
|
||||
switch (func)//根据类型生成不同请求
|
||||
{
|
||||
//导入
|
||||
case "import":
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionTemplate)
|
||||
@:/// </summary>
|
||||
@:/// <returns>模板</returns>
|
||||
@:Task<FileStreamResult> Template();
|
||||
@:
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionPreview)
|
||||
@:/// </summary>
|
||||
@:/// <param name="input">预览参数</param>
|
||||
@:/// <returns>预览结果</returns>
|
||||
@:Task<ImportPreviewOutput<@(@Model.ClassName)ImportInput>> Preview(ImportPreviewInput input);
|
||||
@:
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionImport)
|
||||
@:/// </summary>
|
||||
@:/// <param name="input"></param>
|
||||
@:/// <returns></returns>
|
||||
@:Task<ImportResultOutPut<@(@Model.ClassName)ImportInput>> Import(ImportResultInput<@(@Model.ClassName)ImportInput> input);
|
||||
@:
|
||||
break;
|
||||
//导出
|
||||
case "export":
|
||||
@:/// <summary>
|
||||
@:/// @(@Model.DescriptionExport)
|
||||
@:/// </summary>
|
||||
@:/// <param name="input"></param>
|
||||
@:/// <returns></returns>
|
||||
@:Task<FileStreamResult> Export(@Model.PageInput input);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,461 @@
|
||||
@{
|
||||
var orgField=@Model.TableFields.Any(it=>it.FieldName=="OrgId")?"OrgId":"CreateOrgId";//机构字段
|
||||
var dataPermission=@Model.DataPermission=="Y";//是否有数据权限
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
|
||||
var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
|
||||
var isMasterChild = @Model.ModuleType=="masterChild"; //是否是主子表
|
||||
}
|
||||
|
||||
// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
//
|
||||
// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
|
||||
// 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
|
||||
// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
|
||||
// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
|
||||
// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
|
||||
// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
|
||||
|
||||
using MoYu.FriendlyException;
|
||||
using Mapster;
|
||||
using SimpleAdmin.Core;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SqlSugar;
|
||||
|
||||
namespace @(@Model.ServicePosition);
|
||||
|
||||
/// <summary>
|
||||
/// <inheritdoc cref="I@(@Model.ServiceName)"/>
|
||||
/// </summary>
|
||||
public class @(@Model.ServiceName) : DbRepository<@(@Model.EntityName)>, I@(@Model.ServiceName)
|
||||
{
|
||||
private readonly ILogger<@(@Model.ServiceName)> _logger;
|
||||
private readonly ISysUserService _sysUserService;
|
||||
@if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
|
||||
@:private readonly IImportExportService _importExportService;
|
||||
}
|
||||
@if(@Model.FuncList.Contains("batchEdit")){
|
||||
@:private readonly IBatchEditService _batchEditService;
|
||||
}
|
||||
@if(@Model.LeftTree=="org"){
|
||||
@:private readonly ISysOrgService _sysOrgService;
|
||||
}
|
||||
|
||||
public @(@Model.ServiceName)(ILogger<@(@Model.ServiceName)> logger,ISysUserService sysUserService
|
||||
@if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
|
||||
@:,IImportExportService importExportService
|
||||
}
|
||||
@if(@Model.FuncList.Contains("batchEdit")){
|
||||
@:,IBatchEditService updateBatchService
|
||||
}
|
||||
@if(@Model.LeftTree=="org"){
|
||||
@:,ISysOrgService sysOrgService
|
||||
}
|
||||
)
|
||||
{
|
||||
_sysUserService = sysUserService;
|
||||
_logger = logger;
|
||||
@if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
|
||||
@:_importExportService = importExportService;
|
||||
}
|
||||
@if(@Model.FuncList.Contains("batchEdit")){
|
||||
@: _batchEditService = updateBatchService;
|
||||
}
|
||||
@if(@Model.LeftTree=="org"){
|
||||
@: _sysOrgService = sysOrgService;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#region 查询
|
||||
|
||||
/// <inheritdoc/>
|
||||
public async Task<SqlSugarPagedList<@(@Model.EntityName)>> Page(@Model.PageInput input)
|
||||
{
|
||||
var query = await GetQuery(input);//获取查询条件
|
||||
var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
|
||||
return pageInfo;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public async Task<List<@(@Model.EntityName)>> List(@Model.PageInput input)
|
||||
{
|
||||
var query = await GetQuery(input);//获取查询条件
|
||||
var list = await query.ToListAsync();
|
||||
return list;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task<@(@Model.EntityName)> Detail(BaseIdInput input)
|
||||
{
|
||||
var @Model.ClassNameFirstLower = await GetFirstAsync(it => it.Id == input.Id);
|
||||
@if(dataPermission){
|
||||
@:var errorMessage = $"您没有权限查看该数据";
|
||||
@://获取数据范围
|
||||
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
|
||||
@:if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).@(orgField)) || @(@Model.ClassNameFirstLower).CreateUserId != UserManager.UserId))//判断机构ID是否在数据范围或者创建人是否为当前登录人
|
||||
@:throw Oops.Bah(errorMessage);
|
||||
}
|
||||
@if(isMasterChild){
|
||||
@:var child=await Context.Queryable<@Model.ChildTable>().Where(it => it.@(Model.ChildFk) == @(@Model.ClassNameFirstLower).Id).ToListAsync();
|
||||
}
|
||||
return @Model.ClassNameFirstLower ;
|
||||
|
||||
}
|
||||
@if(isTreeList){
|
||||
@:/// <inheritdoc />
|
||||
@:public async Task<List<@(@Model.EntityName)>> Tree()
|
||||
@:{
|
||||
@://第三个参数为0 表示 : parentid为 0 设置成根目录, 正常情况下最顶层的parentid不是0就是null
|
||||
@:var tree = Context.Queryable<@(@Model.EntityName)>().ToTree(it => it.Children, it => it.ParentId, 0);
|
||||
@:return tree;
|
||||
@:}
|
||||
}
|
||||
@if(isTreeTree){
|
||||
@:/// <inheritdoc />
|
||||
@:public async Task<List<@(@Model.EntityName)>> Tree(@Model.TreeInput input)
|
||||
@:{
|
||||
@://第三个参数为0 表示 : parentid为 0 设置成根目录, 正常情况下最顶层的parentid不是0就是null
|
||||
@:var tree = Context.Queryable<@(@Model.EntityName)>()
|
||||
@if(isTreeTree){
|
||||
@{PageWhereIf();}//查询条件
|
||||
}
|
||||
@:.ToTree(it => it.Children, it => it.ParentId, 0);
|
||||
@:return tree;
|
||||
@:}
|
||||
}
|
||||
|
||||
@{Fk();}//外键查询
|
||||
#endregion
|
||||
|
||||
#region 新增
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task Add(@Model.AddInput input)
|
||||
{
|
||||
var @Model.ClassNameFirstLower = input.Adapt<@(@Model.EntityName)>();//实体转换
|
||||
await CheckInput(@Model.ClassNameFirstLower);//检查参数
|
||||
@if(dataPermission){
|
||||
@://获取数据范围
|
||||
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
|
||||
@://判断机构ID是否在数据范围,这里只是简单示例,根据实际情况判断
|
||||
@://if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).OrgId)))
|
||||
@://throw Oops.Bah("您没有权限添加该数据");
|
||||
}
|
||||
await InsertAsync(@Model.ClassNameFirstLower);//插入数据
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 编辑
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task Edit(@Model.EditInput input)
|
||||
{
|
||||
var @Model.ClassNameFirstLower = input.Adapt<@(@Model.EntityName)>();//实体转换
|
||||
await CheckInput(@Model.ClassNameFirstLower);//检查参数
|
||||
@if(dataPermission){
|
||||
@://判断机构ID是否在数据范围并且创建者是自己,这里只是简单示例,根据实际情况判断
|
||||
@://if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).@(orgField)) || @(@Model.ClassNameFirstLower).CreateUserId != UserManager.UserId))
|
||||
@://throw Oops.Bah("您没有权限编辑该数据");
|
||||
}
|
||||
await UpdateAsync(@Model.ClassNameFirstLower);//更新数据
|
||||
}
|
||||
|
||||
@if(@Model.FuncList.Contains("batchEdit")){
|
||||
@:/// <inheritdoc/>
|
||||
@:public async Task Edits(BatchEditInput input)
|
||||
@:{
|
||||
Edits();
|
||||
@:}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 删除
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task Delete(BaseIdListInput input)
|
||||
{
|
||||
//获取所有ID
|
||||
var ids = input.Ids.ToList();
|
||||
if (ids.Count > 0)
|
||||
{
|
||||
@if(dataPermission){
|
||||
@://获取数据范围
|
||||
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
|
||||
@:var @(@Model.ClassNameFirstLower)s = await GetListAsync(it => ids.Contains(it.Id), it =>new @(@Model.EntityName){ @(orgField)=it.@(orgField),CreateUserId=it.CreateUserId });//根据ID获取机构ID和创建者ID
|
||||
@:@(@Model.ClassNameFirstLower)s.ForEach(it =>
|
||||
@:{
|
||||
@: if (dataScope!=null&&!dataScope.Contains(it.@(orgField))&&it.CreateUserId != UserManager.UserId) throw Oops.Bah(ErrorCodeEnum.A0004);//如果不包含机构id并且不是自己创建的
|
||||
@:});
|
||||
}
|
||||
@if(isMasterChild){
|
||||
@://如果@(Model.FunctionName)下有下级数据则不允许删除
|
||||
@:if (await Context.Queryable<@(@Model.ChildTable)>().AnyAsync(it => ids.Contains(it.@(Model.ChildFk))))
|
||||
@:{
|
||||
@:throw Oops.Bah($"有数据依赖@(Model.FunctionName),无法删除");
|
||||
@:}
|
||||
}
|
||||
await DeleteByIdsAsync(ids.Cast<object>().ToArray());//删除数据
|
||||
////事务
|
||||
//var result = await itenant.UseTranAsync(async () =>
|
||||
//{
|
||||
//await DeleteByIdsAsync(ids.Cast<object>().ToArray());//删除数据
|
||||
@if(isMasterChild){
|
||||
@://Context.Deleteable<@(@Model.ChildTable)>().Where(it => ids.Contains(it.@(Model.ChildFk))).ExecuteCommandAsync();//删除子表数据
|
||||
}
|
||||
//});
|
||||
//if (!result.IsSuccess)//如果成功了
|
||||
//{
|
||||
////写日志
|
||||
//_logger.LogError(result.ErrorMessage, result.ErrorException);
|
||||
//throw Oops.Oh(ErrorCodeEnum.A0002);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 导入导出
|
||||
|
||||
@{ImportExport();}
|
||||
|
||||
#endregion
|
||||
|
||||
#region 方法
|
||||
|
||||
/// <summary>
|
||||
/// 检查输入参数
|
||||
/// </summary>
|
||||
/// <param name="@(@Model.ClassNameFirstLower)"></param>
|
||||
private async Task CheckInput(@Model.EntityName @Model.ClassNameFirstLower)
|
||||
{
|
||||
@{CheckInput();}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取Sqlsugar的ISugarQueryable
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<ISugarQueryable<@(@Model.EntityName)>> GetQuery(@Model.PageInput input)
|
||||
{
|
||||
|
||||
@if(dataPermission){
|
||||
@://获取数据范围
|
||||
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
|
||||
@://动态查询条件,如果是连表查询,里面的it要改成连表里对应的别名
|
||||
@:var exp = Expressionable.Create<@(@Model.EntityName)>();
|
||||
@:exp.AndIF(dataScope is { Count: > 0 }, it => dataScope.Contains(it.@(orgField)));//用户机构在数据范围内
|
||||
@:exp.AndIF(dataScope is { Count: 0 }, it => it.CreateUserId == UserManager.UserId);//默认创建者ID等于自己,根据实际情况修改条件
|
||||
}
|
||||
@if(@Model.LeftTree=="org"){
|
||||
@:var orgIds = await _sysOrgService.GetOrgChildIds(input.OrgId);//获取下级机构
|
||||
}
|
||||
var query = Context.Queryable<@(@Model.EntityName)>()
|
||||
@{PageWhereIf();}
|
||||
@if(dataPermission){
|
||||
@:.Where(exp.ToExpression())
|
||||
}
|
||||
@if(@Model.LeftTree=="org"){
|
||||
@:.WhereIF(input.OrgId > 0, it => orgIds.Contains(it.@(orgField)))//根据机构ID查询
|
||||
}
|
||||
@if(isTreeList){
|
||||
@:.WhereIF(input.@(@Model.TreePid) > 0, it => it.@(@Model.TreePid) ==input.@(@Model.TreePid))//父级
|
||||
}
|
||||
//.WhereIF(!string.IsNullOrEmpty(input.SearchKey), it => it.Name.Contains(input.SearchKey))//根据关键字查询
|
||||
.OrderByIF(!string.IsNullOrEmpty(input.SortField), $"{input.SortField} {input.SortOrder}")
|
||||
@{PageSortCode();}
|
||||
return query;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public async Task<List<@(@Model.ClassName)ImportInput>> CheckImport<@(@Model.ClassName)ImportInput>(List<@(@Model.ClassName)ImportInput> data, bool clearError = false)
|
||||
{
|
||||
return data;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
@{
|
||||
|
||||
void Fk(){
|
||||
foreach (var column in tableFieIds){//遍历字段
|
||||
if(column.EffectType=="fk"){//如果是外键
|
||||
@:/// <summary>
|
||||
@:/// @(column.FieldRemark)选择器
|
||||
@:/// </summary>
|
||||
@:/// <returns></returns>
|
||||
@:public async Task<List<BaseSelectorOutput>> Fk@(column.FkEntityName)Selector()
|
||||
@:{
|
||||
@if(dataPermission){
|
||||
@://获取数据范围
|
||||
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
|
||||
}
|
||||
@:return await Context.Queryable<@(column.FkEntityName)>()
|
||||
@if(dataPermission){
|
||||
@://.WhereIf(dataScope!=null,it => it.CreateOrgId == UserManager.OrgId || (dataScope.Contains(it.Id)))
|
||||
}
|
||||
@:.Select(it => new BaseSelectorOutput { Value = it.@(column.FkColumnId), Label = it.@(column.FkColumnName) }).ToListAsync();
|
||||
@:}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//删除
|
||||
void Delete(){
|
||||
|
||||
}
|
||||
|
||||
//批量编辑
|
||||
void Edits(){
|
||||
@if(dataPermission){
|
||||
@://获取数据范围
|
||||
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
|
||||
@:var ids = input.Ids;//获取id列表
|
||||
@:var @(@Model.ClassNameFirstLower)s = await GetListAsync(it => ids.Contains(it.Id), it =>new @(@Model.EntityName){ @(orgField)=it.@(orgField),CreateUserId=it.CreateUserId });//根据ID获取机构ID和创建者ID
|
||||
@:@(@Model.ClassNameFirstLower)s.ForEach(it =>
|
||||
@:{
|
||||
@: if (dataScope!=null&&!dataScope.Contains(it.@(orgField))&&it.CreateUserId != UserManager.UserId) throw Oops.Bah(ErrorCodeEnum.A0004);//如果不包含机构id并且不是自己创建的
|
||||
@:});
|
||||
}
|
||||
@://获取参数字典
|
||||
@:var data = await _batchEditService.GetUpdateBatchConfigDict(input.Code, input.Columns);
|
||||
@:if (data.Count > 0)
|
||||
@:{
|
||||
@:await Context.Updateable<@(@Model.EntityName)>(data).Where(it => input.Ids.Contains(it.Id)).ExecuteCommandAsync();
|
||||
@:}
|
||||
}
|
||||
|
||||
//检查输入
|
||||
void CheckInput(){
|
||||
@:var errorMessage = $"您没有权限操作该数据";
|
||||
@:if(@(@Model.ClassNameFirstLower).Id==SimpleAdminConst.ZERO){
|
||||
@://表示新增
|
||||
@:}
|
||||
@:else{
|
||||
@://表示编辑
|
||||
@:}
|
||||
}
|
||||
|
||||
//导入导出
|
||||
void ImportExport()
|
||||
{
|
||||
if(@Model.FuncList.Contains("import"))
|
||||
{
|
||||
@:/// <inheritdoc/>
|
||||
@:public async Task<FileStreamResult> Template()
|
||||
@:{
|
||||
@:var templateName = "@(@Model.FunctionName)信息";
|
||||
@://var result = _importExportService.GenerateLocalTemplate(templateName);
|
||||
@:var result = await _importExportService.GenerateTemplate<@(@Model.ClassName)ImportInput>(templateName);
|
||||
@:return result;
|
||||
@:}
|
||||
@:
|
||||
@:/// <inheritdoc/>
|
||||
@:public async Task<ImportPreviewOutput<@(@Model.ClassName)ImportInput>> Preview(ImportPreviewInput input)
|
||||
@:{
|
||||
@:var importPreview = await _importExportService.GetImportPreview<@(@Model.ClassName)ImportInput>(input.File);
|
||||
@:importPreview.Data = await CheckImport(importPreview.Data);//检查导入数据
|
||||
@:return importPreview;
|
||||
@:}
|
||||
@:
|
||||
@:/// <inheritdoc/>
|
||||
@:public async Task<ImportResultOutPut<@(@Model.ClassName)ImportInput>> Import(ImportResultInput<@(@Model.ClassName)ImportInput> input)
|
||||
@:{
|
||||
@:var data = await CheckImport(input.Data, true);//检查数据格式
|
||||
@:var result = _importExportService.GetImportResultPreview(data, out var importData);
|
||||
@:var @Model.ClassNameFirstLower = importData.Adapt<List<@(@Model.EntityName)>>();//转实体
|
||||
@:await InsertOrBulkCopy(@Model.ClassNameFirstLower);// 数据导入
|
||||
@:return result;
|
||||
@:}
|
||||
@:
|
||||
}
|
||||
if(@Model.FuncList.Contains("export"))
|
||||
{
|
||||
@:/// <inheritdoc/>
|
||||
@:public async Task<FileStreamResult> Export(@Model.PageInput input)
|
||||
@:{
|
||||
@:var genTests = await List(input);
|
||||
@:var data = genTests.Adapt<List<@(@Model.ClassName)ExportOutput>>();//转为Dto
|
||||
@:var result = await _importExportService.Export(data, "@(@Model.FunctionName)信息");
|
||||
@:return result;
|
||||
@:}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@{
|
||||
//生成查询条件
|
||||
void PageWhereIf()
|
||||
{
|
||||
foreach (var column in tableFieIds){//遍历字段
|
||||
if(column.QueryWhether=="Y")//判断是否查询
|
||||
{
|
||||
if(@column.FieldNetType.ToLower() == "string")//判断是否是字符串类型
|
||||
{
|
||||
switch (@column.QueryType)//遍历查询方式
|
||||
{
|
||||
case "eq"://等于
|
||||
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.FieldName), it => it.@(@column.FieldName) == input.@(@column.FieldName))
|
||||
break;
|
||||
case "like"://包含
|
||||
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.FieldName), it => it.@(@column.FieldName).Contains(input.@(@column.FieldName).Trim()))
|
||||
break;
|
||||
case "notlike"://不包含
|
||||
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.FieldName), it => !it.@(@column.FieldName).Contains(input.@(@column.FieldName).Trim()))
|
||||
break;
|
||||
case "ne"://不等于
|
||||
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@column.FieldName), it => it.@(@column.FieldName) != input.@(@column.FieldName))
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if(@column.EffectType=="datepicker"){//如果是时间类型则生成时间戳
|
||||
@:.WhereIF(input.Start@(@column.FieldName)!=null||input.End@(@column.FieldName)!=null, it=> SqlFunc.Between(it.@column.FieldName, input.Start@(@column.FieldName), input.End@(@column.FieldName)))
|
||||
}
|
||||
else{//其他
|
||||
switch (@column.QueryType)//遍历查询方式
|
||||
{
|
||||
case "eq"://等于
|
||||
@:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) == input.@(@column.FieldName))
|
||||
break;
|
||||
case "ne"://不等于
|
||||
@:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) != input.@(@column.FieldName))
|
||||
break;
|
||||
case "gt"://大于
|
||||
@:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) > input.@(@column.FieldName))
|
||||
break;
|
||||
case "ge"://大于等于
|
||||
@:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) >= input.@(@column.FieldName))
|
||||
break;
|
||||
case "lt"://小于
|
||||
@:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) < input.@(@column.FieldName))
|
||||
break;
|
||||
case "le"://小于等于
|
||||
@:.WhereIF(input.@column.FieldName!=null, it => it.@(@column.FieldName) <= input.@(@column.FieldName))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@{
|
||||
//生成根据SortCode排序
|
||||
void PageSortCode()
|
||||
{
|
||||
var hasSortCode= tableFieIds.Any(it => it.FieldName == "SortCode");
|
||||
if(hasSortCode){//如果有sortcode字段
|
||||
@:.OrderBy(it => it.SortCode);//排序
|
||||
}else{
|
||||
@:;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
/**
|
||||
* @@description @(@Model.FunctionName+@Model.FunctionNameSuffix)接口
|
||||
* @@license Apache License Version 2.0
|
||||
* @@Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
* @@remarks
|
||||
* SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
|
||||
* 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
|
||||
* 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
|
||||
* 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为不要删除和修改作者声明。
|
||||
* 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关
|
||||
*/
|
||||
|
||||
@{
|
||||
var busName= @Model.BusName;//业务名称
|
||||
var author= @Model.AuthorName;//作者
|
||||
var currentTime =@Model.GenTime;
|
||||
var name=@Model.FunctionName+@Model.FunctionNameSuffix;//接口名称
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
}
|
||||
|
||||
import { ReqPage } from "@@/api/interface";
|
||||
|
||||
/**
|
||||
* @@Description: @(@Model.FunctionName+@Model.FunctionNameSuffix)接口
|
||||
* @@Author: @author
|
||||
* @@Date: @currentTime
|
||||
*/
|
||||
export namespace @Model.EntityName {
|
||||
|
||||
/**@(@Model.FunctionName)分页查询 */
|
||||
export interface Page extends ReqPage {
|
||||
@{PageQueryParams();}
|
||||
}
|
||||
|
||||
/** @(@Model.FunctionName)信息 */
|
||||
export interface @(@Model.EntityName)Info {
|
||||
@{EntityToInterfaceParams();}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@{
|
||||
//生成查询条件
|
||||
void PageQueryParams()
|
||||
{
|
||||
var queryParams = tableFieIds.Where(x => x.QueryWhether=="Y").ToList();
|
||||
//遍历字段
|
||||
foreach (var column in queryParams){
|
||||
@:/** @column.FieldRemark */
|
||||
if(@column.FieldNetType.ToLower() == "string")//判断是否是字符串类型
|
||||
{
|
||||
@:@column.FieldNameFirstLower: string;
|
||||
}
|
||||
if(@column.FieldNetType.ToLower() == "int"||@column.FieldNetType.ToLower() == "long")//判断是否是数字类型
|
||||
{
|
||||
@:@column.FieldNameFirstLower: number;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
//实体字段转接口参数
|
||||
void EntityToInterfaceParams(){
|
||||
var numberParams =new string[]{"int","long","decimal","double"};//数字类型
|
||||
var tableParams = tableFieIds.Where(x => x.WhetherTable=="Y"||x.IsPrimaryKey=="Y"||x.SortCode<99).ToList();
|
||||
//遍历字段
|
||||
foreach (var column in tableParams){
|
||||
@:/** @column.FieldRemark */
|
||||
if(numberParams.Contains(@column.FieldNetType.ToLower()))//判断是否是数字类型
|
||||
{
|
||||
@:@column.FieldNameFirstLower: number;
|
||||
}
|
||||
else if(@column.FieldNetType.ToLower() == "bool")//判断是否是数字类型
|
||||
{
|
||||
@:@column.FieldNameFirstLower: boolean;
|
||||
}
|
||||
else
|
||||
{
|
||||
@:@column.FieldNameFirstLower: string;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* @@description @(@Model.FunctionName+@Model.FunctionNameSuffix)Api
|
||||
* @@license Apache License Version 2.0
|
||||
* @@Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
* @@remarks
|
||||
* SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
|
||||
* 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
|
||||
* 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
|
||||
* 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为不要删除和修改作者声明。
|
||||
* 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关
|
||||
*/
|
||||
|
||||
@{
|
||||
var busName= @Model.BusName;//业务名称
|
||||
var author= @Model.AuthorName;//作者
|
||||
var currentTime =@Model.GenTime;
|
||||
var name=@Model.FunctionName+@Model.FunctionNameSuffix;//接口名称
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
}
|
||||
|
||||
import { ReqId, ResPage,@Model.EntityName,moduleRequest } from "@@/api";
|
||||
const http = moduleRequest("@(@Model.RouteName)/@Model.BusName/");
|
||||
|
||||
/**
|
||||
* @@Description: @name
|
||||
* @@Author: @author
|
||||
* @@Date: @currentTime
|
||||
*/
|
||||
const @(@Model.ClassNameFirstLower)Api = {
|
||||
/** 获取@(@Model.FunctionName)分页 */
|
||||
page(params: @(@Model.EntityName).Page) {
|
||||
return http.get<ResPage<@Model.EntityName.@(@Model.EntityName)Info>>("page", params);
|
||||
},
|
||||
/** 获取@(@Model.FunctionName)详情 */
|
||||
detail(params: ReqId) {
|
||||
return http.get<@Model.EntityName.@(@Model.EntityName)Info>("detail", params);
|
||||
},
|
||||
/** 提交表单 edit为true时为编辑,默认为新增 */
|
||||
submitForm(params = {}, edit: boolean = false) {
|
||||
return http.post(edit ? "edit" : "add", params);
|
||||
},
|
||||
/** 删除@(@Model.FunctionName) */
|
||||
delete(params: ReqId[]) {
|
||||
return http.post("delete", params);
|
||||
},
|
||||
};
|
||||
|
||||
export { @(@Model.ClassNameFirstLower)Api };
|
||||
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* @description 接口
|
||||
* @license Apache License Version 2.0
|
||||
* @Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
|
||||
* @remarks
|
||||
* SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
|
||||
* 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
|
||||
* 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
|
||||
* 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为不要删除和修改作者声明。
|
||||
* 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关
|
||||
* @see https://gitee.com/dotnetmoyu/SimpleAdmin
|
||||
*/
|
||||
@@ -0,0 +1,191 @@
|
||||
@{
|
||||
var name=@Model.FunctionName+@Model.FunctionNameSuffix;//接口名称
|
||||
var author= @Model.AuthorName;//作者
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
var currentTime =@Model.GenTime;
|
||||
var funcName= @Model.FunctionName;//获取功能名称
|
||||
var busName= @Model.BusName;//获取业务名称
|
||||
var props=@Model.BusName+"Props";
|
||||
var updateColumns= tableFieIds.Where(it => it.WhetherAddUpdate == "Y").ToList();//获取需要显示的字段
|
||||
var dictTypes= tableFieIds.Where(it => !string.IsNullOrEmpty(it.DictTypeCode)).ToList();//获取需要显示的字段
|
||||
}
|
||||
|
||||
<!--
|
||||
* @@Description: @(@name)表单页面
|
||||
* @@Author: @author
|
||||
* @@Date: @currentTime
|
||||
!-->
|
||||
|
||||
<template>
|
||||
<form-container v-model="visible" :title="`${@(@props).opt}@(@funcName)`" form-size="600px">
|
||||
<el-form
|
||||
ref="@(@busName)FormRef"
|
||||
:rules="rules"
|
||||
:disabled="@(@props).disabled"
|
||||
:model="@(@props).record"
|
||||
:hide-required-asterisk="@(@props).disabled"
|
||||
label-width="auto"
|
||||
label-suffix=" :"
|
||||
>
|
||||
@{FormItem();}
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @@click="onClose"> 取消 </el-button>
|
||||
<el-button v-show="!@(@props).disabled" type="primary" @@click="handleSubmit"> 确定 </el-button>
|
||||
</template>
|
||||
</form-container>
|
||||
</template>
|
||||
@{
|
||||
|
||||
void FormItem(){
|
||||
foreach(var column in updateColumns){
|
||||
@:<s-form-item label="@(@column.FieldRemark)" prop="@(@column.FieldNameFirstLower)">
|
||||
@switch (@column.EffectType) {
|
||||
case "input":
|
||||
<s-input v-model="@(@props).record.@(@column.FieldNameFirstLower)"></s-input>
|
||||
break;
|
||||
case "inputNumber":
|
||||
<el-input-number v-model="@(@props).record.@(@column.FieldNameFirstLower)" :min="1" :max="100" />
|
||||
break;
|
||||
case "radio":
|
||||
<s-radio-group v-model="@(@props).record.@(@column.FieldNameFirstLower)" :options="@(@column.FieldNameFirstLower)Options" button />
|
||||
break;
|
||||
case "select":
|
||||
<s-select v-model="@(@props).record.@(@column.FieldNameFirstLower)" :options="@(@column.FieldNameFirstLower)Options"></s-select>
|
||||
break;
|
||||
case "textarea":
|
||||
<s-input v-model="@(@props).record.@(@column.FieldNameFirstLower)" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"></s-input>
|
||||
break;
|
||||
case "checkbox":
|
||||
<a-checkbox-group v-model="@(@props).record.@(@column.FieldNameFirstLower)" :options="@(@column.FieldNameFirstLower)Options" />
|
||||
break;
|
||||
case "datepicker":
|
||||
<date-picker v-model="@(@props).record.@(@column.FieldNameFirstLower)"></date-picker>
|
||||
break;
|
||||
case "fk":
|
||||
<s-select v-model:value="@(@props).record.@(@column.FieldNameFirstLower)" :options="fk@(@column.FieldNameFirstLower)OptionsOptions" />
|
||||
break;
|
||||
|
||||
}
|
||||
</s-form-item>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<script setup lang="ts">
|
||||
import { @(@Model.ClassNameFirstLower)Api,@(@Model.EntityName) } from "@@/api";
|
||||
import { FormOptEnum } from "@@/enums";
|
||||
import { required } from "@@/utils/formRules";
|
||||
import { FormInstance } from "element-plus";
|
||||
@if(dictTypes.Count>0){
|
||||
@:import { useDictStore } from "@@/stores/modules";
|
||||
}
|
||||
|
||||
const visible = ref(false); //是否显示表单
|
||||
@{DictStore();}
|
||||
|
||||
// 表单参数
|
||||
const @(@props) = reactive<FormProps.Base<@(@Model.EntityName).@(@Model.EntityName)Info>>({
|
||||
opt: FormOptEnum.ADD,
|
||||
record: {},
|
||||
disabled: false
|
||||
});
|
||||
|
||||
@{Rules();}
|
||||
|
||||
/**
|
||||
* 打开表单
|
||||
* @@param props 表单参数
|
||||
*/
|
||||
function onOpen(props: FormProps.Base<@(@Model.EntityName).@(@Model.EntityName)Info>) {
|
||||
Object.assign(@(@props), props); //合并参数
|
||||
if (props.opt == FormOptEnum.ADD) {
|
||||
|
||||
@foreach (var column in updateColumns){//遍历增改字段
|
||||
@if(column.FieldName=="SortCode"){//如果是SortCode
|
||||
@://如果是新增,设置默认值
|
||||
@:@(@props).record.sortCode = 99;
|
||||
continue;
|
||||
}
|
||||
@if(column.FieldType=="int"){//如果是int
|
||||
@:@(@props).record.@(@column.FieldNameFirstLower) = 0;
|
||||
continue;
|
||||
}
|
||||
@if(!string.IsNullOrWhiteSpace(column.DictTypeCode)){//如果是有字典
|
||||
@:@(@props).record.@(@column.FieldNameFirstLower) = @(@column.FieldNameFirstLower)Options[0].value;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
visible.value = true; //显示表单
|
||||
if (props.record.id) {
|
||||
//如果传了id,就去请求api获取record
|
||||
@(@Model.ClassNameFirstLower)Api.detail({ id: props.record.id }).then(res => {
|
||||
@(@props).record = res.data;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 提交数据(新增/编辑)
|
||||
const @(@busName)FormRef = ref<FormInstance>();
|
||||
/** 提交表单 */
|
||||
async function handleSubmit() {
|
||||
@(@busName)FormRef.value?.validate(async valid => {
|
||||
if (!valid) return; //表单验证失败
|
||||
//提交表单
|
||||
await @(@Model.ClassNameFirstLower)Api
|
||||
.submitForm(@(@props).record, @(@props).record.id != undefined)
|
||||
.then(() => {
|
||||
@(@props).successful!(); //调用父组件的successful方法
|
||||
})
|
||||
.finally(() => {
|
||||
onClose();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/** 关闭表单*/
|
||||
function onClose() {
|
||||
visible.value = false;
|
||||
}
|
||||
|
||||
// 暴露给父组件的方法
|
||||
defineExpose({
|
||||
onOpen
|
||||
});
|
||||
</script>
|
||||
|
||||
@{
|
||||
|
||||
//字典生成
|
||||
void DictStore(){
|
||||
if(dictTypes.Count>0){
|
||||
@:const dictStore = useDictStore();
|
||||
@foreach(var column in dictTypes){
|
||||
@:const @(@column.FieldNameFirstLower)Options = dictStore.getDictList("@column.DictTypeCode"); //@(@column.FieldRemark)选项
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Rules(){
|
||||
// 表单验证规则
|
||||
@:const rules = reactive({
|
||||
@foreach(var column in updateColumns){
|
||||
@if(column.WhetherRequired=="Y"){
|
||||
@switch (column.EffectType){
|
||||
case "input":
|
||||
@:@(@column.FieldNameFirstLower): [required("请输入@(@column.FieldRemark)")],
|
||||
break;
|
||||
case "select":
|
||||
case "radio":
|
||||
@:@(@column.FieldNameFirstLower): [required("请选择@(@column.FieldRemark)")],
|
||||
break;
|
||||
deault:
|
||||
@:@(@column.FieldNameFirstLower): [required("请输入@(@column.FieldRemark)")],
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@:});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,192 @@
|
||||
@{
|
||||
var busName= @Model.BusName;//获取业务名称
|
||||
var funcName= @Model.FunctionName;//获取功能名称
|
||||
var author= @Model.AuthorName;//作者
|
||||
var currentTime =@Model.GenTime;
|
||||
var name=@Model.FunctionName+@Model.FunctionNameSuffix;//接口名称
|
||||
var tableFieIds=@Model.TableFields;//获取字段
|
||||
var dataPermission=@Model.DataPermission=="Y";//是否需要数据权限
|
||||
var isLeftTree=@Model.LeftTree!="null";//是否有左侧树
|
||||
var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
|
||||
var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
|
||||
var isMasterChild = @Model.ModuleType=="masterChild";//是否是主子表
|
||||
var treeId=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreeId);//获取树的id
|
||||
var treeName=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreeName);//获取树的名称
|
||||
var treePid=@SimpleTool.StringHelper.FirstCharToLower(@Model.TreePid);//获取树的父级id
|
||||
var showColumns= tableFieIds.Where(it => it.WhetherTable == "Y").ToList();//获取需要显示的字段
|
||||
var resizeColumn=showColumns.Any(it => it.WhetherResizable == "Y");//获取需要显示的字段
|
||||
var dictTypes= tableFieIds.Where(it => !string.IsNullOrEmpty(it.DictTypeCode)).ToList();//获取需要显示的字段
|
||||
}
|
||||
<!--
|
||||
* @@Description: @name
|
||||
* @@Author: @author
|
||||
* @@Date: @currentTime
|
||||
!-->
|
||||
<template>
|
||||
@{Template();}
|
||||
</template>
|
||||
|
||||
@{
|
||||
//Template部分
|
||||
void Template()
|
||||
{
|
||||
ProTable();
|
||||
}
|
||||
|
||||
//表格部分
|
||||
void ProTable()
|
||||
{
|
||||
<div class="table-box">
|
||||
<ProTable ref="proTable" title="@(@funcName)列表" :columns="columns" :request-api="@(@Model.ClassNameFirstLower)Api.page">
|
||||
<!-- 表格 header 按钮 -->
|
||||
<template #tableHeader="scope">
|
||||
<s-button suffix="@funcName" @@click="onOpen(FormOptEnum.ADD)" />
|
||||
<s-button
|
||||
type="danger"
|
||||
plain
|
||||
suffix="@funcName"
|
||||
:opt="FormOptEnum.DELETE"
|
||||
:disabled="!scope.isSelected"
|
||||
@@click="onDelete(scope.selectedListIds, '删除所选@(@funcName)')"
|
||||
/>
|
||||
</template>
|
||||
@{Solt();}
|
||||
@{Operation();}
|
||||
</ProTable>
|
||||
@{Form();}
|
||||
</div>
|
||||
}
|
||||
|
||||
//表格自定义字段
|
||||
void Solt(){
|
||||
foreach(var column in showColumns){
|
||||
@switch (@column.EffectType) {
|
||||
case "image"://图片
|
||||
<!-- @column.FieldName -->
|
||||
<template #@(@column.FieldNameFirstLower)="scope">
|
||||
<el-image :src="scope.row.@(@column.FieldNameFirstLower)" :size="30" />
|
||||
</template>
|
||||
break;
|
||||
case "datepicker"://日期
|
||||
@if(@column.FieldNetType.ToLower()=="date")
|
||||
{
|
||||
<!-- @column.FieldName -->
|
||||
<template #@(@column.FieldNameFirstLower)="scope">
|
||||
{{ scope.row.@(@column.FieldNameFirstLower) && scope.row.@(@column.FieldNameFirstLower).substr(0, 10) }}
|
||||
</template>
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//表格操作
|
||||
void Operation(){
|
||||
<!-- 操作 -->
|
||||
<template #operation="scope">
|
||||
<s-button link :opt="FormOptEnum.EDIT" @@click="onOpen(FormOptEnum.EDIT, scope.row)" />
|
||||
<s-button link :opt="FormOptEnum.DELETE" @@click="onDelete([scope.row.id], `删除所选@(@funcName)`)" />
|
||||
</template>
|
||||
}
|
||||
|
||||
//表单
|
||||
void Form(){
|
||||
<!-- 新增/编辑表单 -->
|
||||
<Form ref="formRef" />
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
<script setup lang="ts" name="@busName">
|
||||
import { @(@Model.ClassNameFirstLower)Api,@(@Model.EntityName) } from "@@/api";
|
||||
import { FormOptEnum } from "@@/enums";
|
||||
import { ColumnProps, ProTableInstance } from "@@/components/ProTable/interface";
|
||||
import Form from "./components/form.vue";
|
||||
import { useHandleData } from "@@/hooks/useHandleData";
|
||||
@if(dictTypes.Count>0){
|
||||
@:import { useDictStore } from "@@/stores/modules";
|
||||
}
|
||||
|
||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数)
|
||||
const proTable = ref<ProTableInstance>();
|
||||
@{DictStore();}
|
||||
|
||||
@{Colums();}
|
||||
|
||||
// 表单引用
|
||||
const formRef = ref<InstanceType<typeof Form> | null>(null);
|
||||
|
||||
/**
|
||||
* 打开表单
|
||||
* @@param opt 操作类型
|
||||
* @@param record 记录
|
||||
*/
|
||||
function onOpen(opt: FormOptEnum, record: {} | @(@Model.EntityName).@(@Model.EntityName)Info = {}) {
|
||||
formRef.value?.onOpen({ opt: opt, record: record, successful: RefreshTable });
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @@param ids id数组
|
||||
*/
|
||||
async function onDelete(ids: string[], msg: string) {
|
||||
// 二次确认 => 请求api => 刷新表格
|
||||
await useHandleData(@(@Model.ClassNameFirstLower)Api.delete, { ids }, msg);
|
||||
RefreshTable();
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新表格
|
||||
*/
|
||||
function RefreshTable() {
|
||||
proTable.value?.refresh();
|
||||
}
|
||||
</script>
|
||||
|
||||
@{
|
||||
|
||||
//字典生成
|
||||
void DictStore(){
|
||||
if(dictTypes.Count>0){
|
||||
@:const dictStore = useDictStore();
|
||||
@foreach(var column in dictTypes){
|
||||
@:const @(@column.FieldNameFirstLower)Options = dictStore.getDictList("@column.DictTypeCode"); //@(@column.FieldRemark)选项
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 表格配置项
|
||||
void Colums(){
|
||||
// 表格配置项
|
||||
@:const columns: ColumnProps<@(@Model.EntityName).@(@Model.EntityName)Info>[] = [
|
||||
@:{ type: "selection", fixed: "left", width: 80 },
|
||||
@foreach(var column in showColumns){
|
||||
@:{ prop: "@column.FieldNameFirstLower", label: "@column.FieldRemark" @{GetEnum(@column);} @{GetSearch(@column);} },
|
||||
}
|
||||
@:{ prop: "operation", label: "操作", width: 230, fixed: "right" }
|
||||
@:];
|
||||
}
|
||||
|
||||
//判断需要添加emum属性
|
||||
void GetEnum(SimpleAdmin.System.GenConfig column){
|
||||
@if(!string.IsNullOrEmpty(column.DictTypeCode)){//如果字典不为空
|
||||
@:,enum: @(@column.FieldNameFirstLower)Options
|
||||
}
|
||||
}
|
||||
|
||||
void GetSearch(SimpleAdmin.System.GenConfig column){
|
||||
@if(column.QueryWhether=="Y"){//如果字典不为空
|
||||
@switch (column.EffectType){
|
||||
case "input":
|
||||
@:, search: { el: "input" }
|
||||
break;
|
||||
case "select":
|
||||
case "radio":
|
||||
@:, search: { el: "select" }
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
Source Server Type: Mysql
|
||||
Date: @Model.GenTime
|
||||
*/
|
||||
|
||||
/*添加菜单*/
|
||||
INSERT INTO `sys_resource` VALUES (@Model.MenuId, 0, '@(@Model.FunctionName)管理', '@Model.BusName', '@Model.MenuCode','', 'MENU', @Model.Module, 'MENU', '@Model.MenuPath', '@Model.MenuComponent', '@Model.Icon',99, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,1,0,'ENABLE',NULL);
|
||||
|
||||
/*添加按钮*/
|
||||
INSERT INTO `sys_resource` VALUES (@Model.AddButtonId, @Model.MenuId, '新增@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Add', '','BUTTON', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*批量删除*/
|
||||
INSERT INTO `sys_resource` VALUES (@Model.BatchDeleteButtonId, @Model.MenuId, '批量删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)BatchDelete', '','BUTTON', NULL, NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*编辑按钮*/
|
||||
INSERT INTO `sys_resource` VALUES (@Model.EditButtonId, @Model.MenuId, '编辑@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Edit','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*删除删除*/
|
||||
INSERT INTO `sys_resource` VALUES (@Model.DeleteButtonId, @Model.MenuId, '删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Delete', '','BUTTON', NULL, NULL, NULL, NULL, NULL, 4, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
Source Server Type: Oracle
|
||||
Date: @Model.GenTime
|
||||
*/
|
||||
|
||||
/*添加菜单*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.MenuId, 0, '@(@Model.FunctionName)管理', '@Model.BusName', '@Model.MenuCode', '', 'MENU', @Model.Module, 'MENU', '@Model.MenuPath', '@Model.MenuComponent', '@Model.Icon', 99, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,1,0,'ENABLE',NULL);
|
||||
|
||||
/*添加按钮*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.AddButtonId, @Model.MenuId, '新增@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Add','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*批量删除*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.BatchDeleteButtonId, @Model.MenuId, '批量删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)BatchDelete','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*编辑按钮*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.EditButtonId, @Model.MenuId, '编辑@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Edit','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*删除删除*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.DeleteButtonId, @Model.MenuId, '删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Delete', '', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 4, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
Source Server Type: SqlServer
|
||||
Date: @Model.GenTime
|
||||
*/
|
||||
|
||||
/*添加菜单*/
|
||||
INSERT INTO [dbo].[sys_resource] VALUES (@Model.MenuId, 0, '@(@Model.FunctionName)管理', '@Model.BusName', '@Model.MenuCode','', 'MENU', @Model.Module, 'MENU', '@Model.MenuPath', '@Model.MenuComponent', '@Model.Icon', 99, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,1,0,'ENABLE',NULL);
|
||||
|
||||
/*添加按钮*/
|
||||
INSERT INTO [dbo].[sys_resource] VALUES (@Model.AddButtonId, @Model.MenuId, '新增@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Add','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*批量删除*/
|
||||
INSERT INTO [dbo].[sys_resource] VALUES (@Model.BatchDeleteButtonId, @Model.MenuId, '批量删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)BatchDelete', '','BUTTON', NULL, NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*编辑按钮*/
|
||||
INSERT INTO [dbo].[sys_resource] VALUES (@Model.EditButtonId, @Model.MenuId, '编辑@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Edit','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*删除删除*/
|
||||
INSERT INTO [dbo].[sys_resource] VALUES (@Model.DeleteButtonId, @Model.MenuId, '删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Delete','', 'BUTTON', NULL, NULL, NULL, NULL, NULL,4, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
Source Server Type: Sqlite
|
||||
Date: @Model.GenTime
|
||||
*/
|
||||
|
||||
/*添加菜单*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.MenuId, 0, '@(@Model.FunctionName)管理', '@Model.BusName', '@Model.MenuCode', '', 'MENU', @Model.Module, 'MENU', '@Model.MenuPath', '@Model.MenuComponent', '@Model.Icon', 99, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*添加按钮*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.AddButtonId, @Model.MenuId, '新增@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Add','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*批量删除*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.BatchDeleteButtonId, @Model.MenuId, '批量删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)BatchDelete','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*编辑按钮*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.EditButtonId, @Model.MenuId, '编辑@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Edit','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
|
||||
/*删除删除*/
|
||||
INSERT INTO "sys_resource" VALUES (@Model.DeleteButtonId, @Model.MenuId, '删除@(@Model.FunctionName)', NULL, '@(@Model.ClassNameFirstLower)Delete','', 'BUTTON', NULL, NULL, NULL, NULL, NULL, 4, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL,NULL,0,0,0,0,0,'ENABLE',NULL);
|
||||
Reference in New Issue
Block a user