1. 生产模块按工序拆分为两个一级菜单 - 生产-前缫(落丝记录)、生产-后缫(纤度检验、黑板检验) - 旧的「生产管理」(/prod) 目录及子菜单由种子自动清理,页面组件与权限标识保持不变 - 消息中心跳转路径、首页快捷入口路径同步更新 2. 职工管理独立为一级菜单(原挂在「基础数据」目录下),并清理历史子菜单 3. 修复侧边栏菜单展开卡顿(基础数据等子项较多的目录尤其明显) - 去掉 Element Plus 的 height 过渡动画(会逐帧重排全部子项) - 收起时改用 height:0 + visibility:hidden 而非 display:none,子项提前完成布局 - 菜单区独立滚动并预留滚动条宽度(scrollbar-gutter),消除展开时的横向抖动 - 菜单项增加 contain 布局隔离,淡入动画改为容器级 4. 修复页面首次打开重复请求 - 分页组件挂载时会触发一次 current-change,页码未变化时不再重复加载(18 个页面) - 职工管理去掉 onMounted 与默认选中部门的重复加载 - 工种管理、原料庄口的注册表下拉由按 key 多次请求改为一次全量拉取 5. 后端增加前端静态托管与 SPA 路由回退,支持 IIS 单站点部署(前后端同源) 6. 新增部署脚本 deploy-iis.ps1(首次部署)与 update-iis.ps1(更新发布)
51 lines
2.5 KiB
C#
51 lines
2.5 KiB
C#
using F9WebAiTest.Application.Common;
|
|
using F9WebAiTest.Application.Dtos.SYS.Employees;
|
|
using F9WebAiTest.Application.Interfaces.Repositories.SYS.Employees;
|
|
using F9WebAiTest.Domain.Enums.SYS.Employees;
|
|
using MediatR;
|
|
|
|
namespace F9WebAiTest.Application.CQRS.SYS.Employees.Queries;
|
|
|
|
/// <summary>职工分页查询(部门含子部门 + 工种 + 在职状态 + 班次 + 关键字)</summary>
|
|
public record GetEmployeePagedQuery(long DepId = 0, long WorktypeId = 0, Employee_WorkStatus_Enum? WorkStatus = null,
|
|
Prod_Banci_Enum? Banci = null, string Like = "", int PageIndex = 1, int PageSize = 20)
|
|
: IRequest<PageResult<EmployeeReadDto_View>>;
|
|
|
|
public class GetEmployeePagedQueryHandler(IEmployeeReadRepository readRepository)
|
|
: IRequestHandler<GetEmployeePagedQuery, PageResult<EmployeeReadDto_View>>
|
|
{
|
|
public async Task<PageResult<EmployeeReadDto_View>> Handle(GetEmployeePagedQuery query, CancellationToken ct)
|
|
=> await readRepository.GetPagedAsync(query.DepId, query.WorktypeId, query.WorkStatus, query.Banci,
|
|
query.Like, query.PageIndex, query.PageSize);
|
|
}
|
|
|
|
/// <summary>按 Id 查询职工(编辑回显)</summary>
|
|
public record GetEmployeeByIdQuery(long Id) : IRequest<EmployeeReadDto_Edit>;
|
|
|
|
public class GetEmployeeByIdQueryHandler(IEmployeeReadRepository readRepository)
|
|
: IRequestHandler<GetEmployeeByIdQuery, EmployeeReadDto_Edit>
|
|
{
|
|
public async Task<EmployeeReadDto_Edit> Handle(GetEmployeeByIdQuery query, CancellationToken ct)
|
|
=> await readRepository.GetByIdForEditAsync(query.Id);
|
|
}
|
|
|
|
/// <summary>职工变更记录</summary>
|
|
public record GetEmployeeChangeRecordsQuery(long EmployeeId) : IRequest<List<EmployeeChangeRecordDto>>;
|
|
|
|
public class GetEmployeeChangeRecordsQueryHandler(IEmployeeReadRepository readRepository)
|
|
: IRequestHandler<GetEmployeeChangeRecordsQuery, List<EmployeeChangeRecordDto>>
|
|
{
|
|
public async Task<List<EmployeeChangeRecordDto>> Handle(GetEmployeeChangeRecordsQuery query, CancellationToken ct)
|
|
=> await readRepository.GetChangeRecordsAsync(query.EmployeeId);
|
|
}
|
|
|
|
/// <summary>职工调岗记录</summary>
|
|
public record GetEmployeeTiaogangRecordsQuery(long EmployeeId) : IRequest<List<EmployeeTiaogangRecordDto>>;
|
|
|
|
public class GetEmployeeTiaogangRecordsQueryHandler(IEmployeeReadRepository readRepository)
|
|
: IRequestHandler<GetEmployeeTiaogangRecordsQuery, List<EmployeeTiaogangRecordDto>>
|
|
{
|
|
public async Task<List<EmployeeTiaogangRecordDto>> Handle(GetEmployeeTiaogangRecordsQuery query, CancellationToken ct)
|
|
=> await readRepository.GetTiaogangRecordsAsync(query.EmployeeId);
|
|
}
|