喵你个旺呀 1 год назад
Родитель
Сommit
7db7565d43

+ 2 - 0
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -321,8 +321,10 @@ public class SysTenantService : IDynamicApiController, ITransient
         menuList.Add(logMenu);
         menuList.AddRange(allMenuList.ToChildList(u => u.Id, u => u.Pid, u => u.Pid == logMenu.Id && new[]{ "访问日志", "操作日志" }.Contains(u.Title)));
 
+        var flow = _sysTenantRep.Context.Queryable<SysMenu>().First(u => u.Type == MenuTypeEnum.Menu && u.Title == "审批流程");
         menuList.Add(allMenuList.First(u => u.Type == MenuTypeEnum.Dir && u.Title == "帮助文档"));
         menuList.Add(allMenuList.First(u => u.Type == MenuTypeEnum.Menu && u.Title == "关于项目"));
+        menuList.Add(flow);
 
         return menuList.Select(u => new SysTenantMenu { Id=id+=100, TenantId=SqlSugarConst.DefaultTenantId, MenuId=u.Id });
     }

+ 6 - 6
Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Entity/ApprovalFlow.cs

@@ -17,37 +17,37 @@ public class ApprovalFlow : EntityBaseData
     /// </summary>
     [SugarColumn(ColumnDescription = "编号", Length = 32)]
     [MaxLength(32)]
-    public string? Code { get; set; }
+    public virtual string? Code { get; set; }
 
     /// <summary>
     /// 名称
     /// </summary>
     [SugarColumn(ColumnDescription = "名称", Length = 32)]
     [MaxLength(32)]
-    public string Name { get; set; }
+    public virtual string Name { get; set; }
 
     /// <summary>
     /// 表单
     /// </summary>
     [SugarColumn(ColumnDescription = "表单", ColumnDataType = StaticConfig.CodeFirst_BigString)]
-    public string? FormJson { get; set; }
+    public virtual string? FormJson { get; set; }
 
     /// <summary>
     /// 流程
     /// </summary>
     [SugarColumn(ColumnDescription = "流程", ColumnDataType = StaticConfig.CodeFirst_BigString)]
-    public string? FlowJson { get; set; }
+    public virtual string? FlowJson { get; set; }
 
     /// <summary>
     /// 状态
     /// </summary>
     [SugarColumn(ColumnDescription = "状态")]
-    public int? Status { get; set; }
+    public virtual int? Status { get; set; }
 
     /// <summary>
     /// 备注
     /// </summary>
     [SugarColumn(ColumnDescription = "备注", Length = 256)]
     [MaxLength(256)]
-    public string? Remark { get; set; }
+    public virtual string? Remark { get; set; }
 }

+ 2 - 1
Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/SeedData/SysMenuSeedData.cs

@@ -17,9 +17,10 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
     /// <returns></returns>
     public IEnumerable<SysMenu> HasData()
     {
+        var system = new Admin.NET.Core.SysMenuSeedData().HasData().First(u => u.Type == MenuTypeEnum.Dir && u.Title == "系统管理");
         return new[]
         {
-            new SysMenu{ Id=1320000000001, Pid=1310000000301, Title="审批流程", Path="/platform/approvalFlow", Name="approvalFlow", Component="/approvalFlow/index", Icon="ele-Help", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=2000 },
+            new SysMenu{ Id=1309000000001, Pid=system.Id, Title="审批流程", Path="/platform/approvalFlow", Name="approvalFlow", Component="/approvalFlow/index", Icon="ele-Help", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=2000 },
         };
     }
 }

+ 24 - 0
Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/SeedData/SysTenantMenuSeedData.cs

@@ -0,0 +1,24 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+namespace Admin.NET.Plugin.ApprovalFlow;
+
+/// <summary>
+/// 系统租户菜单表种子数据
+/// </summary>
+[IgnoreUpdateSeed]
+public class SysTenantMenuSeedData : ISqlSugarEntitySeedData<SysTenantMenu>
+{
+    /// <summary>
+    /// 种子数据
+    /// </summary>
+    /// <returns></returns>
+    public IEnumerable<SysTenantMenu> HasData()
+    {
+        var id = 1309000000000;
+        return new SysMenuSeedData().HasData().Select(u => new SysTenantMenu { Id=id+=100, TenantId=SqlSugarConst.DefaultTenantId, MenuId=u.Id });
+    }
+}

+ 8 - 11
Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Service/ApprovalFlow/ApprovalFlowService.cs

