liaoxujun@qq.com
2024-03-28 621e7691fc0cdce02c708531a37abfa7413a123a
no message
2个文件已修改
1个文件已删除
10个文件已添加
8635 ■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IRepository/apply/IapplyModelRepository.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IServices/apply/IapplyModelServices.cs 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/baifenbingfa/apply/applyModel.cs 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Repository/apply/applyModelRepository.cs 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Services/Apply/applyModelServices.cs 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/Controllers/apply/applyModelController.cs 944 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.csproj 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.xml 6103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/applymodel/create.html 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/applymodel/details.html 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/applymodel/edit.html 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/applymodel/index.html 467 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -58,3 +58,4 @@
Chuanyin.Attribute/bin/
Chuanyin.Attribute/obj/
CoreCms.Net.Model/CoreCms.Net.Model.xml
CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.xml
CoreCms.Net.IRepository/apply/IapplyModelRepository.cs
New file
@@ -0,0 +1,99 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/3/28 10:37:35
 *        Description: 暂无
 ***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.Entities.baifenbingfa.apply;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.IRepository
{
    /// <summary>
    /// 审批流程 工厂接口
    /// </summary>
    public interface IapplyModelRepository : IBaseRepository<applyModel>
    {
        #region 重写增删改查操作===========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> InsertAsync(applyModel entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(applyModel entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(List<applyModel> entity);
        /// <summary>
        /// 重写删除指定ID的数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> DeleteByIdAsync(object id);
        /// <summary>
        /// 重写删除指定ID集合的数据(批量删除)
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
        #endregion
        #region 获取缓存的所有数据==========================================================
        /// <summary>
        /// 获取缓存的所有数据
        /// </summary>
        /// <returns></returns>
        Task<List<applyModel>> GetCaChe();
        #endregion
        /// <summary>
        ///     重写根据条件查询分页数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="pageIndex">当前页面索引</param>
        /// <param name="pageSize">分布大小</param>
        /// <param name="orderByExpression"></param>
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        Task<IPageList<applyModel>> QueryPageAsync(
            Expression<Func<applyModel, bool>> predicate,
            Expression<Func<applyModel, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
    }
}
CoreCms.Net.IServices/apply/IapplyModelServices.cs
New file
@@ -0,0 +1,95 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/3/28 10:37:35
 *        Description: 暂无
 ***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.Entities.baifenbingfa.apply;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.IServices
{
    /// <summary>
    /// 审批流程 服务工厂接口
    /// </summary>
    public interface IapplyModelServices : IBaseServices<applyModel>
    {
        #region 重写增删改查操作===========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> InsertAsync(applyModel entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(applyModel entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(List<applyModel> entity);
        /// <summary>
        /// 重写删除指定ID的数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> DeleteByIdAsync(object id);
        /// <summary>
        /// 重写删除指定ID集合的数据(批量删除)
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids);
        #endregion
        #region 获取缓存的所有数据==========================================================
        /// <summary>
        /// 获取缓存的所有数据
        /// </summary>
        /// <returns></returns>
        Task<List<applyModel>> GetCaChe();
        #endregion
        #region 重写根据条件查询分页数据
        /// <summary>
        ///     重写根据条件查询分页数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="pageIndex">当前页面索引</param>
        /// <param name="pageSize">分布大小</param>
        /// <param name="orderByExpression"></param>
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        Task<IPageList<applyModel>> QueryPageAsync(
            Expression<Func<applyModel, bool>> predicate,
            Expression<Func<applyModel, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
        #endregion
    }
}
CoreCms.Net.Model/Entities/baifenbingfa/apply/applyModel.cs
New file
@@ -0,0 +1,131 @@
using Chuanyin.Attribute;
using CoreCms.Net.Model.Entities.baseModel;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CoreCms.Net.Model.Entities.baifenbingfa.apply
{
    /// <summary>
    /// 审批流程
    /// </summary>
    [SqlCodeFirst]
    public class applyModel: BFBaseModel
    {
        /// <summary>
        /// id
        /// </summary>
        [SugarColumn(ColumnDescription = "id",IsIdentity =true,IsPrimaryKey =true)]
        [Display(Name = "id")]
        public int id  { get; set; }
        /// <summary>
        /// 审批人ID用,分割
        /// </summary>
        [Display(Name = "审批人ID用,分割")]
        [SugarColumn(ColumnDescription = "审批人ID", IsNullable = true)]
        public string managerID {  get; set; }
        /// <summary>
        /// 审批角色ID,号分割
        /// </summary>
        [Display(Name = "审批角色ID")]
        [SugarColumn(ColumnDescription = "审批角色ID")]
        public string roleID { get; set; }
        /// <summary>
        /// 审核人数数量
        /// </summary>
        [Display(Name = "审核人数数量")]
        [SugarColumn(ColumnDescription = "审核人数数量")]
        public int managerApplyCount { get; set; }
        /// <summary>
        /// 类型
        /// </summary>
        [Display(Name = "类型")]
        [SugarColumn(ColumnDescription = "类型")]
        public applyType aType { get; set; }
        /// <summary>
        /// 内容
        /// </summary>
        [Display(Name = "内容")]
        [SugarColumn(ColumnDescription = "内容")]
        public string dec { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        [Display(Name = "备注")]
        [SugarColumn(ColumnDescription = "备注",IsNullable =true)]
        public string reMake { get; set; }
        /// <summary>
        /// 调整前数据
        /// </summary>
        [Display(Name = "调整前数据")]
        [SugarColumn(ColumnDescription = "调整前数据", IsNullable = true)]
        public string oldData { get; set; }
        /// <summary>
        /// 调整数据
        /// </summary>
        [Display(Name = "调整数据")]
        [SugarColumn(ColumnDescription = "调整数据")]
        public string data { get; set; }
    }
    /// <summary>
    /// 审批申请类型
    /// </summary>
    public enum applyType
    {
        /// <summary>
        /// 积分
        /// </summary>
        [Description("积分")]
        points,
        /// <summary>
        /// 余额
        /// </summary>
        [Description("余额")]
        Balance,
        /// <summary>
        /// 推荐人
        /// </summary>
        [Description("推荐人")]
        Referrer,
    }
    /// <summary>
    /// 审批状态
    /// </summary>
    public enum applyStataType
    {
        /// <summary>
        /// 同意
        /// </summary>
        [Description("同意")]
        ok,
        /// <summary>
        /// 审核中
        /// </summary>
        [Description("审核中")]
        applying,
        /// <summary>
        /// 拒绝
        /// </summary>
        [Description("拒绝")]
        no
    }
}
CoreCms.Net.Repository/apply/applyModelRepository.cs
New file
@@ -0,0 +1,230 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/3/28 10:37:35
 *        Description: 暂无
 ***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Caching.Manual;
using CoreCms.Net.Configuration;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.IRepository;
using CoreCms.Net.IRepository.UnitOfWork;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
using CoreCms.Net.Model.Entities.baifenbingfa.apply;
namespace CoreCms.Net.Repository
{
    /// <summary>
    /// 审批流程 接口实现
    /// </summary>
    public class applyModelRepository : BaseRepository<applyModel>, IapplyModelRepository
    {
        private readonly IUnitOfWork _unitOfWork;
        public applyModelRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
        {
            _unitOfWork = unitOfWork;
        }
       #region 实现重写增删改查操作==========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> InsertAsync(applyModel entity)
        {
            var jm = new AdminUiCallBack();
            var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0;
            jm.code = bl ? 0 : 1;
            jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure;
            return jm;
        }
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> UpdateAsync(applyModel entity)
        {
            var jm = new AdminUiCallBack();
            var oldModel = await DbClient.Queryable<applyModel>().In(entity.id).SingleAsync();
            if (oldModel == null)
            {
            jm.msg = "不存在此信息";
            return jm;
            }
            //事物处理过程开始
            oldModel.id = entity.id;
            oldModel.managerID = entity.managerID;
            oldModel.roleID = entity.roleID;
            oldModel.managerApplyCount = entity.managerApplyCount;
            oldModel.aType = entity.aType;
            oldModel.dec = entity.dec;
            oldModel.reMake = entity.reMake;
            oldModel.oldData = entity.oldData;
            oldModel.data = entity.data;
            oldModel.createTime = entity.createTime;
            oldModel.upDataTime = entity.upDataTime;
            oldModel.createBy = entity.createBy;
            oldModel.upDataBy = entity.upDataBy;
            oldModel.isdelete = entity.isdelete;
            //事物处理过程结束
            var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync();
            jm.code = bl ? 0 : 1;
            jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
            return jm;
        }
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> UpdateAsync(List<applyModel> entity)
        {
            var jm = new AdminUiCallBack();
            var bl = await DbClient.Updateable(entity).ExecuteCommandHasChangeAsync();
            jm.code = bl ? 0 : 1;
            jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
            return jm;
        }
        /// <summary>
        /// 重写删除指定ID的数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> DeleteByIdAsync(object id)
        {
            var jm = new AdminUiCallBack();
            var bl = await DbClient.Deleteable<applyModel>(id).ExecuteCommandHasChangeAsync();
            jm.code = bl ? 0 : 1;
            jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
            return jm;
        }
        /// <summary>
        /// 重写删除指定ID集合的数据(批量删除)
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
        {
            var jm = new AdminUiCallBack();
            var bl = await DbClient.Deleteable<applyModel>().In(ids).ExecuteCommandHasChangeAsync();
            jm.code = bl ? 0 : 1;
            jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;
            return jm;
        }
        #endregion
       #region 获取缓存的所有数据==========================================================
        /// <summary>
        /// 获取缓存的所有数据
        /// </summary>
        /// <returns></returns>
        public async Task<List<applyModel>> GetCaChe()
        {
           var list = await DbClient.Queryable<applyModel>().With(SqlWith.NoLock).WithCache().ToListAsync();
            return list;
        }
        #endregion
        #region 重写根据条件查询分页数据
        /// <summary>
        ///     重写根据条件查询分页数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="pageIndex">当前页面索引</param>
        /// <param name="pageSize">分布大小</param>
        /// <param name="orderByExpression"></param>
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        public async Task<IPageList<applyModel>> QueryPageAsync(Expression<Func<applyModel, bool>> predicate,
            Expression<Func<applyModel, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            RefAsync<int> totalCount = 0;
            List<applyModel> page;
            if (blUseNoLock)
            {
                page = await DbClient.Queryable<applyModel>()
                .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                .WhereIF(predicate != null, predicate).Select(p => new applyModel
                {
                      id = p.id,
                managerID = p.managerID,
                roleID = p.roleID,
                managerApplyCount = p.managerApplyCount,
                aType = p.aType,
                dec = p.dec,
                reMake = p.reMake,
                oldData = p.oldData,
                data = p.data,
                createTime = p.createTime,
                upDataTime = p.upDataTime,
                createBy = p.createBy,
                upDataBy = p.upDataBy,
                isdelete = p.isdelete,
                }).With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            else
            {
                page = await DbClient.Queryable<applyModel>()
                .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                .WhereIF(predicate != null, predicate).Select(p => new applyModel
                {
                      id = p.id,
                managerID = p.managerID,
                roleID = p.roleID,
                managerApplyCount = p.managerApplyCount,
                aType = p.aType,
                dec = p.dec,
                reMake = p.reMake,
                oldData = p.oldData,
                data = p.data,
                createTime = p.createTime,
                upDataTime = p.upDataTime,
                createBy = p.createBy,
                upDataBy = p.upDataBy,
                isdelete = p.isdelete,
                }).ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            var list = new PageList<applyModel>(page, pageIndex, pageSize, totalCount);
            return list;
        }
        #endregion
    }
}
CoreCms.Net.Services/Apply/applyModelServices.cs
New file
@@ -0,0 +1,130 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/3/28 10:37:35
 *        Description: 暂无
 ***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.IRepository;
using CoreCms.Net.IRepository.UnitOfWork;
using CoreCms.Net.IServices;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.Entities.baifenbingfa.apply;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.Services
{
    /// <summary>
    /// 审批流程 接口实现
    /// </summary>
    public class applyModelServices : BaseServices<applyModel>, IapplyModelServices
    {
        private readonly IapplyModelRepository _dal;
        private readonly IUnitOfWork _unitOfWork;
        public applyModelServices(IUnitOfWork unitOfWork, IapplyModelRepository dal)
        {
            this._dal = dal;
            base.BaseDal = dal;
            _unitOfWork = unitOfWork;
        }
        #region 实现重写增删改查操作==========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> InsertAsync(applyModel entity)
        {
            return await _dal.InsertAsync(entity);
        }
        /// <summary>
        /// 重写异步更新方法方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> UpdateAsync(applyModel entity)
        {
            return await _dal.UpdateAsync(entity);
        }
        /// <summary>
        /// 重写异步更新方法方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> UpdateAsync(List<applyModel> entity)
        {
            return await _dal.UpdateAsync(entity);
        }
        /// <summary>
        /// 重写删除指定ID的数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> DeleteByIdAsync(object id)
        {
            return await _dal.DeleteByIdAsync(id);
        }
        /// <summary>
        /// 重写删除指定ID集合的数据(批量删除)
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> DeleteByIdsAsync(int[] ids)
        {
            return await _dal.DeleteByIdsAsync(ids);
        }
        #endregion
        #region 获取缓存的所有数据==========================================================
        /// <summary>
        /// 获取缓存的所有数据
        /// </summary>
        /// <returns></returns>
        public async Task<List<applyModel>> GetCaChe()
        {
            return await _dal.GetCaChe();
        }
        #endregion
       #region 重写根据条件查询分页数据
        /// <summary>
        ///     重写根据条件查询分页数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="pageIndex">当前页面索引</param>
        /// <param name="pageSize">分布大小</param>
        /// <param name="orderByExpression"></param>
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        public async Task<IPageList<applyModel>> QueryPageAsync(Expression<Func<applyModel, bool>> predicate,
            Expression<Func<applyModel, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
        }
        #endregion
    }
}
CoreCms.Net.Web.Admin/Controllers/apply/applyModelController.cs
New file
@@ -0,0 +1,944 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/3/28 10:37:35
 *        Description: 暂无
 ***********************************************************************/
using System;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Configuration;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.Entities.Expression;
using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Filter;
using CoreCms.Net.Loging;
using CoreCms.Net.IServices;
using CoreCms.Net.Utility.Helper;
using CoreCms.Net.Utility.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using NPOI.HSSF.UserModel;
using SqlSugar;
using CoreCms.Net.Web.Admin.Infrastructure;
using CoreCms.Net.Model.Entities.baifenbingfa.apply;
namespace CoreCms.Net.Web.Admin.Controllers
{
    /// <summary>
    /// 审批流程
    ///</summary>
    [Description("审批流程")]
    [Route("api/[controller]/[action]")]
    [ApiController]
    [RequiredErrorForAdmin]
    [Authorize(Permissions.Name)]
    public class applyModelController : ControllerBase
    {
        private readonly IWebHostEnvironment _webHostEnvironment;
        private readonly IapplyModelServices _applyModelServices;
        /// <summary>
        /// 构造函数
        ///</summary>
        public applyModelController(IWebHostEnvironment webHostEnvironment
            ,IapplyModelServices applyModelServices
            )
        {
            _webHostEnvironment = webHostEnvironment;
            _applyModelServices = applyModelServices;
        }
        #region 获取列表============================================================
        // POST: Api/applyModel/GetPageList
         /// <summary>
        /// 获取列表
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("获取列表")]
        public async Task<AdminUiCallBack> GetPageList()
        {
            var jm = new AdminUiCallBack();
            var pageCurrent = Request.Form["page"].FirstOrDefault().ObjectToInt(1);
            var pageSize = Request.Form["limit"].FirstOrDefault().ObjectToInt(30);
            var where = PredicateBuilder.True<applyModel>();
            //获取排序字段
            var orderField = Request.Form["orderField"].FirstOrDefault();
            Expression<Func<applyModel, object>> orderEx = orderField switch
            {
                "id" => p => p.id,"managerID" => p => p.managerID,"roleID" => p => p.roleID,"managerApplyCount" => p => p.managerApplyCount,"aType" => p => p.aType,"dec" => p => p.dec,"reMake" => p => p.reMake,"oldData" => p => p.oldData,"data" => p => p.data,"createTime" => p => p.createTime,"upDataTime" => p => p.upDataTime,"createBy" => p => p.createBy,"upDataBy" => p => p.upDataBy,"isdelete" => p => p.isdelete,
                _ => p => p.id
            };
            //设置排序方式
            var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
            var orderBy = orderDirection switch
            {
                "asc" => OrderByType.Asc,
                "desc" => OrderByType.Desc,
                _ => OrderByType.Desc
            };
            //查询筛选
            //id int
            var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
            if (id > 0)
            {
                where = where.And(p => p.id == id);
            }
            //审批人ID varchar
            var managerID = Request.Form["managerID"].FirstOrDefault();
            if (!string.IsNullOrEmpty(managerID))
            {
                where = where.And(p => p.managerID.Contains(managerID));
            }
            //审批角色ID varchar
            var roleID = Request.Form["roleID"].FirstOrDefault();
            if (!string.IsNullOrEmpty(roleID))
            {
                where = where.And(p => p.roleID.Contains(roleID));
            }
            //审核人数数量 int
            var managerApplyCount = Request.Form["managerApplyCount"].FirstOrDefault().ObjectToInt(0);
            if (managerApplyCount > 0)
            {
                where = where.And(p => p.managerApplyCount == managerApplyCount);
            }
            //类型 int
            var aType = Request.Form["aType"].FirstOrDefault().ObjectToInt(0);
            if (aType > 0)
            {
                where = where.And(p => p.aType ==(applyType)aType);
            }
            //内容 varchar
            var dec = Request.Form["dec"].FirstOrDefault();
            if (!string.IsNullOrEmpty(dec))
            {
                where = where.And(p => p.dec.Contains(dec));
            }
            //备注 varchar
            var reMake = Request.Form["reMake"].FirstOrDefault();
            if (!string.IsNullOrEmpty(reMake))
            {
                where = where.And(p => p.reMake.Contains(reMake));
            }
            //调整前数据 varchar
            var oldData = Request.Form["oldData"].FirstOrDefault();
            if (!string.IsNullOrEmpty(oldData))
            {
                where = where.And(p => p.oldData.Contains(oldData));
            }
            //调整数据 varchar
            var data = Request.Form["data"].FirstOrDefault();
            if (!string.IsNullOrEmpty(data))
            {
                where = where.And(p => p.data.Contains(data));
            }
            //建立时间 datetime
            var createTime = Request.Form["createTime"].FirstOrDefault();
            if (!string.IsNullOrEmpty(createTime))
            {
                if (createTime.Contains("到"))
                {
                    var dts = createTime.Split("到");
                    var dtStart = dts[0].Trim().ObjectToDate();
                    where = where.And(p => p.createTime > dtStart);
                    var dtEnd = dts[1].Trim().ObjectToDate();
                    where = where.And(p => p.createTime < dtEnd);
                }
                else
                {
                    var dt = createTime.ObjectToDate();
                    where = where.And(p => p.createTime > dt);
                }
            }
            //修改时间 datetime
            var upDataTime = Request.Form["upDataTime"].FirstOrDefault();
            if (!string.IsNullOrEmpty(upDataTime))
            {
                if (upDataTime.Contains("到"))
                {
                    var dts = upDataTime.Split("到");
                    var dtStart = dts[0].Trim().ObjectToDate();
                    where = where.And(p => p.upDataTime > dtStart);
                    var dtEnd = dts[1].Trim().ObjectToDate();
                    where = where.And(p => p.upDataTime < dtEnd);
                }
                else
                {
                    var dt = upDataTime.ObjectToDate();
                    where = where.And(p => p.upDataTime > dt);
                }
            }
            //创建人 varchar
            var createBy = Request.Form["createBy"].FirstOrDefault();
            if (!string.IsNullOrEmpty(createBy))
            {
                where = where.And(p => p.createBy.Contains(createBy));
            }
            //修改人 varchar
            var upDataBy = Request.Form["upDataBy"].FirstOrDefault();
            if (!string.IsNullOrEmpty(upDataBy))
            {
                where = where.And(p => p.upDataBy.Contains(upDataBy));
            }
            //删除标志 bit
            var isdelete = Request.Form["isdelete"].FirstOrDefault();
            if (!string.IsNullOrEmpty(isdelete) && isdelete.ToLowerInvariant() == "true")
            {
                where = where.And(p => p.isdelete == true);
            }
            else if (!string.IsNullOrEmpty(isdelete) && isdelete.ToLowerInvariant() == "false")
            {
                where = where.And(p => p.isdelete == false);
            }
            //获取数据
            var list = await _applyModelServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize, true);
            //返回数据
            jm.data = list;
            jm.code = 0;
            jm.count = list.TotalCount;
            jm.msg = "数据调用成功!";
            return jm;
        }
        #endregion
        #region 首页数据============================================================
        // POST: Api/applyModel/GetIndex
        /// <summary>
        /// 首页数据
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("首页数据")]
        public AdminUiCallBack GetIndex()
        {
            //返回数据
            var jm = new AdminUiCallBack { code = 0 };
            return jm;
        }
        #endregion
        #region 创建数据============================================================
        // POST: Api/applyModel/GetCreate
        /// <summary>
        /// 创建数据
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("创建数据")]
        public AdminUiCallBack GetCreate()
        {
            //返回数据
            var jm = new AdminUiCallBack { code = 0 };
            return jm;
        }
        #endregion
        #region 创建提交============================================================
        // POST: Api/applyModel/DoCreate
        /// <summary>
        /// 创建提交
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("创建提交")]
        public async Task<AdminUiCallBack> DoCreate([FromBody]applyModel entity)
        {
            var jm = await _applyModelServices.InsertAsync(entity);
            return jm;
        }
        #endregion
        #region 编辑数据============================================================
        // POST: Api/applyModel/GetEdit
        /// <summary>
        /// 编辑数据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("编辑数据")]
        public async Task<AdminUiCallBack> GetEdit([FromBody]FMIntId entity)
        {
            var jm = new AdminUiCallBack();
            var model = await _applyModelServices.QueryByIdAsync(entity.id, false);
            if (model == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            jm.code = 0;
            jm.data = model;
            return jm;
        }
        #endregion
        #region 编辑提交============================================================
        // POST: Api/applyModel/Edit
        /// <summary>
        /// 编辑提交
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("编辑提交")]
        public async Task<AdminUiCallBack> DoEdit([FromBody]applyModel entity)
        {
            var jm = await _applyModelServices.UpdateAsync(entity);
            return jm;
        }
        #endregion
        #region 删除数据============================================================
        // POST: Api/applyModel/DoDelete/10
        /// <summary>
        /// 单选删除
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("单选删除")]
        public async Task<AdminUiCallBack> DoDelete([FromBody]FMIntId entity)
        {
            var jm = new AdminUiCallBack();
            var model = await _applyModelServices.ExistsAsync(p => p.id == entity.id, true);
            if (!model)
            {
                jm.msg = GlobalConstVars.DataisNo;
                return jm;
            }
            jm = await _applyModelServices.DeleteByIdAsync(entity.id);
            return jm;
        }
        #endregion
        #region 批量删除============================================================
        // POST: Api/applyModel/DoBatchDelete/10,11,20
        /// <summary>
        /// 批量删除
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("批量删除")]
        public async Task<AdminUiCallBack> DoBatchDelete([FromBody]FMArrayIntIds entity)
        {
            var jm = await _applyModelServices.DeleteByIdsAsync(entity.id);
            return jm;
        }
        #endregion
        #region 预览数据============================================================
        // POST: Api/applyModel/GetDetails/10
        /// <summary>
        /// 预览数据
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("预览数据")]
        public async Task<AdminUiCallBack> GetDetails([FromBody]FMIntId entity)
        {
            var jm = new AdminUiCallBack();
            var model = await _applyModelServices.QueryByIdAsync(entity.id, false);
            if (model == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            jm.code = 0;
            jm.data = model;
            return jm;
        }
        #endregion
        #region 选择导出============================================================
        // POST: Api/applyModel/SelectExportExcel/10
        /// <summary>
        /// 选择导出
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("选择导出")]
        public async Task<AdminUiCallBack> SelectExportExcel([FromBody]FMArrayIntIds entity)
        {
            var jm = new AdminUiCallBack();
            //创建Excel文件的对象
            var book = new HSSFWorkbook();
            //添加一个sheet
            var mySheet = book.CreateSheet("Sheet1");
            //获取list数据
            var listModel = await _applyModelServices.QueryListByClauseAsync(p => entity.id.Contains(p.id), p => p.id, OrderByType.Asc, true);
            //给sheet1添加第一行的头部标题
            var headerRow = mySheet.CreateRow(0);
            var headerStyle = ExcelHelper.GetHeaderStyle(book);
            var cellNum = 0;
            var cell0 = headerRow.CreateCell(cellNum);
            cell0.SetCellValue("id");
            cell0.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell1 = headerRow.CreateCell(cellNum);
            cell1.SetCellValue("审批人ID");
            cell1.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell2 = headerRow.CreateCell(cellNum);
            cell2.SetCellValue("审批角色ID");
            cell2.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell3 = headerRow.CreateCell(cellNum);
            cell3.SetCellValue("审核人数数量");
            cell3.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell4 = headerRow.CreateCell(cellNum);
            cell4.SetCellValue("类型");
            cell4.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell5 = headerRow.CreateCell(cellNum);
            cell5.SetCellValue("内容");
            cell5.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell6 = headerRow.CreateCell(cellNum);
            cell6.SetCellValue("备注");
            cell6.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell7 = headerRow.CreateCell(cellNum);
            cell7.SetCellValue("调整前数据");
            cell7.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell8 = headerRow.CreateCell(cellNum);
            cell8.SetCellValue("调整数据");
            cell8.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell9 = headerRow.CreateCell(cellNum);
            cell9.SetCellValue("建立时间");
            cell9.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell10 = headerRow.CreateCell(cellNum);
            cell10.SetCellValue("修改时间");
            cell10.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell11 = headerRow.CreateCell(cellNum);
            cell11.SetCellValue("创建人");
            cell11.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell12 = headerRow.CreateCell(cellNum);
            cell12.SetCellValue("修改人");
            cell12.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell13 = headerRow.CreateCell(cellNum);
            cell13.SetCellValue("删除标志");
            cell13.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            headerRow.Height = 30 * 20;
            var commonCellStyle = ExcelHelper.GetCommonStyle(book);
            //将数据逐步写入sheet1各个行
            for (var i = 0; i < listModel.Count; i++)
            {
                var rowTemp = mySheet.CreateRow(i + 1);
                var cellNumTemp = 0;
                    var rowTemp0 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp0.SetCellValue(listModel[i].id.ToString());
                        rowTemp0.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp1 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp1.SetCellValue(listModel[i].managerID.ToString());
                        rowTemp1.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp2 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp2.SetCellValue(listModel[i].roleID.ToString());
                        rowTemp2.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp3 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp3.SetCellValue(listModel[i].managerApplyCount.ToString());
                        rowTemp3.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp4 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp4.SetCellValue(listModel[i].aType.ToString());
                        rowTemp4.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp5 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp5.SetCellValue(listModel[i].dec.ToString());
                        rowTemp5.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp6 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp6.SetCellValue(listModel[i].reMake.ToString());
                        rowTemp6.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp7 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp7.SetCellValue(listModel[i].oldData.ToString());
                        rowTemp7.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp8 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp8.SetCellValue(listModel[i].data.ToString());
                        rowTemp8.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp9 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp9.SetCellValue(listModel[i].createTime.ToString());
                        rowTemp9.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp10 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp10.SetCellValue(listModel[i].upDataTime.ToString());
                        rowTemp10.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp11 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp11.SetCellValue(listModel[i].createBy.ToString());
                        rowTemp11.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp12 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp12.SetCellValue(listModel[i].upDataBy.ToString());
                        rowTemp12.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp13 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp13.SetCellValue(listModel[i].isdelete.ToString());
                        rowTemp13.CellStyle = commonCellStyle;
                        cellNumTemp++;
            }
            // 导出excel
            string webRootPath = _webHostEnvironment.WebRootPath;
            string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
            string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-applyModel导出(选择结果).xls";
            string filePath = webRootPath + tpath;
            DirectoryInfo di = new DirectoryInfo(filePath);
            if (!di.Exists)
            {
                di.Create();
            }
            FileStream fileHssf = new FileStream(filePath + fileName, FileMode.Create);
            book.Write(fileHssf);
            fileHssf.Close();
            jm.code = 0;
            jm.msg = GlobalConstVars.ExcelExportSuccess;
            jm.data = tpath + fileName;
            return jm;
        }
        #endregion
        #region 查询导出============================================================
        // POST: Api/applyModel/QueryExportExcel/10
        /// <summary>
        /// 查询导出
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("查询导出")]
        public async Task<AdminUiCallBack> QueryExportExcel()
        {
            var jm = new AdminUiCallBack();
            var where = PredicateBuilder.True<applyModel>();
                //查询筛选
            //id int
            var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
            if (id > 0)
            {
                where = where.And(p => p.id == id);
            }
            //审批人ID varchar
            var managerID = Request.Form["managerID"].FirstOrDefault();
            if (!string.IsNullOrEmpty(managerID))
            {
                where = where.And(p => p.managerID.Contains(managerID));
            }
            //审批角色ID varchar
            var roleID = Request.Form["roleID"].FirstOrDefault();
            if (!string.IsNullOrEmpty(roleID))
            {
                where = where.And(p => p.roleID.Contains(roleID));
            }
            //审核人数数量 int
            var managerApplyCount = Request.Form["managerApplyCount"].FirstOrDefault().ObjectToInt(0);
            if (managerApplyCount > 0)
            {
                where = where.And(p => p.managerApplyCount == managerApplyCount);
            }
            //类型 int
            var aType = Request.Form["aType"].FirstOrDefault().ObjectToInt(0);
            if (aType > 0)
            {
                where = where.And(p => p.aType ==(applyType) aType);
            }
            //内容 varchar
            var dec = Request.Form["dec"].FirstOrDefault();
            if (!string.IsNullOrEmpty(dec))
            {
                where = where.And(p => p.dec.Contains(dec));
            }
            //备注 varchar
            var reMake = Request.Form["reMake"].FirstOrDefault();
            if (!string.IsNullOrEmpty(reMake))
            {
                where = where.And(p => p.reMake.Contains(reMake));
            }
            //调整前数据 varchar
            var oldData = Request.Form["oldData"].FirstOrDefault();
            if (!string.IsNullOrEmpty(oldData))
            {
                where = where.And(p => p.oldData.Contains(oldData));
            }
            //调整数据 varchar
            var data = Request.Form["data"].FirstOrDefault();
            if (!string.IsNullOrEmpty(data))
            {
                where = where.And(p => p.data.Contains(data));
            }
            //建立时间 datetime
            var createTime = Request.Form["createTime"].FirstOrDefault();
            if (!string.IsNullOrEmpty(createTime))
            {
                if (createTime.Contains("到"))
                {
                    var dts = createTime.Split("到");
                    var dtStart = dts[0].Trim().ObjectToDate();
                    where = where.And(p => p.createTime > dtStart);
                    var dtEnd = dts[1].Trim().ObjectToDate();
                    where = where.And(p => p.createTime < dtEnd);
                }
                else
                {
                    var dt = createTime.ObjectToDate();
                    where = where.And(p => p.createTime > dt);
                }
            }
            //修改时间 datetime
            var upDataTime = Request.Form["upDataTime"].FirstOrDefault();
            if (!string.IsNullOrEmpty(upDataTime))
            {
                if (upDataTime.Contains("到"))
                {
                    var dts = upDataTime.Split("到");
                    var dtStart = dts[0].Trim().ObjectToDate();
                    where = where.And(p => p.upDataTime > dtStart);
                    var dtEnd = dts[1].Trim().ObjectToDate();
                    where = where.And(p => p.upDataTime < dtEnd);
                }
                else
                {
                    var dt = upDataTime.ObjectToDate();
                    where = where.And(p => p.upDataTime > dt);
                }
            }
            //创建人 varchar
            var createBy = Request.Form["createBy"].FirstOrDefault();
            if (!string.IsNullOrEmpty(createBy))
            {
                where = where.And(p => p.createBy.Contains(createBy));
            }
            //修改人 varchar
            var upDataBy = Request.Form["upDataBy"].FirstOrDefault();
            if (!string.IsNullOrEmpty(upDataBy))
            {
                where = where.And(p => p.upDataBy.Contains(upDataBy));
            }
            //删除标志 bit
            var isdelete = Request.Form["isdelete"].FirstOrDefault();
            if (!string.IsNullOrEmpty(isdelete) && isdelete.ToLowerInvariant() == "true")
            {
                where = where.And(p => p.isdelete == true);
            }
            else if (!string.IsNullOrEmpty(isdelete) && isdelete.ToLowerInvariant() == "false")
            {
                where = where.And(p => p.isdelete == false);
            }
            //获取数据
            //创建Excel文件的对象
            var book = new HSSFWorkbook();
            //添加一个sheet
            var mySheet = book.CreateSheet("Sheet1");
            //获取list数据
            var listModel = await _applyModelServices.QueryListByClauseAsync(where, p => p.id, OrderByType.Asc, true);
            //给sheet1添加第一行的头部标题
                var headerRow = mySheet.CreateRow(0);
            var headerStyle = ExcelHelper.GetHeaderStyle(book);
            var cellNum = 0;
            var cell0 = headerRow.CreateCell(cellNum);
            cell0.SetCellValue("id");
            cell0.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell1 = headerRow.CreateCell(cellNum);
            cell1.SetCellValue("审批人ID");
            cell1.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell2 = headerRow.CreateCell(cellNum);
            cell2.SetCellValue("审批角色ID");
            cell2.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell3 = headerRow.CreateCell(cellNum);
            cell3.SetCellValue("审核人数数量");
            cell3.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell4 = headerRow.CreateCell(cellNum);
            cell4.SetCellValue("类型");
            cell4.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell5 = headerRow.CreateCell(cellNum);
            cell5.SetCellValue("内容");
            cell5.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell6 = headerRow.CreateCell(cellNum);
            cell6.SetCellValue("备注");
            cell6.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell7 = headerRow.CreateCell(cellNum);
            cell7.SetCellValue("调整前数据");
            cell7.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell8 = headerRow.CreateCell(cellNum);
            cell8.SetCellValue("调整数据");
            cell8.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell9 = headerRow.CreateCell(cellNum);
            cell9.SetCellValue("建立时间");
            cell9.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell10 = headerRow.CreateCell(cellNum);
            cell10.SetCellValue("修改时间");
            cell10.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell11 = headerRow.CreateCell(cellNum);
            cell11.SetCellValue("创建人");
            cell11.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell12 = headerRow.CreateCell(cellNum);
            cell12.SetCellValue("修改人");
            cell12.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell13 = headerRow.CreateCell(cellNum);
            cell13.SetCellValue("删除标志");
            cell13.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            headerRow.Height = 30 * 20;
            var commonCellStyle = ExcelHelper.GetCommonStyle(book);
            //将数据逐步写入sheet1各个行
            for (var i = 0; i < listModel.Count; i++)
            {
                var rowTemp = mySheet.CreateRow(i + 1);
                var cellNumTemp = 0;
            var rowTemp0 = rowTemp.CreateCell(cellNumTemp);
                rowTemp0.SetCellValue(listModel[i].id.ToString());
                rowTemp0.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp1 = rowTemp.CreateCell(cellNumTemp);
                rowTemp1.SetCellValue(listModel[i].managerID.ToString());
                rowTemp1.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp2 = rowTemp.CreateCell(cellNumTemp);
                rowTemp2.SetCellValue(listModel[i].roleID.ToString());
                rowTemp2.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp3 = rowTemp.CreateCell(cellNumTemp);
                rowTemp3.SetCellValue(listModel[i].managerApplyCount.ToString());
                rowTemp3.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp4 = rowTemp.CreateCell(cellNumTemp);
                rowTemp4.SetCellValue(listModel[i].aType.ToString());
                rowTemp4.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp5 = rowTemp.CreateCell(cellNumTemp);
                rowTemp5.SetCellValue(listModel[i].dec.ToString());
                rowTemp5.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp6 = rowTemp.CreateCell(cellNumTemp);
                rowTemp6.SetCellValue(listModel[i].reMake.ToString());
                rowTemp6.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp7 = rowTemp.CreateCell(cellNumTemp);
                rowTemp7.SetCellValue(listModel[i].oldData.ToString());
                rowTemp7.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp8 = rowTemp.CreateCell(cellNumTemp);
                rowTemp8.SetCellValue(listModel[i].data.ToString());
                rowTemp8.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp9 = rowTemp.CreateCell(cellNumTemp);
                rowTemp9.SetCellValue(listModel[i].createTime.ToString());
                rowTemp9.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp10 = rowTemp.CreateCell(cellNumTemp);
                rowTemp10.SetCellValue(listModel[i].upDataTime.ToString());
                rowTemp10.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp11 = rowTemp.CreateCell(cellNumTemp);
                rowTemp11.SetCellValue(listModel[i].createBy.ToString());
                rowTemp11.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp12 = rowTemp.CreateCell(cellNumTemp);
                rowTemp12.SetCellValue(listModel[i].upDataBy.ToString());
                rowTemp12.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp13 = rowTemp.CreateCell(cellNumTemp);
                rowTemp13.SetCellValue(listModel[i].isdelete.ToString());
                rowTemp13.CellStyle = commonCellStyle;
                cellNumTemp++;
            }
            // 写入到excel
            string webRootPath = _webHostEnvironment.WebRootPath;
            string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
            string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-applyModel导出(查询结果).xls";
            string filePath = webRootPath + tpath;
            DirectoryInfo di = new DirectoryInfo(filePath);
            if (!di.Exists)
            {
                di.Create();
            }
            FileStream fileHssf = new FileStream(filePath + fileName, FileMode.Create);
            book.Write(fileHssf);
            fileHssf.Close();
            jm.code = 0;
            jm.msg = GlobalConstVars.ExcelExportSuccess;
            jm.data = tpath + fileName;
            return jm;
        }
        #endregion
        #region 设置删除标志============================================================
        // POST: Api/applyModel/DoSetisdelete/10
        /// <summary>
        /// 设置删除标志
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("设置删除标志")]
        public async Task<AdminUiCallBack> DoSetisdelete([FromBody]FMUpdateBoolDataByIntId entity)
        {
            var jm = new AdminUiCallBack();
            var oldModel = await _applyModelServices.QueryByIdAsync(entity.id, false);
            if (oldModel == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            oldModel.isdelete = (bool)entity.data;
            var bl = await _applyModelServices.UpdateAsync(p => new applyModel() { isdelete = oldModel.isdelete }, p => p.id == oldModel.id);
            jm.code = bl ? 0 : 1;
            jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
            return jm;
        }
        #endregion
    }
}
CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.csproj
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
CoreCms.Net.Web.Admin/CoreCms.Net.Web.Admin.xml
File was deleted
CoreCms.Net.Web.Admin/wwwroot/views/applymodel/create.html
New file
@@ -0,0 +1,141 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-applyModel-createForm" id="LAY-app-applyModel-createForm">
    <div class="layui-form-item">
        <label for="id" class="layui-form-label  layui-form-required">id</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="id"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入id" lay-reqText="请输入id并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="managerID" class="layui-form-label  layui-form-required">审批人ID</label>
        <div class="layui-input-block">
            <input name="managerID"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入审批人ID" lay-reqText="请输入审批人ID"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="roleID" class="layui-form-label  layui-form-required">审批角色ID</label>
        <div class="layui-input-block">
            <input name="roleID"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入审批角色ID" lay-reqText="请输入审批角色ID"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="managerApplyCount" class="layui-form-label  layui-form-required">审核人数数量</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="managerApplyCount"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入审核人数数量" lay-reqText="请输入审核人数数量并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="aType" class="layui-form-label  layui-form-required">类型</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="aType"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入类型" lay-reqText="请输入类型并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="dec" class="layui-form-label  layui-form-required">内容</label>
        <div class="layui-input-block">
            <input name="dec"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入内容" lay-reqText="请输入内容"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="reMake" class="layui-form-label  layui-form-required">备注</label>
        <div class="layui-input-block">
            <input name="reMake"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入备注" lay-reqText="请输入备注"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="oldData" class="layui-form-label  layui-form-required">调整前数据</label>
        <div class="layui-input-block">
            <input name="oldData"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入调整前数据" lay-reqText="请输入调整前数据"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="data" class="layui-form-label  layui-form-required">调整数据</label>
        <div class="layui-input-block">
            <input name="data"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入调整数据" lay-reqText="请输入调整数据"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="createTime" class="layui-form-label  layui-form-required">建立时间</label>
        <div class="layui-input-block">
            <input name="createTime"  id="createTime-applyModel-createTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入建立时间" lay-reqText="请输入建立时间"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="upDataTime" class="layui-form-label  layui-form-required">修改时间</label>
        <div class="layui-input-block">
            <input name="upDataTime"  id="createTime-applyModel-upDataTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入修改时间" lay-reqText="请输入修改时间"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="createBy" class="layui-form-label  layui-form-required">创建人</label>
        <div class="layui-input-block">
            <input name="createBy"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入创建人" lay-reqText="请输入创建人"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="upDataBy" class="layui-form-label  layui-form-required">修改人</label>
        <div class="layui-input-block">
            <input name="upDataBy"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入修改人" lay-reqText="请输入修改人"  />
        </div>
    </div>
    <div class="layui-form-item" pane>
        <label for="isdelete" class="layui-form-label  layui-form-required">删除标志</label>
        <div class="layui-input-block">
            <input type="checkbox" lay-filter="switch" name="isdelete"   lay-skin="switch" lay-text="开启|关闭">
        </div>
    </div>
      <div class="layui-form-item text-right core-hidden">
        <input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-applyModel-createForm-submit" id="LAY-app-applyModel-createForm-submit" value="确认添加">
    </div>