@@ -31,10 +31,10 @@ public class ApprovalFlowService : IDynamicApiController, ITransient
     public async Task<SqlSugarPagedList<ApprovalFlowOutput>> Page(ApprovalFlowInput input)
     {
         return await _approvalFlowRep.AsQueryable()
-            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Code.Contains(input.Keyword.Trim()) || u.Name.Contains(input.Keyword.Trim()) || u.Remark.Contains(input.Keyword.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Code), u => u.Code.Contains(input.Code.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Remark), u => u.Remark.Contains(input.Remark.Trim()))
+            .WhereIF(!string.IsNullOrWhiteSpace(input.Keyword), u => u.Code.Contains(input.Keyword.Trim()) || u.Name.Contains(input.Keyword.Trim()) || u.Remark.Contains(input.Keyword.Trim()))
             .Select<ApprovalFlowOutput>()
             .ToPagedListAsync(input.Page, input.PageSize);
     }
@@ -48,10 +48,7 @@ public class ApprovalFlowService : IDynamicApiController, ITransient
     public async Task<long> Add(AddApprovalFlowInput input)
     {
         var entity = input.Adapt<ApprovalFlow>();
-        if (input.Code == null)
-        {
-            entity.Code = await LastCode("");
-        }
+        if (input.Code == null) entity.Code = await LastCode("");
         await _approvalFlowRep.InsertAsync(entity);
         return entity.Id;
     }
@@ -74,7 +71,7 @@ public class ApprovalFlowService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "Delete"), HttpPost]
-    public async Task Delete(DeleteApprovalFlowInput input)
+    public async Task Delete(BaseIdInput input)
     {
         var entity = await _approvalFlowRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
         await _approvalFlowRep.FakeDeleteAsync(entity);  // 假删除
@@ -85,7 +82,7 @@ public class ApprovalFlowService : IDynamicApiController, ITransient
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    public async Task<ApprovalFlow> GetDetail([FromQuery] QueryByIdApprovalFlowInput input)
+    public async Task<ApprovalFlow> GetDetail([FromQuery] BaseIdInput input)
     {
         return await _approvalFlowRep.GetFirstAsync(u => u.Id == input.Id);
     }
@@ -119,7 +116,7 @@ public class ApprovalFlowService : IDynamicApiController, ITransient
     {
         var today = DateTime.Now.Date;
         var count = await _approvalFlowRep.AsQueryable().Where(u => u.CreateTime >= today).CountAsync();
-        return prefix + DateTime.Now.ToString("yyMMdd") + string.Format("{0:d2}", count + 1);
+        return prefix + DateTime.Now.ToString("yyMMdd") + $"{count + 1:d2}";
     }
 
     /// <summary>
@@ -136,9 +133,9 @@ public class ApprovalFlowService : IDynamicApiController, ITransient
         var path = request.Path.ToString().Split("/");
 
         var method = request.Method;
-        var qs = request.QueryString;
-        var h = request.Headers;
-        var b = request.Body;
+        var query = request.QueryString;
+        var header = request.Headers;
+        var body = request.Body;
 
         var requestHeaders = request.Headers;
         var responseHeaders = response.Headers;

+ 11 - 95
Admin.NET/Plugins/Admin.NET.Plugin.ApprovalFlow/Service/ApprovalFlow/Dto/ApprovalFlowInput.cs

@@ -6,82 +6,6 @@
 
 namespace Admin.NET.Plugin.ApprovalFlow.Service;
 
-/// <summary>
-/// 审批流基础输入参数
-/// </summary>
-public class ApprovalFlowBaseInput
-{
-    /// <summary>
-    /// 编号
-    /// </summary>
-    public virtual string? Code { get; set; }
-
-    /// <summary>
-    /// 名称
-    /// </summary>
-    public virtual string? Name { get; set; }
-
-    /// <summary>
-    /// 表单
-    /// </summary>
-    public virtual string? FormJson { get; set; }
-
-    /// <summary>
-    /// 流程
-    /// </summary>
-    public virtual string? FlowJson { get; set; }
-
-    /// <summary>
-    /// 备注
-    /// </summary>
-    public virtual string? Remark { get; set; }
-
-    /// <summary>
-    /// 创建时间
-    /// </summary>
-    public virtual DateTime? CreateTime { get; set; }
-
-    /// <summary>
-    /// 更新时间
-    /// </summary>
-    public virtual DateTime? UpdateTime { get; set; }
-
-    /// <summary>
-    /// 创建者Id
-    /// </summary>
-    public virtual long? CreateUserId { get; set; }
-
-    /// <summary>
-    /// 创建者姓名
-    /// </summary>
-    public virtual string? CreateUserName { get; set; }
-
-    /// <summary>
-    /// 修改者Id
-    /// </summary>
-    public virtual long? UpdateUserId { get; set; }
-
-    /// <summary>
-    /// 修改者姓名
-    /// </summary>
-    public virtual string? UpdateUserName { get; set; }
-
-    /// <summary>
-    /// 创建者部门Id
-    /// </summary>
-    public virtual long? CreateOrgId { get; set; }
-
-    /// <summary>
-    /// 创建者部门名称
-    /// </summary>
-    public virtual string? CreateOrgName { get; set; }
-
-    /// <summary>
-    /// 软删除
-    /// </summary>
-    public virtual bool IsDelete { get; set; }
-}
-
 /// <summary>
 /// 审批流分页查询输入参数
 /// </summary>
@@ -106,37 +30,29 @@ public class ApprovalFlowInput : BasePageInput
 /// <summary>
 /// 审批流增加输入参数
 /// </summary>
-public class AddApprovalFlowInput : ApprovalFlowBaseInput
+public class AddApprovalFlowInput : ApprovalFlow
 {
     /// <summary>
-    /// 软删除
+    /// 名称
     /// </summary>
-    [Required(ErrorMessage = "软删除不能为空")]
-    public override bool IsDelete { get; set; }
-}
+    [Required(ErrorMessage = "名称不能为空")]
+    public override string Name { get; set; }
 
-/// <summary>
-/// 审批流删除输入参数
-/// </summary>
-public class DeleteApprovalFlowInput : BaseIdInput
-{
+    /// <summary>
+    /// 状态
+    /// </summary>
+    [Required(ErrorMessage = "状态不能为空")]
+    public override int? Status { get; set; }
 }
 
 /// <summary>
 /// 审批流更新输入参数
 /// </summary>
-public class UpdateApprovalFlowInput : ApprovalFlowBaseInput
+public class UpdateApprovalFlowInput : ApprovalFlow
 {
     /// <summary>
     /// 主键Id
     /// </summary>
     [Required(ErrorMessage = "主键Id不能为空")]
-    public long Id { get; set; }
-}
-
-/// <summary>
-/// 审批流主键查询输入参数
-/// </summary>
-public class QueryByIdApprovalFlowInput : DeleteApprovalFlowInput
-{
+    public override long Id { get; set; }
 }

+ 7 - 18
Web/src/views/approvalFlow/component/editDialog.vue

@@ -14,21 +14,19 @@
 							<el-form-item v-show="false">
 								<el-input v-model="state.ruleForm.id" />
 							</el-form-item>
-							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 								<el-form-item label="编号" prop="code">
 									<el-input v-model="state.ruleForm.code" placeholder="请输入编号" maxlength="32" show-word-limit clearable />
 								</el-form-item>
 							</el-col>
-							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 								<el-form-item label="名称" prop="name" :rules="[{ required: true, message: '名称不能为空', trigger: 'blur' }]">
 									<el-input v-model="state.ruleForm.name" placeholder="请输入名称" maxlength="32" show-word-limit clearable />
 								</el-form-item>
 							</el-col>
-							<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 								<el-form-item label="状态" prop="status" :rules="[{ required: true, message: '状态不能为空', trigger: 'blur' }]">
-									<el-select clearable v-model="state.ruleForm.status" placeholder="请选择状态">
-										<el-option v-for="(item, index) in getEnumStatusData" :key="index" :value="item.value" :label="`${item.describe} [${item.value}]`"></el-option>
-									</el-select>
+									<g-sys-dict code="LabStatusEnum" v-model="state.ruleForm.status" render-as="select" />
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
@@ -42,12 +40,12 @@
 						<el-row :gutter="35">
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 								<el-form-item label="表单" prop="formJson">
-									<el-input v-model="state.ruleForm.formJson" placeholder="请输入表单" type="textarea" maxlength="0" show-word-limit clearable />
+									<el-input v-model="state.ruleForm.formJson" placeholder="请输入表单" type="textarea" maxlength="4096" show-word-limit clearable />
 								</el-form-item>
 							</el-col>
 							<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
 								<el-form-item label="流程" prop="flowJson">
-									<el-input v-model="state.ruleForm.flowJson" placeholder="请输入流程" type="textarea" maxlength="0" show-word-limit clearable />
+									<el-input v-model="state.ruleForm.flowJson" placeholder="请输入流程" type="textarea" maxlength="4096" show-word-limit clearable />
 								</el-form-item>
 							</el-col>
 						</el-row>
@@ -65,15 +63,11 @@
 </template>
 
 <script setup lang="ts">
-import { reactive, ref, onMounted } from 'vue';
+import { reactive, ref } from 'vue';
 import { ElMessage } from 'element-plus';
 import type { FormRules } from 'element-plus';
-
 import { getAPI } from '/@/utils/axios-utils';
 import { ApprovalFlowApi } from '/@/api-plugins/approvalFlow/api';
-import { SysEnumApi } from '/@/api-services/api';
-
-const getEnumStatusData = ref<any>([]);
 
 // 父级传递来的参数
 var props = defineProps({
@@ -108,11 +102,6 @@ const rules = ref<FormRules>({
 	],
 });
 
-// 页面加载时
-onMounted(async () => {
-	// getEnumStatusData.value = (await getAPI(SysEnumApi).apiSysEnumEnumDataListGet('LabStatusEnum')).data.result ?? [];
-});
-
 // 打开弹窗
 const openDialog = async (row: any) => {
 	let rowData = JSON.parse(JSON.stringify(row));