</div>
</script>
<script>
    var debug= layui.setter.debug;
    layui.data.done = function (d) {
        //开启调试情况下获取接口赋值数据
        if (debug) { console.log(d.params.data); }
        layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
        function () {
            var $ = layui.$
                , form = layui.form
                , admin = layui.admin
                , laydate = layui.laydate
                , upload = layui.upload
                , cropperImg = layui.cropperImg
                , coreHelper = layui.coreHelper;
            laydate.render({
                elem: '#createTime-applyModel-createTime',
                type: 'datetime',
                value: new Date(),
                fullPanel: true
            });
            laydate.render({
                elem: '#createTime-applyModel-upDataTime',
                type: 'datetime',
                value: new Date(),
                fullPanel: true
            });
            form.verify({
            });
            //重载form
            form.render(null, 'LAY-app-applyModel-createForm');
        })
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/applymodel/details.html
New file
@@ -0,0 +1,153 @@
<script type="text/html" template  lay-done="layui.data.done(d);">
    <table class="layui-table layui-form" lay-filter="LAY-app-applyModel-detailsForm" id="LAY-app-applyModel-detailsForm">
        <colgroup>
            <col width="100">
            <col>
        </colgroup>
        <tbody>
            <tr>
                <td>
                    <label for="id">id</label>
                </td>
                <td>
                    {{ d.params.data.id || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="managerID">审批人ID</label>
                </td>
                <td>
                    {{ d.params.data.managerID || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="roleID">审批角色ID</label>
                </td>
                <td>
                    {{ d.params.data.roleID || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="managerApplyCount">审核人数数量</label>
                </td>
                <td>
                    {{ d.params.data.managerApplyCount || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="aType">类型</label>
                </td>
                <td>
                    {{ d.params.data.aType || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="dec">内容</label>
                </td>
                <td>
                    {{ d.params.data.dec || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="reMake">备注</label>
                </td>
                <td>
                    {{ d.params.data.reMake || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="oldData">调整前数据</label>
                </td>
                <td>
                    {{ d.params.data.oldData || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="data">调整数据</label>
                </td>
                <td>
                    {{ d.params.data.data || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="createTime">建立时间</label>
                </td>
                <td>
                    {{ d.params.data.createTime || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="upDataTime">修改时间</label>
                </td>
                <td>
                    {{ d.params.data.upDataTime || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="createBy">创建人</label>
                </td>
                <td>
                    {{ d.params.data.createBy || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="upDataBy">修改人</label>
                </td>
                <td>
                    {{ d.params.data.upDataBy || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="isdelete">删除标志</label>
                </td>
                <td>
                    <input type="checkbox" disabled name="isdelete" value="{{d.params.data.isdelete}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isdelete" {{ d.params.data.isdelete ? 'checked' : '' }}>
                </td>
            </tr>
        </tbody>
    </table>
</script>
<script>
    var debug= layui.setter.debug;
    layui.data.done = function (d) {
        //开启调试情况下获取接口赋值数据
        if (debug) { console.log(d.params.data); }
        layui.use(['admin', 'form', 'coreHelper'], function () {
            var $ = layui.$
                , setter = layui.setter
                , admin = layui.admin
                , coreHelper = layui.coreHelper
                , form = layui.form;
            form.render(null, 'LAY-app-applyModel-detailsForm');
        });
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/applymodel/edit.html
New file
@@ -0,0 +1,139 @@
<script type="text/html" template lay-done="layui.data.sendParams(d);">
    <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-applyModel-editForm" id="LAY-app-applyModel-editForm">
        <input type="hidden" name="id"  value="{{d.params.data.id || '' }}" />
        <div class="layui-form-item">
            <label for="id" class="layui-form-label  layui-form-required">id</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="id"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.id || '' }}" placeholder="请输入id" lay-reqText="请输入id并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="managerID" class="layui-form-label  layui-form-required">审批人ID</label>
            <div class="layui-input-block">
                <input name="managerID"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入审批人ID" lay-reqText="请输入审批人ID"  value="{{d.params.data.managerID || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="roleID" class="layui-form-label  layui-form-required">审批角色ID</label>
            <div class="layui-input-block">
                <input name="roleID"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入审批角色ID" lay-reqText="请输入审批角色ID"  value="{{d.params.data.roleID || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="managerApplyCount" class="layui-form-label  layui-form-required">审核人数数量</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="managerApplyCount"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.managerApplyCount || '' }}" placeholder="请输入审核人数数量" lay-reqText="请输入审核人数数量并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="aType" class="layui-form-label  layui-form-required">类型</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="aType"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.aType || '' }}" placeholder="请输入类型" lay-reqText="请输入类型并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="dec" class="layui-form-label  layui-form-required">内容</label>
            <div class="layui-input-block">
                <input name="dec"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入内容" lay-reqText="请输入内容"  value="{{d.params.data.dec || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="reMake" class="layui-form-label  layui-form-required">备注</label>
            <div class="layui-input-block">
                <input name="reMake"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入备注" lay-reqText="请输入备注"  value="{{d.params.data.reMake || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="oldData" class="layui-form-label  layui-form-required">调整前数据</label>
            <div class="layui-input-block">
                <input name="oldData"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入调整前数据" lay-reqText="请输入调整前数据"  value="{{d.params.data.oldData || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="data" class="layui-form-label  layui-form-required">调整数据</label>
            <div class="layui-input-block">
                <input name="data"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入调整数据" lay-reqText="请输入调整数据"  value="{{d.params.data.data || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="createTime" class="layui-form-label  layui-form-required">建立时间</label>
            <div class="layui-input-block">
                <input name="createTime"  id="editTime-applyModel-createTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入建立时间" lay-reqText="请输入建立时间"   value="{{d.params.data.createTime || '' }}"/>
            </div>
        </div>
        <div class="layui-form-item">
            <label for="upDataTime" class="layui-form-label  layui-form-required">修改时间</label>
            <div class="layui-input-block">
                <input name="upDataTime"  id="editTime-applyModel-upDataTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="请输入修改时间" lay-reqText="请输入修改时间"   value="{{d.params.data.upDataTime || '' }}"/>
            </div>
        </div>
        <div class="layui-form-item">
            <label for="createBy" class="layui-form-label  layui-form-required">创建人</label>
            <div class="layui-input-block">
                <input name="createBy"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入创建人" lay-reqText="请输入创建人"  value="{{d.params.data.createBy || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="upDataBy" class="layui-form-label  layui-form-required">修改人</label>
            <div class="layui-input-block">
                <input name="upDataBy"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入修改人" lay-reqText="请输入修改人"  value="{{d.params.data.upDataBy || '' }}" />
            </div>
        </div>
        <div class="layui-form-item" pane>
            <label for="isdelete" class="layui-form-label  layui-form-required">删除标志</label>
            <div class="layui-input-block">
                <input type="checkbox" lay-filter="switch" name="isdelete"   {{ d.params.data.isdelete ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
            </div>
        </div>
        <div class="layui-form-item text-right core-hidden">
            <input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-applyModel-editForm-submit" id="LAY-app-applyModel-editForm-submit" value="确认编辑">
        </div>
    </div>
</script>
<script>
    var debug= layui.setter.debug;
    layui.data.sendParams = function (d) {
        //开启调试情况下获取接口赋值数据
        if (debug) { console.log(d.params.data); }
        layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
        function () {
            var $ = layui.$
                , form = layui.form
                , admin = layui.admin
                , laydate = layui.laydate
                , upload = layui.upload
                , cropperImg = layui.cropperImg
                , coreHelper = layui.coreHelper;
            laydate.render({
                elem: '#editTime-applyModel-createTime',
                type: 'datetime',
                fullPanel: true
            });
            laydate.render({
                elem: '#editTime-applyModel-upDataTime',
                type: 'datetime',
                fullPanel: true
            });
            form.verify({
            });
            //重载form
            form.render(null, 'LAY-app-applyModel-editForm');
        })
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/applymodel/index.html
New file
@@ -0,0 +1,467 @@
<title>审批流程</title>
<!--当前位置开始-->
<div class="layui-card layadmin-header">
    <div class="layui-breadcrumb" lay-filter="breadcrumb">
        <script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
        </script>
    </div>
</div>
<!--当前位置结束-->
<style>
    /* 重写样式 */
</style>
<script type="text/html" template lay-type="Post" lay-url="Api/applyModel/GetIndex" lay-done="layui.data.done(d);">
</script>
<div class="table-body">
    <table  id="LAY-app-applyModel-tableBox" lay-filter="LAY-app-applyModel-tableBox"></table>
</div>
<script type="text/html" id="LAY-app-applyModel-toolbar">
    <div class="layui-form coreshop-toolbar-search-form">
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label" for="id">id</label>
                <div class="layui-input-inline">
                    <input type="text" name="id"  placeholder="请输入id" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="managerID">审批人ID</label>
                <div class="layui-input-inline">
                    <input type="text" name="managerID"  placeholder="请输入审批人ID" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="roleID">审批角色ID</label>
                <div class="layui-input-inline">
                    <input type="text" name="roleID"  placeholder="请输入审批角色ID" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="managerApplyCount">审核人数数量</label>
                <div class="layui-input-inline">
                    <input type="text" name="managerApplyCount"  placeholder="请输入审核人数数量" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="aType">类型</label>
                <div class="layui-input-inline">
                    <input type="text" name="aType"  placeholder="请输入类型" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="dec">内容</label>
                <div class="layui-input-inline">
                    <input type="text" name="dec"  placeholder="请输入内容" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="reMake">备注</label>
                <div class="layui-input-inline">
                    <input type="text" name="reMake"  placeholder="请输入备注" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="oldData">调整前数据</label>
                <div class="layui-input-inline">
                    <input type="text" name="oldData"  placeholder="请输入调整前数据" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="data">调整数据</label>
                <div class="layui-input-inline">
                    <input type="text" name="data"  placeholder="请输入调整数据" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="createTime">建立时间</label>
                <div class="layui-input-inline" style="width: 260px;">
                    <input type="text" name="createTime" id="searchTime-applyModel-createTime" placeholder="请输入建立时间" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="upDataTime">修改时间</label>
                <div class="layui-input-inline" style="width: 260px;">
                    <input type="text" name="upDataTime" id="searchTime-applyModel-upDataTime" placeholder="请输入修改时间" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="createBy">创建人</label>
                <div class="layui-input-inline">
                    <input type="text" name="createBy"  placeholder="请输入创建人" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="upDataBy">修改人</label>
                <div class="layui-input-inline">
                    <input type="text" name="upDataBy"  placeholder="请输入修改人" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="isdelete">删除标志</label>
                <div class="layui-input-inline">
                    <select name="isdelete">
                        <option value="">请选择</option>
                        <option value="True">是</option>
                        <option value="False">否</option>
                    </select>
                </div>
            </div>
            <div class="layui-inline">
                <button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-applyModel-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
            </div>
        </div>
    </div>
</script>
<script type="text/html" id="LAY-app-applyModel-pagebar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" lay-event="addData"><i class="layui-icon layui-icon-add-1"></i>添加数据</button>
        <button class="layui-btn layui-btn-sm" lay-event="batchDelete"><i class="layui-icon layui-icon-delete"></i>批量删除</button>
        <button class="layui-btn layui-btn-sm" lay-event="selectExportExcel"><i class="layui-icon layui-icon-add-circle"></i>选择导出</button>
        <button class="layui-btn layui-btn-sm" lay-event="queryExportExcel"><i class="layui-icon layui-icon-download-circle"></i>查询导出</button>
    </div>
</script>
<script type="text/html" id="LAY-app-applyModel-tableBox-bar">
    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#applyModelTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
    <div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="applyModelTbDelDrop{{d.LAY_INDEX}}"
         style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
        <div class="dropdown-anchor"></div>
        <div class="dropdown-popconfirm-title">
            <i class="layui-icon layui-icon-help"></i>
            确定要删除吗?
        </div>
        <div class="dropdown-popconfirm-btn">
            <a class="layui-btn layui-btn-primary cursor" btn-cancel>取消</a>
            <a class="layui-btn layui-btn-normal cursor" lay-event="del">确定</a>
        </div>
    </div>
</script>
<script>
    var indexData;
    var debug= layui.setter.debug;
    layui.data.done = function (d) {
        //开启调试情况下获取接口赋值数据
        if (debug) { console.log(d); }
        indexData = d.data;
        layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
            function () {
                var $ = layui.$
                    , admin = layui.admin
                    , table = layui.table
                    , form = layui.form
                    , laydate = layui.laydate
                    , setter = layui.setter
                    , coreHelper = layui.coreHelper
                    , util = layui.util
                    , view = layui.view;
                var searchwhere;
                //监听搜索
                form.on('submit(LAY-app-applyModel-search)',
                    function(data) {
                        var field = data.field;
                        searchwhere = field;
                        //执行重载
                        table.reloadData('LAY-app-applyModel-tableBox',{ where: field });
                    });
                //数据绑定
                table.render({
                    elem: '#LAY-app-applyModel-tableBox',
                    url: layui.setter.apiUrl + 'Api/applyModel/GetPageList',
                    method: 'POST',
                    toolbar: '#LAY-app-applyModel-toolbar',
                    pagebar: '#LAY-app-applyModel-pagebar',
                    className: 'pagebarbox',
                    defaultToolbar: ['filter', 'print', 'exports'],
                    height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
                    page: true,
                    limit: 30,
                    limits: [10, 15, 20, 25, 30, 50, 100, 200],
                    text: {none: '暂无相关数据'},
                    cols: [
                        [
                            { type: "checkbox", fixed: "left" },
                            { field: 'id', title: 'id', width: 60, sort: false},
                            { field: 'managerID', title: '审批人ID', sort: false,width: 105 },
                            { field: 'roleID', title: '审批角色ID', sort: false,width: 105 },
                            { field: 'managerApplyCount', title: '审核人数数量', sort: false,width: 105 },
                            { field: 'aType', title: '类型', sort: false,width: 105 },
                            { field: 'dec', title: '内容', sort: false,width: 105 },
                            { field: 'reMake', title: '备注', sort: false,width: 105 },
                            { field: 'oldData', title: '调整前数据', sort: false,width: 105 },
                            { field: 'data', title: '调整数据', sort: false,width: 105 },
                            { field: 'createTime', title: '建立时间', width: 130, sort: false},
                            { field: 'upDataTime', title: '修改时间', width: 130, sort: false},
                            { field: 'createBy', title: '创建人', sort: false,width: 105 },
                            { field: 'upDataBy', title: '修改人', sort: false,width: 105 },
                            { field: 'isdelete', title: '删除标志', width: 95, templet: '#switch_isdelete', sort: false , unresize: true},
                            { width: 162, align: 'center', title:'操作', fixed: 'right', toolbar: '#LAY-app-applyModel-tableBox-bar' }
                        ]
                    ]
                });
                //监听排序事件
                table.on('sort(LAY-app-applyModel-tableBox)', function(obj){
                    table.reloadData('LAY-app-applyModel-tableBox', {
                        initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
                        where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
                            orderField: obj.field, //排序字段
                            orderDirection: obj.type //排序方式
                        }
                    });
                });
                //监听行双击事件
                table.on('rowDouble(LAY-app-applyModel-tableBox)', function (obj) {
                    //查看详情
                    doDetails(obj);
                });
                //头工具栏事件
                table.on('pagebar(LAY-app-applyModel-tableBox)', function (obj) {
                    var checkStatus = table.checkStatus(obj.config.id);
                    switch (obj.event) {
                    case 'addData':
                        doCreate();
                        break;
                    case 'batchDelete':
                        doBatchDelete(checkStatus);
                        break;
                    case 'selectExportExcel':
                        doSelectExportExcel(checkStatus);
                        break;
                    case 'queryExportExcel':
                        doQueryExportexcel();
                        break;
                    };
                });
                //监听工具条
                table.on('tool(LAY-app-applyModel-tableBox)',
                    function(obj) {
                        if (obj.event === 'detail') {
                            doDetails(obj);
                        } else if (obj.event === 'del') {
                            doDelete(obj);
                        } else if (obj.event === 'edit') {
                            doEdit(obj)
                        }
                    });
                //执行创建操作
                function doCreate(){
                    coreHelper.Post("Api/applyModel/GetCreate", null, function (e) {
                            if (e.code === 0) {
                                admin.popup({
                                    shadeClose: false,
                                    title: '创建数据',
                                    area: ['1200px', '90%'],
                                    id: 'LAY-popup-applyModel-create',
                                    success: function (layero, index) {
                                        view(this.id).render('applyModel/create', { data: e.data }).done(function () {
                                            //监听提交
                                            form.on('submit(LAY-app-applyModel-createForm-submit)',
                                                function(data) {
                                                    var field = data.field; //获取提交的字段
                                                    field.isdelete = field.isdelete == 'on';
                                                    if (debug) { console.log(field); } //开启调试返回数据
                                                    //提交 Ajax 成功后,关闭当前弹层并重载表格
                                                    coreHelper.Post("Api/applyModel/DoCreate", field, function (e) {
                                                            console.log(e)
                                                            if (e.code === 0) {
                                                                layui.table.reloadData('LAY-app-applyModel-tableBox'); //重载表格
                                                                layer.close(index); //再执行关闭
                                                                layer.msg(e.msg);
                                                            } else {
                                                                layer.msg(e.msg);
                                                            }
                                                        });
                                                });
                                        });
                                        // 禁止弹窗出现滚动条
                                        $(layero).children('.layui-layer-content').css('overflow', 'visible');
                                    }
                                    , btn: ['确定', '取消']
                                    , yes: function (index, layero) {
                                        layero.contents().find("#LAY-app-applyModel-createForm-submit").click();
                                    }
                                });
                            } else {
                                layer.msg(e.msg);
                            }
                        });
                }
                //执行编辑操作
                function doEdit(obj){
                    coreHelper.Post("Api/applyModel/GetEdit", {id:obj.data.id}, function (e) {
                        if (e.code === 0) {
                            admin.popup({
                                shadeClose: false,
                                title: '编辑数据',
                                area: ['1200px', '90%'],
                                id: 'LAY-popup-applyModel-edit',
                                success: function (layero, index) {
                                    view(this.id).render('applyModel/edit', { data: e.data }).done(function () {
                                        //监听提交
                                        form.on('submit(LAY-app-applyModel-editForm-submit)',
                                            function(data) {
                                                var field = data.field; //获取提交的字段
                                                field.isdelete = field.isdelete == 'on';
                                                if (debug) { console.log(field); } //开启调试返回数据
                                                //提交 Ajax 成功后,关闭当前弹层并重载表格
                                                coreHelper.Post("Api/applyModel/DoEdit", field, function (e) {
                                                        console.log(e)
                                                        if (e.code === 0) {
                                                            layui.table.reloadData('LAY-app-applyModel-tableBox'); //重载表格
                                                            layer.close(index); //再执行关闭
                                                            layer.msg(e.msg);
                                                        } else {
                                                            layer.msg(e.msg);
                                                        }
                                                    });
                                            });
                                    })
                                    // 禁止弹窗出现滚动条
                                    $(layero).children('.layui-layer-content').css('overflow', 'visible');
                                }
                                 , btn: ['确定', '取消']
                                , yes: function (index, layero) {
                                     layero.contents().find("#LAY-app-applyModel-editForm-submit").click();
                                }
                            });
                        } else {
                            layer.msg(e.msg);
                        }
                    });
                }
                //执行预览操作
                function doDetails(obj) {
                    coreHelper.Post("Api/applyModel/GetDetails", { id: obj.data.id }, function (e) {
                        if (e.code === 0) {
                            admin.popup({
                                shadeClose: false,
                                title: '查看详情',
                                area: ['1200px', '90%'],
                                id: 'LAY-popup-applyModel-details',
                                success: function (layero, index) {
                                    view(this.id).render('applyModel/details', { data: e.data }).done(function () {
                                        form.render();
                                    });
                                    // 禁止弹窗出现滚动条
                                    $(layero).children('.layui-layer-content').css('overflow', 'visible');
                                }
                            });
                        } else {
                            layer.msg(e.msg);
                        }
                    });
                }
                //执行单个删除
                function doDelete(obj){
                    coreHelper.Post("Api/applyModel/DoDelete", { id: obj.data.id }, function (e) {
                            if (debug) { console.log(e); } //开启调试返回数据
                            table.reloadData('LAY-app-applyModel-tableBox');
                            layer.msg(e.msg);
                        });
                }
                //执行批量删除
                function doBatchDelete(checkStatus){
                    var checkData = checkStatus.data;
                    if (checkData.length === 0) {
                        return layer.msg('请选择要删除的数据');
                    }
                    layer.confirm('确定删除吗?删除后将无法恢复。',
                        function(index) {
                            var delidsStr = [];
                            layui.each(checkData,
                                function(index, item) {
                                    delidsStr.push(item.id);
                                });
                            coreHelper.Post("Api/applyModel/DoBatchDelete", { id: delidsStr }, function (e) {
                                    if (debug) { console.log(e); } //开启调试返回数据
                                    table.reloadData('LAY-app-applyModel-tableBox');
                                    layer.msg(e.msg);
                                });
                        });
                }
                //执行查询条件导出excel
                function doQueryExportexcel(){
                    layer.confirm('确定根据当前的查询条件导出数据吗?',
                        function(index) {
                            var field = searchwhere;
                            coreHelper.PostForm("Api/applyModel/QueryExportExcel", field, function (e) {
                                    if (debug) { console.log(e); } //开启调试返回数据
                                    if (e.code === 0) {
                                        window.open(e.data);
                                    } else {
                                        layer.msg(e.msg);
                                    }
                                });
                        });
                }
                //执行选择目录导出数据
                function doSelectExportExcel(checkStatus){
                    var checkData = checkStatus.data;
                    if (checkData.length === 0) {
                        return layer.msg('请选择您要导出的数据');
                    }
                    layer.confirm('确定导出选择的内容吗?',
                        function(index) {
                            var delidsStr = [];
                            layui.each(checkData,
                                function(index, item) {
                                    delidsStr.push(item.id);
                                });
                            layer.close(index);
                            coreHelper.Post("Api/applyModel/SelectExportExcel", { id: delidsStr }, function (e) {
                                    if (debug) { console.log(e); } //开启调试返回数据
                                    if (e.code === 0) {
                                        window.open(e.data);
                                    } else {
                                        layer.msg(e.msg);
                                    }
                                });
                        });
                }
                laydate.render({
                    elem: '#searchTime-applyModel-createTime',
                    type: 'datetime',
                    range: '到',
                });
                laydate.render({
                    elem: '#searchTime-applyModel-upDataTime',
                    type: 'datetime',
                    range: '到',
                });
                //监听 表格复选框操作
                layui.form.on('switch(switch_isdelete)', function (obj) {
                    coreHelper.Post("Api/applyModel/DoSetisdelete", { id: this.value, data: obj.elem.checked }, function (e) {
                        if (debug) { console.log(e); } //开启调试返回数据
                        //table.reloadData('LAY-app-applyModel-tableBox');
                        layer.msg(e.msg);
                    });
                });
                //重载form
                form.render();
            });
    };
</script>
<!--设置删除标志-->
<script type="text/html" id="switch_isdelete">
    <input type="checkbox" name="switch_isdelete" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="switch_isdelete" {{ d.isdelete ? 'checked' : '' }}>
</script>