username@email.com
2024-06-26 7f26cd7c3e492062418cdc7dbe9d7ce14cbe5f05
铺货修改
24个文件已修改
11个文件已添加
4249 ■■■■■ 已修改文件
CoreCms.Net.Configuration/GlobalEnumVars.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IRepository/Stock/ICoreCmsStockRepository.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IRepository/baifenbinfa/IPuhuoRepository.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IRepository/baifenbinfa/IPuhuoShoukuanRepository.cs 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IServices/Stock/ICoreCmsStockServices.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IServices/baifenbingfa/IPuhuoServices.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IServices/baifenbingfa/IPuhuoShoukuanServices.cs 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/Good/CoreCmsProducts.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/Stock/CoreCmsStockPartial.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/baifenbingfa/puhuo/Puhuo.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/baifenbingfa/puhuo/PuhuoShoukuan.cs 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/ViewModels/UI/AdminUiCallBack.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Repository/Stock/CoreCmsStockRepository.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Repository/baifenbingfa/PuhuoRepository.cs 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Repository/baifenbingfa/PuhuoShoukuanRepository.cs 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Services/Stock/CoreCmsStockServices.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Services/baifenbingfa/PuhuoServices.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Services/baifenbingfa/PuhuoShoukuanServices.cs 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/Controllers/Stock/CoreCmsStockController.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/Controllers/baifenbingfa/PuhuoController.cs 282 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/Controllers/baifenbingfa/PuhuoShoukuanController.cs 1281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/create.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/details.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/edit.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/editshoukuan.html 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/index.html 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/indexgroup.html 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuoshoukuan/create.html 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuoshoukuan/details.html 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuoshoukuan/edit.html 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuoshoukuan/index.html 623 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/content/stock/stocklog/index.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/content/stock/stocks/create.html 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/content/stock/stocks/index.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/layout.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Configuration/GlobalEnumVars.cs
@@ -2872,6 +2872,12 @@
            /// </summary>
            [Description("退货")]
            ReturnedGoods = 5,
            /// <summary>
            /// 铺货盘点
            /// </summary>
            [Description("铺货盘点")]
            CheckPuhuo = 6,
        }
        #endregion
CoreCms.Net.IRepository/Stock/ICoreCmsStockRepository.cs
@@ -55,7 +55,7 @@
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> InsertAsync(FMCreateStock entity);
        Task<AdminUiCallBack> InsertAsync(FMCreateStock entity, string username, CoreCmsDistribution distribution);
        #endregion
    }
CoreCms.Net.IRepository/baifenbinfa/IPuhuoRepository.cs
@@ -109,7 +109,7 @@
        /// <returns></returns>
        Task<IPageList<Puhuo>> QueryPageGroupAsync(
            Expression<Func<Puhuo, bool>> predicate,
            Expression<Func<Puhuo, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            Expression<Func<Puhuo, object>> orderByExpression, OrderByType orderByType, OtherData otherData, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
    }
CoreCms.Net.IRepository/baifenbinfa/IPuhuoShoukuanRepository.cs
New file
@@ -0,0 +1,99 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/6/25 13:17:00
 *        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.puhuo;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.IRepository
{
    /// <summary>
    /// 铺货 工厂接口
    /// </summary>
    public interface IPuhuoShoukuanRepository : IBaseRepository<PuhuoShoukuan>
    {
        #region 重写增删改查操作===========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> InsertAsync(PuhuoShoukuan entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(PuhuoShoukuan entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(List<PuhuoShoukuan> 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<PuhuoShoukuan>> 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<PuhuoShoukuan>> QueryPageAsync(
            Expression<Func<PuhuoShoukuan, bool>> predicate,
            Expression<Func<PuhuoShoukuan, object>> orderByExpression, OrderByType orderByType, OtherData otherData, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
    }
}
CoreCms.Net.IServices/Stock/ICoreCmsStockServices.cs
@@ -51,7 +51,7 @@
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> InsertAsync(FMCreateStock entity);
        Task<AdminUiCallBack> InsertAsync(FMCreateStock entity, string username, CoreCmsDistribution distribution);
        #endregion
    }
CoreCms.Net.IServices/baifenbingfa/IPuhuoServices.cs
@@ -105,7 +105,7 @@
        /// <returns></returns>
        Task<IPageList<Puhuo>> QueryPageGroupAsync(
            Expression<Func<Puhuo, bool>> predicate,
            Expression<Func<Puhuo, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            Expression<Func<Puhuo, object>> orderByExpression, OrderByType orderByType, OtherData otherData, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
        #endregion
    }
CoreCms.Net.IServices/baifenbingfa/IPuhuoShoukuanServices.cs
New file
@@ -0,0 +1,95 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/6/25 13:17:00
 *        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.puhuo;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.IServices
{
    /// <summary>
    /// 铺货 服务工厂接口
    /// </summary>
    public interface IPuhuoShoukuanServices : IBaseServices<PuhuoShoukuan>
    {
        #region 重写增删改查操作===========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> InsertAsync(PuhuoShoukuan entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(PuhuoShoukuan entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(List<PuhuoShoukuan> 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<PuhuoShoukuan>> 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<PuhuoShoukuan>> QueryPageAsync(
            Expression<Func<PuhuoShoukuan, bool>> predicate,
            Expression<Func<PuhuoShoukuan, object>> orderByExpression, OrderByType orderByType, OtherData otherData, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
        #endregion
    }
}
CoreCms.Net.Model/Entities/Good/CoreCmsProducts.cs
@@ -265,5 +265,13 @@
        public bool  isCustomizable { get; set; }=false;
        /// <summary>
        /// 变动数量
        /// </summary>
        [Display(Name = "变动数量")]
        [SugarColumn(IsIgnore = true)]
        public System.Int32 nums { get; set; }
    }
}
CoreCms.Net.Model/Entities/Stock/CoreCmsStockPartial.cs
@@ -24,5 +24,12 @@
        [Display(Name = "操作员昵称")]
        [SugarColumn(IsIgnore = true)]
        public string managerName { get; set; }
        /// <summary>
        /// 经销商id
        /// </summary>
        [Display(Name = "经销商id")]
        [SugarColumn(IsIgnore = true)]
        public int distributionId { get; set; }
    }
}
CoreCms.Net.Model/Entities/baifenbingfa/puhuo/Puhuo.cs
@@ -14,7 +14,7 @@
    /// <summary>
    /// 铺货
    /// </summary>
    [SqlCodeFirst]
    public class Puhuo : BFBaseModel
    {
        /// <summary>
@@ -126,5 +126,27 @@
        public System.Int32 tiaozhengnums { get; set; }
        /// <summary>
        /// 学校名称
        /// </summary>
        [Display(Name = "学校名称")]
        [SugarColumn(IsIgnore = true)]
        public string schoolName { get; set; }
        /// <summary>
        /// 收款数量
        /// </summary>
        [Display(Name = "收款数量")]
        [SugarColumn(ColumnDescription = "收款数量", IsNullable = true, DefaultValue = "0")]
        public System.Int32? shoukuannums { get; set; } = 0;
        /// <summary>
        /// 金额
        /// </summary>
        [Display(Name = "收款金额")]
        [SugarColumn(ColumnDescription = "收款金额", IsNullable = true,DefaultValue = "0", Length = 18, DecimalDigits = 4)]
        public System.Decimal? shoukuanamount { get; set; } = new decimal(0);
    }
}
CoreCms.Net.Model/Entities/baifenbingfa/puhuo/PuhuoShoukuan.cs
New file
@@ -0,0 +1,159 @@
using Chuanyin.Attribute;
using CoreCms.Net.Model.Entities.baifenbingfa.jon;
using CoreCms.Net.Model.Entities.baseModel;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CoreCms.Net.Model.Entities.baifenbingfa.puhuo
{
    /// <summary>
    /// 铺货
    /// </summary>
    [SqlCodeFirst]
    public class PuhuoShoukuan : BFBaseModel
    {
        /// <summary>
        /// 主键ID,自增长
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "主键ID")]
        public int id { get; set; }
        /// <summary>
        /// 铺货id
        /// </summary>
        public int puhuoId { get; set; }
        /// <summary>
        /// 经销商id
        /// </summary>
        public int distributionId { get; set; }
        /// <summary>
        /// 经销商
        /// </summary>
        public string distributionName { get; set; }
        /// <summary>
        /// 区域
        /// </summary>
        public string areaCode { get; set; }
        /// <summary>
        /// 区域名称
        /// </summary>
        public string areaCodeName { get; set; }
        /// <summary>
        /// 商品分类id
        /// </summary>
        public int CategoryId { get; set; }
        /// <summary>
        /// 商品分类
        /// </summary>
        public string CategoryName { get; set; }
        /// <summary>
        /// 商品id
        /// </summary>
        public int goodsId { get; set; }
        /// <summary>
        /// 商品名称
        /// </summary>
        public string goodsName { get; set; }
        /// <summary>
        /// 货品id
        /// </summary>
        public int productsId { get; set; }
        /// <summary>
        /// 货品编号
        /// </summary>
        public string productsName { get; set; }
        /// <summary>
        /// 货品规格
        /// </summary>
        public string spesDesc { get; set; }
        /// <summary>
        /// 货品价格
        /// </summary>
        [Display(Name = "货品价格")]
        [Required(ErrorMessage = "请输入{0}")]
        public System.Decimal price { get; set; }
        /// <summary>
        /// 数量
        /// </summary>
        [Display(Name = "数量")]
        [SugarColumn(ColumnDescription = "数量")]
        [Required(ErrorMessage = "请输入{0}")]
        public System.Int32 nums { get; set; }
        /// <summary>
        /// 金额
        /// </summary>
        [Display(Name = "金额")]
        [SugarColumn(ColumnDescription = "金额")]
        [Required(ErrorMessage = "请输入{0}")]
        public System.Decimal amount { get; set; }
        /// <summary>
        /// 铺货退货
        /// </summary>
        [Display(Name = "铺货退货")]
        [SugarColumn(IsIgnore = true)]
        public System.Int32 jintui { get; set; }
        /// <summary>
        /// 调整数量
        /// </summary>
        [Display(Name = "调整数量")]
        [SugarColumn(IsIgnore = true)]
        public System.Int32 tiaozhengnums { get; set; }
        /// <summary>
        /// 学校名称
        /// </summary>
        [Display(Name = "学校名称")]
        [SugarColumn(IsIgnore = true)]
        public string schoolName { get; set; }
        /// <summary>
        /// 收款数量
        /// </summary>
        [Display(Name = "收款数量")]
        [SugarColumn(ColumnDescription = "收款数量" )]
        public System.Int32 shoukuannums { get; set; } = 0;
        /// <summary>
        /// 金额
        /// </summary>
        [Display(Name = "收款金额")]
        [SugarColumn(ColumnDescription = "收款金额",  Length = 18, DecimalDigits = 4)]
        public System.Decimal shoukuanamount { get; set; } = new decimal(0);
    }
}
CoreCms.Net.Model/ViewModels/UI/AdminUiCallBack.cs
@@ -30,5 +30,17 @@
        public object otherData { get; set; }
        public int count { get; set; }
    }
    public class OtherData
    {
        public decimal heji1 { get; set; }
        public decimal heji2 { get; set; }
        public decimal heji3 { get; set; }
        public decimal heji4 { get; set; }
        public decimal heji5 { get; set; }
        public decimal heji6 { get; set; }
    }
}
CoreCms.Net.Repository/Stock/CoreCmsStockRepository.cs
@@ -23,6 +23,7 @@
using CoreCms.Net.Model.ViewModels.UI;
using CoreCms.Net.Utility.Helper;
using SqlSugar;
using CoreCms.Net.Model.Entities.baifenbingfa.puhuo;
namespace CoreCms.Net.Repository
{
@@ -44,7 +45,7 @@
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> InsertAsync(FMCreateStock entity)
        public async Task<AdminUiCallBack> InsertAsync(FMCreateStock entity, string username, CoreCmsDistribution distribution)
        {
            var jm = new AdminUiCallBack();
@@ -76,6 +77,10 @@
            {
                stockModel.id = await CreateCode(GlobalEnumVars.StockType.Out.ToString());
            }
            else if (entity.model.type == 3)
            {
                stockModel.id = await CreateCode(GlobalEnumVars.StockType.Out.ToString());
            }
            else
            {
                jm.msg = "单据类型错误";
@@ -85,7 +90,20 @@
            stockModel.memo = entity.model.memo;
            stockModel.createTime = DateTime.Now;
            stockModel.manager = entity.model.manager;
            stockModel.type = entity.model.type;
            if (entity.model.type == 3 )
            {
                if (stockModel.memo == "无")
                {
                    stockModel.memo = "";
                }
                stockModel.memo = distribution.name+ " 经销商铺货 " + stockModel.memo;
                stockModel.type = 2;
            }
            else
            {
                stockModel.type = entity.model.type;
            }
            var logs = new List<CoreCmsStockLog>();
            var products = new List<CoreCmsProducts>();
@@ -116,7 +134,9 @@
                        name = good.name,
                        bn = good.bn,
                        isMarketable = good.isMarketable,
                        unit = good.unit
                        unit = good.unit,
                        distributionPrice = p.distributionPrice,
                        CategoryID = good.goodsCategoryId,
                    }).With(SqlWith.NoLock)
                    .MergeTable()
                    .Where(p => p.id == item.productId).FirstAsync();
@@ -136,6 +156,16 @@
                            return jm;
                        }
                    }
                    else if (entity.model.type == 3)
                    {
                        stock = product.stock - item.nums;
                        if (stock < 0)
                        {
                            jm.msg = $"第{index}个货品最大出库数量为:" + product.stock;
                            return jm;
                        }
                    }
                    product.nums = item.nums;
                    product.stock = stock;
                    products.Add(product);
@@ -160,6 +190,9 @@
                }
            }
            try
            {
                _unitOfWork.BeginTran();
@@ -172,6 +205,71 @@
                {
                    await DbClient.Insertable(logs).ExecuteCommandAsync();
                }
                //铺货
                if (entity.model.type == 3)
                {
                    if (products.Any() && distribution != null)
                    {
                        foreach (var products1 in products)
                        {
                            var puhuo = await DbClient.Queryable<Puhuo>().Where(x => x.isdelete == false && x.productsId == products1.id && x.distributionId == entity.model.distributionId).FirstAsync();
                            if (puhuo != null)
                            {
                                puhuo.nums = puhuo.nums + products1.nums;
                                puhuo.price = products1.distributionPrice;
                                puhuo.amount = products1.distributionPrice * new decimal(puhuo.nums);
                                puhuo.isdelete = false;
                                //entity.createBy = username;
                                puhuo.upDataBy = username;
                                //entity.createTime = DateTime.Now;
                                puhuo.upDataTime = DateTime.Now;
                                await DbClient.Updateable<Puhuo>(puhuo).ExecuteCommandAsync();
                            }
                            else
                            {
                                puhuo = new Puhuo();
                                puhuo.distributionId = entity.model.distributionId;
                                puhuo.distributionName = distribution.name;
                                puhuo.areaCode = distribution.areaCode;
                                puhuo.areaCodeName = distribution.areaName;
                                puhuo.CategoryId = products1.CategoryID??0;
                                //获取全部数据缓存
                                var categorie = await DbClient.Queryable<CoreCmsGoodsCategory>().Where(x => x.id == puhuo.CategoryId).FirstAsync(); ;
                                if (categorie != null)
                                {
                                    puhuo.CategoryName = categorie.name;
                                }
                                puhuo.goodsId = products1.goodsId;
                                puhuo.goodsName = products1.name;
                                puhuo.productsId = products1.id;
                                puhuo.productsName = products1.sn;
                                puhuo.spesDesc = products1.spesDesc;
                                puhuo.shoukuannums = 0;
                                puhuo.shoukuanamount = 0;
                                puhuo.nums = puhuo.nums + products1.nums;
                                puhuo.price = products1.distributionPrice;
                                puhuo.amount = products1.distributionPrice * new decimal(puhuo.nums);
                                puhuo.isdelete = false;
                                puhuo.createBy = username;
                                puhuo.upDataBy = username;
                                puhuo.createTime = DateTime.Now;
                                puhuo.upDataTime = DateTime.Now;
                                await DbClient.Insertable<Puhuo>(puhuo).ExecuteCommandAsync();
                            }
                        }
                    }
                }
                jm.code = bl ? 0 : 1;
                jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure;
                _unitOfWork.CommitTran();
CoreCms.Net.Repository/baifenbingfa/PuhuoRepository.cs
@@ -89,7 +89,9 @@
            oldModel.createBy = entity.createBy;
            oldModel.upDataBy = entity.upDataBy;
            oldModel.isdelete = entity.isdelete;
            oldModel.shoukuannums = entity.shoukuannums;
            oldModel.shoukuanamount = entity.shoukuanamount;
            //事物处理过程结束
            var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync();
            jm.code = bl ? 0 : 1;
@@ -196,7 +198,7 @@
                goodsId = p.goodsId,
                goodsName = p.goodsName,
                productsId = p.productsId,
                productsName = p.productsName,
                productsName = p.productsName +" " + p.spesDesc,
                spesDesc = p.spesDesc,
                price = p.price,
                nums = p.nums,
@@ -225,7 +227,7 @@
                goodsId = p.goodsId,
                goodsName = p.goodsName,
                productsId = p.productsId,
                productsName = p.productsName,
                productsName = p.productsName + " " + p.spesDesc,
                spesDesc = p.spesDesc,
                price = p.price,
                nums = p.nums,
@@ -238,6 +240,16 @@
                
                }).ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            foreach (var puhuo  in page)
            {
              var distribution = await  DbClient.Queryable<CoreCmsDistribution>().In(puhuo.distributionId).WithNoLockOrNot(blUseNoLock).WithCacheIF(false).SingleAsync();
                if (distribution !=null)
                {
                    puhuo.schoolName = distribution.schoolName;
                }
            }
            var list = new PageList<Puhuo>(page, pageIndex, pageSize, totalCount);
            return list;
        }
@@ -259,7 +271,7 @@
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        public async Task<IPageList<Puhuo>> QueryPageGroupAsync(Expression<Func<Puhuo, bool>> predicate,
            Expression<Func<Puhuo, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            Expression<Func<Puhuo, object>> orderByExpression, OrderByType orderByType, OtherData otherData, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            RefAsync<int> totalCount = 0;
@@ -267,7 +279,7 @@
            if (blUseNoLock)
            {
                page = await DbClient.Queryable<Puhuo>()
                .GroupBy(it => new {  it.CategoryId, it.CategoryName, it.goodsId, it.goodsName, it.productsId, it.productsName, it.price })
                .GroupBy(it => new {  it.CategoryId, it.CategoryName, it.goodsId, it.goodsName, it.productsId, it.productsName, it.price ,it.spesDesc })
                .WhereIF(predicate != null, predicate)
                .Select(p => new Puhuo
                {
@@ -278,7 +290,7 @@
                    goodsId = p.goodsId,
                    goodsName = p.goodsName,
                    productsId = p.productsId,
                    productsName = p.productsName,
                    productsName =  p.productsName + " " + p.spesDesc,
                    price = p.price,
                    tiaozhengnums =SqlFunc.AggregateCount(p.id),
                    nums =  SqlFunc.AggregateSum(p.nums),
@@ -289,6 +301,9 @@
               .MergeTable()//需要加MergeTable才能排序统计过的列
                .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                .With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            else
            {
@@ -303,7 +318,7 @@
                     goodsId = p.goodsId,
                     goodsName = p.goodsName,
                     productsId = p.productsId,
                     productsName = p.productsName,
                     productsName = p.productsName + " " + p.spesDesc,
                     price = p.price,
                     tiaozhengnums = SqlFunc.AggregateCount(p.id),
                     nums = SqlFunc.AggregateSum(p.nums),
@@ -315,6 +330,31 @@
                 .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                 .ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            var pagetotal = DbClient.Queryable<Puhuo>()
               // .GroupBy(it => new { it.CategoryId, it.CategoryName, it.goodsId, it.goodsName, it.productsId, it.productsName, it.price })
               .WhereIF(predicate != null, predicate)
               .Select(p => new Puhuo
               {
                   tiaozhengnums = SqlFunc.AggregateCount(p.id),
                   nums = SqlFunc.AggregateSum(p.nums),
                   amount = SqlFunc.AggregateSum(p.amount),
               })
                 .First(); // 或者使用 Single/FirstOrDefault 等方法获取结果
              //.Select(p => new Puhuo
              //{
              //    tiaozhengnums = SqlFunc.AggregateCount(p.id),
              //    nums = SqlFunc.AggregateSum(p.nums),
              //    amount = SqlFunc.AggregateSum(p.amount),
            //});
            otherData.heji4 = pagetotal.nums;
            otherData.heji5 = pagetotal.amount;
            otherData.heji6 = pagetotal.tiaozhengnums;
            var list = new PageList<Puhuo>(page, pageIndex, pageSize, totalCount);
            return list;
        }
CoreCms.Net.Repository/baifenbingfa/PuhuoShoukuanRepository.cs
New file
@@ -0,0 +1,280 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/6/25 13:17:00
 *        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.puhuo;
namespace CoreCms.Net.Repository
{
    /// <summary>
    /// 铺货 接口实现
    /// </summary>
    public class PuhuoShoukuanRepository : BaseRepository<PuhuoShoukuan>, IPuhuoShoukuanRepository
    {
        private readonly IUnitOfWork _unitOfWork;
        public PuhuoShoukuanRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
        {
            _unitOfWork = unitOfWork;
        }
       #region 实现重写增删改查操作==========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> InsertAsync(PuhuoShoukuan 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(PuhuoShoukuan entity)
        {
            var jm = new AdminUiCallBack();
            var oldModel = await DbClient.Queryable<PuhuoShoukuan>().In(entity.id).SingleAsync();
            if (oldModel == null)
            {
            jm.msg = "不存在此信息";
            return jm;
            }
            //事物处理过程开始
            oldModel.id = entity.id;
            oldModel.puhuoId = entity.puhuoId;
            oldModel.distributionId = entity.distributionId;
            oldModel.distributionName = entity.distributionName;
            oldModel.areaCode = entity.areaCode;
            oldModel.areaCodeName = entity.areaCodeName;
            oldModel.CategoryId = entity.CategoryId;
            oldModel.CategoryName = entity.CategoryName;
            oldModel.goodsId = entity.goodsId;
            oldModel.goodsName = entity.goodsName;
            oldModel.productsId = entity.productsId;
            oldModel.productsName = entity.productsName;
            oldModel.spesDesc = entity.spesDesc;
            oldModel.price = entity.price;
            oldModel.nums = entity.nums;
            oldModel.amount = entity.amount;
            oldModel.shoukuannums = entity.shoukuannums;
            oldModel.shoukuanamount = entity.shoukuanamount;
            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<PuhuoShoukuan> 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<PuhuoShoukuan>(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<PuhuoShoukuan>().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<PuhuoShoukuan>> GetCaChe()
        {
           var list = await DbClient.Queryable<PuhuoShoukuan>().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<PuhuoShoukuan>> QueryPageAsync(Expression<Func<PuhuoShoukuan, bool>> predicate,
            Expression<Func<PuhuoShoukuan, object>> orderByExpression, OrderByType orderByType, OtherData otherData , int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            RefAsync<int> totalCount = 0;
            List<PuhuoShoukuan> page;
            if (blUseNoLock)
            {
                page = await DbClient.Queryable<PuhuoShoukuan>()
                .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                .WhereIF(predicate != null, predicate).Select(p => new PuhuoShoukuan
                {
                      id = p.id,
                puhuoId = p.puhuoId,
                distributionId = p.distributionId,
                distributionName = p.distributionName,
                areaCode = p.areaCode,
                areaCodeName = p.areaCodeName,
                CategoryId = p.CategoryId,
                CategoryName = p.CategoryName,
                goodsId = p.goodsId,
                goodsName = p.goodsName,
                productsId = p.productsId,
                productsName = p.productsName,
                spesDesc = p.spesDesc,
                price = p.price,
                nums = p.nums,
                amount = p.amount,
                shoukuannums = p.shoukuannums,
                shoukuanamount = p.shoukuanamount,
                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<PuhuoShoukuan>()
                .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                .WhereIF(predicate != null, predicate).Select(p => new PuhuoShoukuan
                {
                      id = p.id,
                puhuoId = p.puhuoId,
                distributionId = p.distributionId,
                distributionName = p.distributionName,
                areaCode = p.areaCode,
                areaCodeName = p.areaCodeName,
                CategoryId = p.CategoryId,
                CategoryName = p.CategoryName,
                goodsId = p.goodsId,
                goodsName = p.goodsName,
                productsId = p.productsId,
                productsName = p.productsName,
                spesDesc = p.spesDesc,
                price = p.price,
                nums = p.nums,
                amount = p.amount,
                shoukuannums = p.shoukuannums,
                shoukuanamount = p.shoukuanamount,
                createTime = p.createTime,
                upDataTime = p.upDataTime,
                createBy = p.createBy,
                upDataBy = p.upDataBy,
                isdelete = p.isdelete,
                }).ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            foreach (var puhuo in page)
            {
                var distribution = await DbClient.Queryable<CoreCmsDistribution>().In(puhuo.distributionId).WithNoLockOrNot(blUseNoLock).WithCacheIF(false).SingleAsync();
                if (distribution != null)
                {
                    puhuo.schoolName = distribution.schoolName;
                }
            }
            var pagetotal = DbClient.Queryable<PuhuoShoukuan>()
              .WhereIF(predicate != null, predicate)
              .Select(p => new Puhuo
              {
                  shoukuanamount = SqlFunc.AggregateSum(p.shoukuanamount),
                  shoukuannums = SqlFunc.AggregateSum(p.shoukuannums),
              })
                .First();
            otherData.heji4 = pagetotal.shoukuannums??0;
            otherData.heji5 = pagetotal.shoukuanamount??0;
            var list = new PageList<PuhuoShoukuan>(page, pageIndex, pageSize, totalCount);
            return list;
        }
        #endregion
    }
}
CoreCms.Net.Services/Stock/CoreCmsStockServices.cs
@@ -20,6 +20,7 @@
using CoreCms.Net.Model.FromBody;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using Essensoft.Paylink.Alipay.Domain;
using SqlSugar;
@@ -47,9 +48,9 @@
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> InsertAsync(FMCreateStock entity)
        public async Task<AdminUiCallBack> InsertAsync(FMCreateStock entity, string username, CoreCmsDistribution distribution)
        {
            return await _dal.InsertAsync(entity);
            return await _dal.InsertAsync(entity,  username, distribution);
        }
        #endregion
CoreCms.Net.Services/baifenbingfa/PuhuoServices.cs
@@ -139,10 +139,10 @@
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        public async Task<IPageList<Puhuo>> QueryPageGroupAsync(Expression<Func<Puhuo, bool>> predicate,
            Expression<Func<Puhuo, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            Expression<Func<Puhuo, object>> orderByExpression, OrderByType orderByType, OtherData otherData, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            return await _dal.QueryPageGroupAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
            return await _dal.QueryPageGroupAsync(predicate, orderByExpression, orderByType,  otherData , pageIndex, pageSize, blUseNoLock);
        }
        #endregion
CoreCms.Net.Services/baifenbingfa/PuhuoShoukuanServices.cs
New file
@@ -0,0 +1,130 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/6/25 13:17:00
 *        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.puhuo;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.Services
{
    /// <summary>
    /// 铺货 接口实现
    /// </summary>
    public class PuhuoShoukuanServices : BaseServices<PuhuoShoukuan>, IPuhuoShoukuanServices
    {
        private readonly IPuhuoShoukuanRepository _dal;
        private readonly IUnitOfWork _unitOfWork;
        public PuhuoShoukuanServices(IUnitOfWork unitOfWork, IPuhuoShoukuanRepository dal)
        {
            this._dal = dal;
            base.BaseDal = dal;
            _unitOfWork = unitOfWork;
        }
        #region 实现重写增删改查操作==========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> InsertAsync(PuhuoShoukuan entity)
        {
            return await _dal.InsertAsync(entity);
        }
        /// <summary>
        /// 重写异步更新方法方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> UpdateAsync(PuhuoShoukuan entity)
        {
            return await _dal.UpdateAsync(entity);
        }
        /// <summary>
        /// 重写异步更新方法方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> UpdateAsync(List<PuhuoShoukuan> 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<PuhuoShoukuan>> 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<PuhuoShoukuan>> QueryPageAsync(Expression<Func<PuhuoShoukuan, bool>> predicate,
            Expression<Func<PuhuoShoukuan, object>> orderByExpression, OrderByType orderByType, OtherData otherData, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, otherData, pageIndex, pageSize, blUseNoLock);
        }
        #endregion
    }
}
CoreCms.Net.Web.Admin/Controllers/Stock/CoreCmsStockController.cs
@@ -31,6 +31,9 @@
using Microsoft.AspNetCore.Mvc;
using NPOI.HSSF.UserModel;
using SqlSugar;
using CoreCms.Net.Services;
using Essensoft.Paylink.Alipay.Domain;
using CoreCms.Net.Services.Basic;
namespace CoreCms.Net.Web.Admin.Controllers
{
@@ -50,12 +53,16 @@
        private readonly ICoreCmsStockLogServices _stockLogServices;
        private readonly ISysUserServices _sysUserServices;
        private readonly IHttpContextUser _user;
        private readonly ICoreCmsDistributionServices _coreCmsDistributionServices;
        private readonly ICoreCmsAreaServices _coreCmsAreaServices;
        /// <summary>
        /// 构造函数
        ///</summary>
        public CoreCmsStockController(IWebHostEnvironment webHostEnvironment
            , ICoreCmsStockServices stockServices, ICoreCmsProductsServices productsServices, IHttpContextUser user, ICoreCmsStockLogServices stockLogServices, ISysUserServices sysUserServices)
            , ICoreCmsStockServices stockServices, ICoreCmsProductsServices productsServices, IHttpContextUser user, ICoreCmsStockLogServices stockLogServices, ISysUserServices sysUserServices
            , ICoreCmsDistributionServices coreCmsDistributionServices
            , ICoreCmsAreaServices coreCmsAreaServices)
        {
            _webHostEnvironment = webHostEnvironment;
            _stockServices = stockServices;
@@ -63,6 +70,8 @@
            _user = user;
            _stockLogServices = stockLogServices;
            _sysUserServices = sysUserServices;
            _coreCmsDistributionServices = coreCmsDistributionServices;
            _coreCmsAreaServices = coreCmsAreaServices;
        }
        #region 获取列表============================================================
@@ -199,10 +208,13 @@
            var products = await _productsServices.GetProducts();
            var distributions = await _coreCmsDistributionServices.QueryListByClauseAsync(p => p.isDelete == false && p.verifyStatus == 1, p => p.createTime, OrderByType.Desc, true, true);
            jm.data = new
            {
                stockType,
                products,
                distributions
            };
            return jm;
@@ -220,6 +232,8 @@
        [Description("创建提交")]
        public async Task<AdminUiCallBack> DoCreate([FromBody] FMCreateStock entity)
        {
            //返回数据
            var jm = new AdminUiCallBack { code = 0 };
            if (_user != null)
            {
                entity.model.manager = _user.ID;
@@ -228,8 +242,30 @@
            {
                entity.model.manager = 0;
            }
            var distributions = new CoreCmsDistribution();
            if (entity.model.type == 3)
            {
                if (entity.model.distributionId == 0)
                {
                    jm.msg = "请选择经销商";
                    return jm;
                }
            var jm = await _stockServices.InsertAsync(entity);
                distributions = await _coreCmsDistributionServices.QueryByIdAsync(entity.model.distributionId);
                if (distributions != null)
                {
                    var d = await _coreCmsAreaServices.GetAreaFullName(distributions.areaCode?.Split(",").ToList().OrderDescending()?.FirstOrDefault()?.ToInt32OrDefault(0) ?? 0);
                    if (d.status == true)
                    {
                        distributions.areaName = d.data.ToString();
                    }
                }
            }
            jm = await _stockServices.InsertAsync(entity,_user.Name, distributions);
            return jm;
        }
        #endregion
CoreCms.Net.Web.Admin/Controllers/baifenbingfa/PuhuoController.cs
@@ -42,6 +42,8 @@
using Essensoft.Paylink.Alipay.Domain;
using CoreCms.Net.Auth.HttpContextUser;
using MathNet.Numerics.Distributions;
using EnumsNET;
using CoreCms.Net.IRepository;
namespace CoreCms.Net.Web.Admin.Controllers
{
@@ -66,6 +68,10 @@
        private readonly IHttpContextUser _user;
        private readonly ICoreCmsAreaServices _areaServices;
        private readonly ICoreCmsGoodsCategoryServices _goodsCategoryServices;
        private readonly ICoreCmsStockRepository _stockRepository;
        private readonly ICoreCmsStockServices _stockServices;
        private readonly ICoreCmsStockLogServices _stockLogServices;
        private readonly IPuhuoShoukuanServices _puhuoShoukuanServices;
        /// <summary>
        /// 构造函数
@@ -81,6 +87,10 @@
            , IHttpContextUser user
            , ICoreCmsAreaServices areaServices
            , ICoreCmsGoodsCategoryServices goodsCategoryServices
            , ICoreCmsStockRepository stockRepository
            , ICoreCmsStockServices stockServices
             , ICoreCmsStockLogServices stockLogServices
            , IPuhuoShoukuanServices puhuoShoukuanServices
            )
        {
            _webHostEnvironment = webHostEnvironment;
@@ -94,6 +104,10 @@
            _user = user;
            _areaServices = areaServices;
            _goodsCategoryServices = goodsCategoryServices;
            _stockRepository = stockRepository;
            _stockServices = stockServices;
            _stockLogServices = stockLogServices;
            _puhuoShoukuanServices = puhuoShoukuanServices;
        }
@@ -321,13 +335,21 @@
            {
                where = where.And(p => p.isdelete == false);
            }
            OtherData otherData = new OtherData();
            //获取数据
            var list = await _PuhuoServices.QueryPageGroupAsync(where, orderEx, orderBy, pageCurrent, pageSize, true);
            var list = await _PuhuoServices.QueryPageGroupAsync(where, orderEx, orderBy, otherData, pageCurrent, pageSize, true);
            //返回数据
            jm.data = list;
            jm.code = 0;
            jm.count = list.TotalCount;
            jm.msg = "数据调用成功!";
            otherData.heji1 = list.Sum(x=>x.nums);
            otherData.heji2 = list.Sum(x => x.amount);
            otherData.heji3 = list.Sum(x => x.tiaozhengnums);
            jm.otherData = otherData;
            return jm;
        }
        #endregion
@@ -832,7 +854,26 @@
            coreCmsProduct.stock = coreCmsProduct.stock - entity.nums;
            var bb = await _coreCmsProductsServices.UpdateAsync(coreCmsProduct);
            //库存盘点
            var stockModel = new CoreCmsStock();
            stockModel.id = await _stockRepository.CreateCode(GlobalEnumVars.StockType.CheckGoods.ToString());
            stockModel.memo = entity.distributionName + " 经销商铺货";
            stockModel.type = (int)GlobalEnumVars.StockType.Out;
            stockModel.manager = _user.ID;
            stockModel.createTime = DateTime.Now;
            var stockLogModel = new CoreCmsStockLog();
            stockLogModel.stockId = stockModel.id;
            stockLogModel.productId = entity.productsId;
            stockLogModel.goodsId = entity.goodsId;
            stockLogModel.nums = entity.nums;
            stockLogModel.goodsName = entity.goodsName;
            stockLogModel.sn = entity.productsName;
            stockLogModel.bn = entity.productsName;
            stockLogModel.spesDesc = entity.spesDesc;
            var s = await _stockServices.InsertAsync(stockModel);
            s = await _stockLogServices.InsertAsync(stockLogModel);
            jm = await _PuhuoServices.InsertAsync(entity);
            return jm;
@@ -883,74 +924,187 @@
            var jm = new AdminUiCallBack();
            if (entity.tiaozhengnums <= 0)
            if(entity.jintui == 4)
            {
                jm.msg = "请填写调整数量";
                return jm;
            }
            var puhuo = await _PuhuoServices.QueryByIdAsync(entity.id);
            if (entity.jintui == 2 && puhuo.nums < entity.tiaozhengnums)
            {
                jm.msg = "退货数量大于铺货数量,不能提交";
                return jm;
            }
            var coreCmsProduct = await _coreCmsProductsServices.QueryByIdAsync(puhuo.productsId);
            if (coreCmsProduct != null)
            {
                if (entity.jintui == 1 && coreCmsProduct.stock < entity.tiaozhengnums)
                if (entity.shoukuannums <= 0)
                {
                    jm.msg = "库存不足!";
                    jm.msg = "请填写收款数量";
                    return jm;
                }
                if (entity.jintui == 1)
                var puhuo = await _PuhuoServices.QueryByIdAsync(entity.id);
                var aaaa = puhuo.shoukuannums ?? 0;
                if ( puhuo.nums < (aaaa + entity.shoukuannums))
                {
                    puhuo.nums = puhuo.nums + entity.tiaozhengnums;
                    jm.msg = "收款数量大于铺货数量,不能提交";
                    return jm;
                }
                else if (entity.jintui == 2)
                {
                    puhuo.nums = puhuo.nums - entity.tiaozhengnums;
                }
                puhuo.price = coreCmsProduct.distributionPrice;
                puhuo.amount = coreCmsProduct.distributionPrice * new decimal(puhuo.nums);
                PuhuoShoukuan puhuoShoukuan = new PuhuoShoukuan();
                puhuoShoukuan.puhuoId = puhuo.id;
                puhuoShoukuan.distributionId = puhuo.distributionId;
                puhuoShoukuan.distributionName = puhuo.distributionName;
                puhuoShoukuan.areaCode = puhuo.areaCode;
                puhuoShoukuan.areaCodeName = puhuo.areaCodeName;
                puhuoShoukuan.CategoryId = puhuo.CategoryId;
                puhuoShoukuan.CategoryName = puhuo.CategoryName;
                puhuoShoukuan.goodsId = puhuo.goodsId;
                puhuoShoukuan.goodsName = puhuo.goodsName;
                puhuoShoukuan.productsId = puhuo.productsId;
                puhuoShoukuan.productsName = puhuo.productsName;
                puhuoShoukuan.spesDesc = puhuo.spesDesc;
                puhuoShoukuan.price = puhuo.price;
                puhuoShoukuan.nums = puhuo.nums;
                puhuoShoukuan.amount = puhuo.amount;
                puhuoShoukuan.shoukuannums = entity.shoukuannums.Value;
                puhuoShoukuan.shoukuanamount = new decimal(entity.shoukuannums.Value) * puhuo.price;
                puhuoShoukuan.isdelete = false;
                puhuoShoukuan.createBy = _user.Name;
                puhuoShoukuan.upDataBy = _user.Name;
                puhuoShoukuan.createTime = DateTime.Now;
                puhuoShoukuan.upDataTime = DateTime.Now;
                jm = await _puhuoShoukuanServices.InsertAsync(puhuoShoukuan);
                puhuo.upDataBy = _user.Name;
                puhuo.upDataTime = DateTime.Now;
                var sss = puhuo.shoukuannums ?? 0;
                puhuo.shoukuannums = sss + entity.shoukuannums.Value;
                var aaa = puhuo.shoukuanamount ?? new decimal(0);
                puhuo.shoukuanamount = aaa + (new decimal(entity.shoukuannums.Value) * puhuo.price);
                jm = await _PuhuoServices.UpdateAsync(puhuo);
            }
            else
            {
                jm.msg = "没找到产品";
                return jm;
                if (entity.tiaozhengnums <= 0 && entity.jintui != 3)
                {
                    jm.msg = "请填写调整数量";
                    return jm;
                }
                var puhuo = await _PuhuoServices.QueryByIdAsync(entity.id);
                if (entity.jintui == 2 && puhuo.nums < entity.tiaozhengnums)
                {
                    jm.msg = "退货数量大于铺货数量,不能提交";
                    return jm;
                }
                if (entity.jintui == 3 && puhuo.nums < -entity.tiaozhengnums)
                {
                    jm.msg = "盘点减少数量大于铺货数量,不能提交";
                    return jm;
                }
                var coreCmsProduct = await _coreCmsProductsServices.QueryByIdAsync(puhuo.productsId);
                if (coreCmsProduct != null)
                {
                    if (entity.jintui == 1 && coreCmsProduct.stock < entity.tiaozhengnums)
                    {
                        jm.msg = "库存不足!";
                        return jm;
                    }
                    if (entity.jintui == 1)
                    {
                        puhuo.nums = puhuo.nums + entity.tiaozhengnums;
                    }
                    else if (entity.jintui == 2)
                    {
                        puhuo.nums = puhuo.nums - entity.tiaozhengnums;
                    }
                    else if (entity.jintui == 3)
                    {
                        puhuo.nums = puhuo.nums + entity.tiaozhengnums;
                    }
                    puhuo.price = coreCmsProduct.distributionPrice;
                    puhuo.amount = coreCmsProduct.distributionPrice * new decimal(puhuo.nums);
                }
                else
                {
                    jm.msg = "没找到产品";
                    return jm;
                }
                puhuo.isdelete = false;
                //entity.createBy = _user.Name;
                puhuo.upDataBy = _user.Name;
                //entity.createTime = DateTime.Now;
                puhuo.upDataTime = DateTime.Now;
                if (entity.jintui == 1)
                {
                    coreCmsProduct.stock = coreCmsProduct.stock - entity.tiaozhengnums;
                }
                else if (entity.jintui == 2)
                {
                    coreCmsProduct.stock = coreCmsProduct.stock + entity.tiaozhengnums;
                }
                //盘点不扣减库存
                if (entity.jintui != 3)
                {
                    var bb = await _coreCmsProductsServices.UpdateAsync(coreCmsProduct);
                }
                var stockModel = new CoreCmsStock();
                stockModel.id = await _stockRepository.CreateCode(GlobalEnumVars.StockType.CheckGoods.ToString());
                stockModel.manager = _user.ID;
                stockModel.createTime = DateTime.Now;
                var stockLogModel = new CoreCmsStockLog();
                stockLogModel.stockId = stockModel.id;
                stockLogModel.productId = puhuo.productsId;
                stockLogModel.goodsId = puhuo.goodsId;
                if (entity.jintui == 1)
                {
                    stockModel.memo = puhuo.distributionName + " 经销商铺货";
                    stockModel.type = (int)GlobalEnumVars.StockType.Out;
                    stockLogModel.nums = entity.tiaozhengnums;
                }
                else if (entity.jintui == 2)
                {
                    stockModel.memo = puhuo.distributionName + " 经销商铺货退货";
                    stockModel.type = (int)GlobalEnumVars.StockType.In;
                    stockLogModel.nums = entity.tiaozhengnums;
                }
                else if (entity.jintui == 3)
                {
                    stockModel.memo = puhuo.distributionName + " 铺货盘点核减损耗";
                    stockModel.type = (int)GlobalEnumVars.StockType.CheckPuhuo;
                    stockLogModel.nums = entity.tiaozhengnums;
                }
                stockLogModel.goodsName = puhuo.goodsName;
                stockLogModel.sn = puhuo.productsName;
                stockLogModel.bn = puhuo.productsName;
                stockLogModel.spesDesc = puhuo.spesDesc;
                var s = await _stockServices.InsertAsync(stockModel);
                s = await _stockLogServices.InsertAsync(stockLogModel);
                jm = await _PuhuoServices.UpdateAsync(puhuo);
            }
            puhuo.isdelete = false;
            //entity.createBy = _user.Name;
            puhuo.upDataBy = _user.Name;
            //entity.createTime = DateTime.Now;
            puhuo.upDataTime = DateTime.Now;
            if (entity.jintui == 1)
            {
                coreCmsProduct.stock = coreCmsProduct.stock - entity.tiaozhengnums;
            }
            else if (entity.jintui == 2)
            {
                coreCmsProduct.stock = coreCmsProduct.stock + entity.tiaozhengnums;
            }
            var bb = await _coreCmsProductsServices.UpdateAsync(coreCmsProduct);
            jm = await _PuhuoServices.UpdateAsync(puhuo);
            return jm;
        }
        #endregion
@@ -1010,6 +1164,16 @@
        {
            var jm = new AdminUiCallBack();
            var puhuoss = await _PuhuoServices.QueryListByClauseAsync(p => p.productsId == entity.productsId);
            foreach (var puhuo in puhuoss)
            {
                puhuo.productsName = puhuo.productsName + " " + puhuo.spesDesc;
             var distribution   = await   _coreCmsDistributionServices.QueryByIdAsync(puhuo.distributionId);
                if (distribution != null)
                {
                    puhuo.schoolName = distribution.schoolName;
                }
            }
            //var model = await _PuhuoServices.QueryByIdAsync(entity.id, false);
            //if (model == null)
            //{
CoreCms.Net.Web.Admin/Controllers/baifenbingfa/PuhuoShoukuanController.cs
New file
@@ -0,0 +1,1281 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/6/25 13:17:00
 *        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.puhuo;
namespace CoreCms.Net.Web.Admin.Controllers
{
    /// <summary>
    /// 铺货
    ///</summary>
    [Description("铺货")]
    [Route("api/[controller]/[action]")]
    [ApiController]
    [RequiredErrorForAdmin]
    [Authorize(Permissions.Name)]
    public class PuhuoShoukuanController : ControllerBase
    {
        private readonly IWebHostEnvironment _webHostEnvironment;
        private readonly IPuhuoShoukuanServices _PuhuoShoukuanServices;
        private readonly ICoreCmsAreaServices _areaServices;
        /// <summary>
        /// 构造函数
        ///</summary>
        public PuhuoShoukuanController(IWebHostEnvironment webHostEnvironment
            ,IPuhuoShoukuanServices PuhuoShoukuanServices
            , ICoreCmsAreaServices areaServices
            )
        {
            _webHostEnvironment = webHostEnvironment;
            _PuhuoShoukuanServices = PuhuoShoukuanServices;
            _areaServices = areaServices;
        }
        #region 获取列表============================================================
        // POST: Api/PuhuoShoukuan/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<PuhuoShoukuan>();
            //获取排序字段
            var orderField = Request.Form["orderField"].FirstOrDefault();
            Expression<Func<PuhuoShoukuan, object>> orderEx = orderField switch
            {
                "id" => p => p.id,"puhuoId" => p => p.puhuoId,"distributionId" => p => p.distributionId,"distributionName" => p => p.distributionName,"areaCode" => p => p.areaCode,"areaCodeName" => p => p.areaCodeName,"CategoryId" => p => p.CategoryId,"CategoryName" => p => p.CategoryName,"goodsId" => p => p.goodsId,"goodsName" => p => p.goodsName,"productsId" => p => p.productsId,"productsName" => p => p.productsName,"spesDesc" => p => p.spesDesc,"price" => p => p.price,"nums" => p => p.nums,"amount" => p => p.amount,"shoukuannums" => p => p.shoukuannums,"shoukuanamount" => p => p.shoukuanamount,"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 int
            var puhuoId = Request.Form["puhuoId"].FirstOrDefault().ObjectToInt(0);
            if (puhuoId > 0)
            {
                where = where.And(p => p.puhuoId == puhuoId);
            }
            //经销商id int
            var distributionId = Request.Form["distributionId"].FirstOrDefault().ObjectToInt(0);
            if (distributionId > 0)
            {
                where = where.And(p => p.distributionId == distributionId);
            }
            //经销商 varchar
            var distributionName = Request.Form["distributionName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(distributionName))
            {
                where = where.And(p => p.distributionName.Contains(distributionName));
            }
            //区域 varchar
            var sheng = Request.Form["sheng"].FirstOrDefault();
            if (!string.IsNullOrEmpty(sheng))
            {
                where = where.And(p => p.areaCode.Contains(sheng));
            }
            var shi = Request.Form["shi"].FirstOrDefault();
            if (!string.IsNullOrEmpty(shi))
            {
                where = where.And(p => p.areaCode.Contains(shi));
            }
            var quxian = Request.Form["quxian"].FirstOrDefault();
            if (!string.IsNullOrEmpty(quxian))
            {
                where = where.And(p => p.areaCode.Contains(quxian));
            }
            //区域名称 varchar
            var areaCodeName = Request.Form["areaCodeName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(areaCodeName))
            {
                where = where.And(p => p.areaCodeName.Contains(areaCodeName));
            }
            //商品分类id int
            var CategoryId = Request.Form["CategoryId"].FirstOrDefault().ObjectToInt(0);
            if (CategoryId > 0)
            {
                where = where.And(p => p.CategoryId == CategoryId);
            }
            //商品分类 varchar
            var CategoryName = Request.Form["CategoryName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(CategoryName))
            {
                where = where.And(p => p.CategoryName.Contains(CategoryName));
            }
            //商品id int
            var goodsId = Request.Form["goodsId"].FirstOrDefault().ObjectToInt(0);
            if (goodsId > 0)
            {
                where = where.And(p => p.goodsId == goodsId);
            }
            //商品名称 varchar
            var goodsName = Request.Form["goodsName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(goodsName))
            {
                where = where.And(p => p.goodsName.Contains(goodsName));
            }
            //货品id int
            var productsId = Request.Form["productsId"].FirstOrDefault().ObjectToInt(0);
            if (productsId > 0)
            {
                where = where.And(p => p.productsId == productsId);
            }
            //货品编号 varchar
            var productsName = Request.Form["productsName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(productsName))
            {
                where = where.And(p => p.productsName.Contains(productsName));
            }
            //货品规格 varchar
            var spesDesc = Request.Form["spesDesc"].FirstOrDefault();
            if (!string.IsNullOrEmpty(spesDesc))
            {
                where = where.And(p => p.spesDesc.Contains(spesDesc));
            }
            //货品价格 decimal
            var price = Request.Form["price"].FirstOrDefault().ObjectToDecimal(0);
            if (price > 0)
            {
                where = where.And(p => p.price == price);
            }
            //数量 int
            var nums = Request.Form["nums"].FirstOrDefault().ObjectToInt(0);
            if (nums > 0)
            {
                where = where.And(p => p.nums == nums);
            }
            //金额 decimal
            var amount = Request.Form["amount"].FirstOrDefault().ObjectToDecimal(0);
            if (amount > 0)
            {
                where = where.And(p => p.amount == amount);
            }
            //收款数量 int
            var shoukuannums = Request.Form["shoukuannums"].FirstOrDefault().ObjectToInt(0);
            if (shoukuannums > 0)
            {
                where = where.And(p => p.shoukuannums == shoukuannums);
            }
            //收款金额 decimal
            var shoukuanamount = Request.Form["shoukuanamount"].FirstOrDefault().ObjectToDecimal(0);
            if (shoukuanamount > 0)
            {
                where = where.And(p => p.shoukuanamount == shoukuanamount);
            }
            //建立时间 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);
            }
            OtherData otherData = new OtherData();
            //获取数据
            var list = await _PuhuoShoukuanServices.QueryPageAsync(where, orderEx, orderBy, otherData, pageCurrent, pageSize, true);
            //返回数据
            jm.data = list;
            jm.code = 0;
            jm.count = list.TotalCount;
            jm.msg = "数据调用成功!";
            otherData.heji1 = list.Sum(x => x.shoukuannums);
            otherData.heji2 = list.Sum(x => x.shoukuanamount);
            jm.otherData = otherData;
            return jm;
        }
        #endregion
        #region 首页数据============================================================
        // POST: Api/PuhuoShoukuan/GetIndex
        /// <summary>
        /// 首页数据
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("首页数据")]
        public async Task<AdminUiCallBack> GetIndex()
        {
            //返回数据
            var jm = new AdminUiCallBack { code = 0 };
            var shi = await _areaServices.QueryListByClauseAsync(p => p.parentId == 0);//510000
            var sss = shi.Where(x => x.id == 510000).FirstOrDefault();
            if (shi.Remove(sss))
            {
                shi.Insert(0, sss);
            }
            jm.data = shi;
            return jm;
        }
        #endregion
        #region 创建数据============================================================
        // POST: Api/PuhuoShoukuan/GetCreate
        /// <summary>
        /// 创建数据
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("创建数据")]
        public AdminUiCallBack GetCreate()
        {
            //返回数据
            var jm = new AdminUiCallBack { code = 0 };
            return jm;
        }
        #endregion
        #region 创建提交============================================================
        // POST: Api/PuhuoShoukuan/DoCreate
        /// <summary>
        /// 创建提交
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("创建提交")]
        public async Task<AdminUiCallBack> DoCreate([FromBody]PuhuoShoukuan entity)
        {
            var jm = await _PuhuoShoukuanServices.InsertAsync(entity);
            return jm;
        }
        #endregion
        #region 编辑数据============================================================
        // POST: Api/PuhuoShoukuan/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 _PuhuoShoukuanServices.QueryByIdAsync(entity.id, false);
            if (model == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            jm.code = 0;
            jm.data = model;
            return jm;
        }
        #endregion
        #region 编辑提交============================================================
        // POST: Api/PuhuoShoukuan/Edit
        /// <summary>
        /// 编辑提交
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("编辑提交")]
        public async Task<AdminUiCallBack> DoEdit([FromBody]PuhuoShoukuan entity)
        {
            var jm = await _PuhuoShoukuanServices.UpdateAsync(entity);
            return jm;
        }
        #endregion
        #region 删除数据============================================================
        // POST: Api/PuhuoShoukuan/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 _PuhuoShoukuanServices.ExistsAsync(p => p.id == entity.id, true);
            if (!model)
            {
                jm.msg = GlobalConstVars.DataisNo;
                return jm;
            }
            jm = await _PuhuoShoukuanServices.DeleteByIdAsync(entity.id);
            return jm;
        }
        #endregion
        #region 批量删除============================================================
        // POST: Api/PuhuoShoukuan/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 _PuhuoShoukuanServices.DeleteByIdsAsync(entity.id);
            return jm;
        }
        #endregion
        #region 预览数据============================================================
        // POST: Api/PuhuoShoukuan/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 _PuhuoShoukuanServices.QueryByIdAsync(entity.id, false);
            if (model == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            jm.code = 0;
            jm.data = model;
            return jm;
        }
        #endregion
        #region 选择导出============================================================
        // POST: Api/PuhuoShoukuan/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 _PuhuoShoukuanServices.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("商品分类id");
            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("商品id");
            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("货品id");
            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++;
            var cell14 = headerRow.CreateCell(cellNum);
            cell14.SetCellValue("数量");
            cell14.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell15 = headerRow.CreateCell(cellNum);
            cell15.SetCellValue("金额");
            cell15.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell16 = headerRow.CreateCell(cellNum);
            cell16.SetCellValue("收款数量");
            cell16.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell17 = headerRow.CreateCell(cellNum);
            cell17.SetCellValue("收款金额");
            cell17.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell18 = headerRow.CreateCell(cellNum);
            cell18.SetCellValue("建立时间");
            cell18.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell19 = headerRow.CreateCell(cellNum);
            cell19.SetCellValue("修改时间");
            cell19.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell20 = headerRow.CreateCell(cellNum);
            cell20.SetCellValue("创建人");
            cell20.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell21 = headerRow.CreateCell(cellNum);
            cell21.SetCellValue("修改人");
            cell21.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell22 = headerRow.CreateCell(cellNum);
            cell22.SetCellValue("删除标志");
            cell22.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].puhuoId.ToString());
                        rowTemp1.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp2 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp2.SetCellValue(listModel[i].distributionId.ToString());
                        rowTemp2.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp3 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp3.SetCellValue(listModel[i].distributionName.ToString());
                        rowTemp3.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp4 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp4.SetCellValue(listModel[i].areaCode.ToString());
                        rowTemp4.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp5 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp5.SetCellValue(listModel[i].areaCodeName.ToString());
                        rowTemp5.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp6 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp6.SetCellValue(listModel[i].CategoryId.ToString());
                        rowTemp6.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp7 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp7.SetCellValue(listModel[i].CategoryName.ToString());
                        rowTemp7.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp8 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp8.SetCellValue(listModel[i].goodsId.ToString());
                        rowTemp8.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp9 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp9.SetCellValue(listModel[i].goodsName.ToString());
                        rowTemp9.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp10 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp10.SetCellValue(listModel[i].productsId.ToString());
                        rowTemp10.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp11 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp11.SetCellValue(listModel[i].productsName.ToString());
                        rowTemp11.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp12 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp12.SetCellValue(listModel[i].spesDesc.ToString());
                        rowTemp12.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp13 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp13.SetCellValue(listModel[i].price.ToString());
                        rowTemp13.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp14 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp14.SetCellValue(listModel[i].nums.ToString());
                        rowTemp14.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp15 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp15.SetCellValue(listModel[i].amount.ToString());
                        rowTemp15.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp16 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp16.SetCellValue(listModel[i].shoukuannums.ToString());
                        rowTemp16.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp17 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp17.SetCellValue(listModel[i].shoukuanamount.ToString());
                        rowTemp17.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp18 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp18.SetCellValue(listModel[i].createTime.ToString());
                        rowTemp18.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp19 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp19.SetCellValue(listModel[i].upDataTime.ToString());
                        rowTemp19.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp20 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp20.SetCellValue(listModel[i].createBy.ToString());
                        rowTemp20.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp21 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp21.SetCellValue(listModel[i].upDataBy.ToString());
                        rowTemp21.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp22 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp22.SetCellValue(listModel[i].isdelete.ToString());
                        rowTemp22.CellStyle = commonCellStyle;
                        cellNumTemp++;
            }
            // 导出excel
            string webRootPath = _webHostEnvironment.WebRootPath;
            string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
            string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-PuhuoShoukuan导出(选择结果).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/PuhuoShoukuan/QueryExportExcel/10
        /// <summary>
        /// 查询导出
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("查询导出")]
        public async Task<AdminUiCallBack> QueryExportExcel()
        {
            var jm = new AdminUiCallBack();
            var where = PredicateBuilder.True<PuhuoShoukuan>();
                //查询筛选
            //主键ID int
            var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
            if (id > 0)
            {
                where = where.And(p => p.id == id);
            }
            //铺货id int
            var puhuoId = Request.Form["puhuoId"].FirstOrDefault().ObjectToInt(0);
            if (puhuoId > 0)
            {
                where = where.And(p => p.puhuoId == puhuoId);
            }
            //经销商id int
            var distributionId = Request.Form["distributionId"].FirstOrDefault().ObjectToInt(0);
            if (distributionId > 0)
            {
                where = where.And(p => p.distributionId == distributionId);
            }
            //经销商 varchar
            var distributionName = Request.Form["distributionName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(distributionName))
            {
                where = where.And(p => p.distributionName.Contains(distributionName));
            }
            //区域 varchar
            var areaCode = Request.Form["areaCode"].FirstOrDefault();
            if (!string.IsNullOrEmpty(areaCode))
            {
                where = where.And(p => p.areaCode.Contains(areaCode));
            }
            //区域名称 varchar
            var areaCodeName = Request.Form["areaCodeName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(areaCodeName))
            {
                where = where.And(p => p.areaCodeName.Contains(areaCodeName));
            }
            //商品分类id int
            var CategoryId = Request.Form["CategoryId"].FirstOrDefault().ObjectToInt(0);
            if (CategoryId > 0)
            {
                where = where.And(p => p.CategoryId == CategoryId);
            }
            //商品分类 varchar
            var CategoryName = Request.Form["CategoryName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(CategoryName))
            {
                where = where.And(p => p.CategoryName.Contains(CategoryName));
            }
            //商品id int
            var goodsId = Request.Form["goodsId"].FirstOrDefault().ObjectToInt(0);
            if (goodsId > 0)
            {
                where = where.And(p => p.goodsId == goodsId);
            }
            //商品名称 varchar
            var goodsName = Request.Form["goodsName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(goodsName))
            {
                where = where.And(p => p.goodsName.Contains(goodsName));
            }
            //货品id int
            var productsId = Request.Form["productsId"].FirstOrDefault().ObjectToInt(0);
            if (productsId > 0)
            {
                where = where.And(p => p.productsId == productsId);
            }
            //货品编号 varchar
            var productsName = Request.Form["productsName"].FirstOrDefault();
            if (!string.IsNullOrEmpty(productsName))
            {
                where = where.And(p => p.productsName.Contains(productsName));
            }
            //货品规格 varchar
            var spesDesc = Request.Form["spesDesc"].FirstOrDefault();
            if (!string.IsNullOrEmpty(spesDesc))
            {
                where = where.And(p => p.spesDesc.Contains(spesDesc));
            }
            //货品价格 decimal
            var price = Request.Form["price"].FirstOrDefault().ObjectToDecimal(0);
            if (price > 0)
            {
                where = where.And(p => p.price == price);
            }
            //数量 int
            var nums = Request.Form["nums"].FirstOrDefault().ObjectToInt(0);
            if (nums > 0)
            {
                where = where.And(p => p.nums == nums);
            }
            //金额 decimal
            var amount = Request.Form["amount"].FirstOrDefault().ObjectToDecimal(0);
            if (amount > 0)
            {
                where = where.And(p => p.amount == amount);
            }
            //收款数量 int
            var shoukuannums = Request.Form["shoukuannums"].FirstOrDefault().ObjectToInt(0);
            if (shoukuannums > 0)
            {
                where = where.And(p => p.shoukuannums == shoukuannums);
            }
            //收款金额 decimal
            var shoukuanamount = Request.Form["shoukuanamount"].FirstOrDefault().ObjectToDecimal(0);
            if (shoukuanamount > 0)
            {
                where = where.And(p => p.shoukuanamount == shoukuanamount);
            }
            //建立时间 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 _PuhuoShoukuanServices.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("商品分类id");
            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("商品id");
            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("货品id");
            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++;
            var cell14 = headerRow.CreateCell(cellNum);
            cell14.SetCellValue("数量");
            cell14.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell15 = headerRow.CreateCell(cellNum);
            cell15.SetCellValue("金额");
            cell15.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell16 = headerRow.CreateCell(cellNum);
            cell16.SetCellValue("收款数量");
            cell16.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell17 = headerRow.CreateCell(cellNum);
            cell17.SetCellValue("收款金额");
            cell17.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell18 = headerRow.CreateCell(cellNum);
            cell18.SetCellValue("建立时间");
            cell18.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell19 = headerRow.CreateCell(cellNum);
            cell19.SetCellValue("修改时间");
            cell19.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell20 = headerRow.CreateCell(cellNum);
            cell20.SetCellValue("创建人");
            cell20.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell21 = headerRow.CreateCell(cellNum);
            cell21.SetCellValue("修改人");
            cell21.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell22 = headerRow.CreateCell(cellNum);
            cell22.SetCellValue("删除标志");
            cell22.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].puhuoId.ToString());
                rowTemp1.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp2 = rowTemp.CreateCell(cellNumTemp);
                rowTemp2.SetCellValue(listModel[i].distributionId.ToString());
                rowTemp2.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp3 = rowTemp.CreateCell(cellNumTemp);
                rowTemp3.SetCellValue(listModel[i].distributionName.ToString());
                rowTemp3.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp4 = rowTemp.CreateCell(cellNumTemp);
                rowTemp4.SetCellValue(listModel[i].areaCode.ToString());
                rowTemp4.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp5 = rowTemp.CreateCell(cellNumTemp);
                rowTemp5.SetCellValue(listModel[i].areaCodeName.ToString());
                rowTemp5.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp6 = rowTemp.CreateCell(cellNumTemp);
                rowTemp6.SetCellValue(listModel[i].CategoryId.ToString());
                rowTemp6.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp7 = rowTemp.CreateCell(cellNumTemp);
                rowTemp7.SetCellValue(listModel[i].CategoryName.ToString());
                rowTemp7.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp8 = rowTemp.CreateCell(cellNumTemp);
                rowTemp8.SetCellValue(listModel[i].goodsId.ToString());
                rowTemp8.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp9 = rowTemp.CreateCell(cellNumTemp);
                rowTemp9.SetCellValue(listModel[i].goodsName.ToString());
                rowTemp9.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp10 = rowTemp.CreateCell(cellNumTemp);
                rowTemp10.SetCellValue(listModel[i].productsId.ToString());
                rowTemp10.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp11 = rowTemp.CreateCell(cellNumTemp);
                rowTemp11.SetCellValue(listModel[i].productsName.ToString());
                rowTemp11.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp12 = rowTemp.CreateCell(cellNumTemp);
                rowTemp12.SetCellValue(listModel[i].spesDesc.ToString());
                rowTemp12.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp13 = rowTemp.CreateCell(cellNumTemp);
                rowTemp13.SetCellValue(listModel[i].price.ToString());
                rowTemp13.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp14 = rowTemp.CreateCell(cellNumTemp);
                rowTemp14.SetCellValue(listModel[i].nums.ToString());
                rowTemp14.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp15 = rowTemp.CreateCell(cellNumTemp);
                rowTemp15.SetCellValue(listModel[i].amount.ToString());
                rowTemp15.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp16 = rowTemp.CreateCell(cellNumTemp);
                rowTemp16.SetCellValue(listModel[i].shoukuannums.ToString());
                rowTemp16.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp17 = rowTemp.CreateCell(cellNumTemp);
                rowTemp17.SetCellValue(listModel[i].shoukuanamount.ToString());
                rowTemp17.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp18 = rowTemp.CreateCell(cellNumTemp);
                rowTemp18.SetCellValue(listModel[i].createTime.ToString());
                rowTemp18.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp19 = rowTemp.CreateCell(cellNumTemp);
                rowTemp19.SetCellValue(listModel[i].upDataTime.ToString());
                rowTemp19.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp20 = rowTemp.CreateCell(cellNumTemp);
                rowTemp20.SetCellValue(listModel[i].createBy.ToString());
                rowTemp20.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp21 = rowTemp.CreateCell(cellNumTemp);
                rowTemp21.SetCellValue(listModel[i].upDataBy.ToString());
                rowTemp21.CellStyle = commonCellStyle;
                cellNumTemp++;
            var rowTemp22 = rowTemp.CreateCell(cellNumTemp);
                rowTemp22.SetCellValue(listModel[i].isdelete.ToString());
                rowTemp22.CellStyle = commonCellStyle;
                cellNumTemp++;
            }
            // 写入到excel
            string webRootPath = _webHostEnvironment.WebRootPath;
            string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
            string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-PuhuoShoukuan导出(查询结果).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/PuhuoShoukuan/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 _PuhuoShoukuanServices.QueryByIdAsync(entity.id, false);
            if (oldModel == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            oldModel.isdelete = (bool)entity.data;
            var bl = await _PuhuoShoukuanServices.UpdateAsync(p => new PuhuoShoukuan() { 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/wwwroot/views/baifenbingfa/puhuo/create.html
@@ -217,7 +217,7 @@
                            if (data.data.length > 0) {
                                for (var i = 0; i < data.data.length; i++) {
                                    var o = '<option value="' + data.data[i].id + '" >' + data.data[i].sn + '</option>';
                                    var o = '<option value="' + data.data[i].id + '" >' + data.data[i].sn + ' ' + data.data[i].spesDesc + '</option>';
                                    quxian.append(o);
                                }
                                // 使用form.render方法重新渲染select
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/details.html
@@ -7,11 +7,14 @@
        <tbody>
            <tr>
                <td style="background-color:lightsteelblue;width:12.5%;">
                <td style="background-color:lightsteelblue;width:15.5%;">
                    区域
                </td>
                <td style="background-color: lightsteelblue; width: 12.5%;">
                    经销商
                </td>
                <td style="background-color: lightsteelblue; width: 12.5%;">
                    学校
                </td>
                <td style="background-color: lightsteelblue; width: 12.5%;">
                    商品类别
@@ -42,6 +45,9 @@
                {{ item.distributionName }}
            </td>
            <td>
                {{ item.schoolName }}
            </td>
            <td>
                {{ item.categoryName }}
            </td>
            <td>
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/edit.html
@@ -86,7 +86,7 @@
        <div class="layui-form-item">
            <label for="price" class="layui-form-label  ">单价</label>
            <div class="layui-input-block">
                <input name="price" lay-verType="tips" lay-verify="required" class="layui-input" readonly="readonly" placeholder="请输入货品价格" lay-reqText="请输入货品价格" value="{{d.params.data.price || '' }}" />
                <input name="price" lay-verType="tips" lay-verify="required" class="layui-input" readonly="readonly" placeholder="请输入货品价格" lay-reqText="请输入货品价格" value="{{d.params.data.price || '0' }}" />
            </div>
        </div>
@@ -100,7 +100,7 @@
        <div class="layui-form-item">
            <label for="amount" class="layui-form-label  ">金额</label>
            <div class="layui-input-block">
                <input name="amount" lay-verType="tips" lay-verify="required" class="layui-input" readonly="readonly" placeholder="请输入金额" lay-reqText="请输入金额" value="{{d.params.data.amount || '' }}" />
                <input name="amount" lay-verType="tips" lay-verify="required" class="layui-input" readonly="readonly" placeholder="请输入金额" lay-reqText="请输入金额" value="{{d.params.data.amount || '0' }}" />
            </div>
        </div>
        <div class="layui-form-item">
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/editshoukuan.html
New file
@@ -0,0 +1,174 @@
<script type="text/html" template lay-done="layui.data.sendParams(d);">
    <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-Puhuo-editForm" id="LAY-app-Puhuo-editForm">
        <input type="hidden" name="id" value="{{d.params.data.id || '' }}" />
        <input type="hidden" name="jintui" value="{{d.params.data.jintui || '' }}" />
        <!--<div class="layui-form-item">
        <label for="id" class="layui-form-label  ">主键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="distributionId" class="layui-form-label  ">经销商id</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="distributionId"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.distributionId || '' }}" placeholder="请输入经销商id" lay-reqText="请输入经销商id并为数字"  />
        </div>
    </div>-->
        <div class="layui-form-item">
            <label for="areaCodeName" class="layui-form-label  ">区域名称</label>
            <div class="layui-input-block">
                <input name="areaCodeName" lay-verType="tips" readonly="readonly" class="layui-input" placeholder="请输入区域名称" lay-reqText="请输入区域名称" value="{{d.params.data.areaCodeName || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="distributionName" class="layui-form-label  ">经销商</label>
            <div class="layui-input-block">
                <input name="distributionName" lay-verType="tips" readonly="readonly" class="layui-input" placeholder="请输入经销商" lay-reqText="请输入经销商" value="{{d.params.data.distributionName || '' }}" />
            </div>
        </div>
        <!--<div class="layui-form-item">
        <label for="areaCode" class="layui-form-label  ">区域</label>
        <div class="layui-input-block">
            <input name="areaCode"   lay-verType="tips"   class="layui-input" placeholder="请输入区域" lay-reqText="请输入区域"  value="{{d.params.data.areaCode || '' }}" />
        </div>
    </div>-->
        <!--<div class="layui-form-item">
        <label for="CategoryId" class="layui-form-label  ">商品分类id</label>
        <div class="layui-input-block">
            <input type="number" min="0" max="999999" name="CategoryId" lay-verType="tips"   class="layui-input" value="{{d.params.data.CategoryId || '' }}" placeholder="请输入商品分类id" lay-reqText="请输入商品分类id并为数字" />
        </div>
    </div>-->
        <div class="layui-form-item">
            <label for="CategoryName" class="layui-form-label  ">商品分类</label>
            <div class="layui-input-block">
                <input name="CategoryName" lay-verType="tips" readonly="readonly" class="layui-input" placeholder="请输入商品分类" lay-reqText="请输入商品分类" value="{{d.params.data.categoryName || '' }}" />
            </div>
        </div>
        <!--<div class="layui-form-item">
        <label for="goodsId" class="layui-form-label  ">商品id</label>
        <div class="layui-input-block">
            <input type="number" min="0" max="999999" name="goodsId" lay-verType="tips"   class="layui-input" value="{{d.params.data.goodsId || '' }}" placeholder="请输入商品id" lay-reqText="请输入商品id并为数字" />
        </div>
    </div>-->
        <div class="layui-form-item">
            <label for="goodsName" class="layui-form-label  ">商品名称</label>
            <div class="layui-input-block">
                <input name="goodsName" lay-verType="tips" readonly="readonly" class="layui-input" placeholder="请输入商品名称" lay-reqText="请输入商品名称" value="{{d.params.data.goodsName || '' }}" />
            </div>
        </div>
        <!--<div class="layui-form-item">
        <label for="productsId" class="layui-form-label  ">货品id</label>
        <div class="layui-input-block">
            <input type="number" min="0" max="999999" name="productsId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.productsId || '' }}" placeholder="请输入货品id" lay-reqText="请输入货品id并为数字" />
        </div>
    </div>-->
        <div class="layui-form-item">
            <label for="productsName" class="layui-form-label  ">货品编号</label>
            <div class="layui-input-block">
                <input name="productsName" lay-verType="tips" readonly="readonly" class="layui-input" placeholder="请输入货品编号" lay-reqText="请输入货品编号" value="{{d.params.data.productsName || '' }}" />
            </div>
        </div>
        <!--<div class="layui-form-item">
        <label for="spesDesc" class="layui-form-label  ">货品规格</label>
        <div class="layui-input-block">
            <input name="spesDesc" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入货品规格" lay-reqText="请输入货品规格" value="{{d.params.data.spesDesc || '' }}" />
        </div>
    </div>-->
        <div class="layui-form-item">
            <label for="price" class="layui-form-label  ">单价</label>
            <div class="layui-input-block">
                <input name="price" id="price" lay-verType="tips" lay-verify="required" class="layui-input" readonly="readonly" placeholder="请输入货品价格" lay-reqText="请输入货品价格" value="{{d.params.data.price || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="nums" class="layui-form-label  ">数量</label>
            <div class="layui-input-block">
                <input type="number" min="0" max="999999" name="nums" lay-verType="tips" readonly="readonly" class="layui-input" value="{{d.params.data.nums || '' }}" placeholder="请输入数量" lay-reqText="请输入数量并为数字" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="amount" class="layui-form-label  ">金额</label>
            <div class="layui-input-block">
                <input name="amount" lay-verType="tips" class="layui-input" readonly="readonly" placeholder="请输入金额" lay-reqText="请输入金额" value="{{d.params.data.amount || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="shoukuannumsshoukuan" class="layui-form-label">收款数量</label>
            <div class="layui-input-block">
                <input type="number" min="0" max="999999" name="shoukuannumsshoukuan" id="shoukuannumsshoukuan" lay-verType="tips"  class="layui-input" value="{{d.params.data.shoukuannums || '0' }}" placeholder="请输入数量" lay-reqText="请输入数量并为数字" onchange="sumjine();" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="shoukuannums" class="layui-form-label  layui-form-required">回款数量</label>
            <div class="layui-input-block">
                <input type="number" min="0" max="999999" name="shoukuannums" id="shoukuannums" lay-verType="tips" lay-verify="required|number" class="layui-input" value="0" placeholder="请输入数量" lay-reqText="请输入数量并为数字" onchange="sumjine();" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="shoukuanamount" class="layui-form-label  layui-form-required">回款金额</label>
            <div class="layui-input-block">
                <input type="number" min="0" max="999999" name="shoukuanamount" id="shoukuanamount" lay-verType="tips" readonly="readonly" lay-verify="required|number" class="layui-input" value="0" placeholder="请输入数量" lay-reqText="请输入数量并为数字" />
            </div>
        </div>
        <div class="layui-form-item text-right core-hidden">
            <input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-Puhuo-editForm-submit" id="LAY-app-Puhuo-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-Puhuo-createTime',
                type: 'datetime',
                fullPanel: true
            });
            laydate.render({
                elem: '#editTime-Puhuo-upDataTime',
                type: 'datetime',
                fullPanel: true
            });
            form.verify({
            });
            //重载form
            form.render(null, 'LAY-app-Puhuo-editForm');
        })
    };
    function sumjine() {
        var price = parseFloat($('#price').val()) || 0; // 获取值并转换为浮点数,如果无法转换则默认为0
        var shoukuannums = parseFloat($('#shoukuannums').val()) || 0; // 获取值并转换为浮点数,如果无法转换则默认为0
        var result = price * shoukuannums; // 进行乘法运算
        $('#shoukuanamount').val(result); // 显示结果
    }
</script>
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/index.html
@@ -188,8 +188,10 @@
<script type="text/html" id="LAY-app-Puhuo-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="editshoukuan">回款</a>
    <a class="layui-btn layui-btn-xs" lay-event="edit">铺货</a>
    <a class="layui-btn layui-btn-xs" lay-event="edittui">退货</a>
    <a class="layui-btn layui-btn-xs" lay-event="editpandian">盘点</a>
    <!--<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#PuhuoTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>-->
    <div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="PuhuoTbDelDrop{{d.LAY_INDEX}}"
         style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
@@ -255,20 +257,21 @@
                            /*  { field: 'id', title: '主键ID', width: 60, sort: false},*/
                            { field: 'areaCodeName', title: '区域名称', sort: false, width: 165 },
                           /* { field: 'distributionId', title: '经销商id', sort: false,width: 105 },*/
                            { field: 'distributionName', title: '经销商', sort: false, width: 165 },
                            { field: 'distributionName', title: '经销商', sort: false, width: 125 },
                            { field: 'schoolName', title: '学校', sort: false, width: 125 },
                           /* { field: 'areaCode', title: '区域', sort: false,width: 105 },*/
                           
                          /*  { field: 'categoryId', title: '商品分类id', sort: false,width: 105 },*/
                            { field: 'categoryName', title: '商品类别', sort: false, width: 165 },
                            { field: 'categoryName', title: '商品类别', sort: false, width: 105 },
                           /* { field: 'goodsId', title: '商品id', sort: false,width: 105 },*/
                            { field: 'goodsName', title: '商品名称', sort: false, width: 165 },
                           /* { field: 'productsId', title: '货品id', sort: false,width: 105 },*/
                            { field: 'productsName', title: '货品编号', sort: false, width: 165 },
                            { field: 'productsName', title: '货品编号', sort: false, width: 215 },
                            /*   { field: 'spesDesc', title: '货品规格', sort: false,width: 105 },*/
                            { field: 'nums', title: '数量', sort: false, width: 165 },
                            { field: 'price', title: '单价', sort: false, width: 165 },
                            { field: 'nums', title: '数量', sort: false, width: 125 },
                            { field: 'price', title: '单价', sort: false, width: 125 },
                         
                            { field: 'amount', title: '金额', sort: false, width: 165 },
                            { field: 'amount', title: '金额', sort: false, width: 125 },
                            //{ field: 'createTime', title: '建立时间', width: 130, sort: false},
                            //{ field: 'upDataTime', title: '修改时间', width: 130, sort: false},
                            //{ field: 'createBy', title: '创建人', sort: false,width: 105 },
@@ -322,6 +325,10 @@
                            doEdit(obj)
                        } else if (obj.event === 'edittui') {
                            doEdittui(obj)
                        } else if (obj.event === 'editpandian') {
                            doEditpandian(obj)
                        } else if (obj.event === 'editshoukuan') {
                            doEditshoukuan(obj)
                        }
                       
                    });
@@ -462,6 +469,102 @@
                        }
                    });
                }
                //执行盘点操作
                function doEditpandian(obj) {
                    coreHelper.Post("Api/Puhuo/GetEdit", { id: obj.data.id, jintui: 3 }, function (e) {
                        if (e.code === 0) {
                            admin.popup({
                                shadeClose: false,
                                title: '盘点',
                                area: ['1200px', '90%'],
                                id: 'LAY-popup-Puhuo-edit',
                                success: function (layero, index) {
                                    view(this.id).render('baifenbingfa/Puhuo/edit', { data: e.data }).done(function () {
                                        //监听提交
                                        form.on('submit(LAY-app-Puhuo-editForm-submit)',
                                            function (data) {
                                                var field = data.field; //获取提交的字段
                                                field.isdelete = field.isdelete == 'on';
                                                if (debug) { console.log(field); } //开启调试返回数据
                                                //提交 Ajax 成功后,关闭当前弹层并重载表格
                                                coreHelper.Post("Api/Puhuo/DoEdit", field, function (e) {
                                                    console.log(e)
                                                    if (e.code === 0) {
                                                        layui.table.reloadData('LAY-app-Puhuo-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-Puhuo-editForm-submit").click();
                                }
                            });
                        } else {
                            layer.msg(e.msg);
                        }
                    });
                }
                //执行退货操作
                function doEditshoukuan(obj) {
                    coreHelper.Post("Api/Puhuo/GetEdit", { id: obj.data.id, jintui: 4 }, function (e) {
                        if (e.code === 0) {
                            admin.popup({
                                shadeClose: false,
                                title: '回款',
                                area: ['1200px', '90%'],
                                id: 'LAY-popup-Puhuo-edit',
                                success: function (layero, index) {
                                    view(this.id).render('baifenbingfa/Puhuo/editshoukuan', { data: e.data }).done(function () {
                                        //监听提交
                                        form.on('submit(LAY-app-Puhuo-editForm-submit)',
                                            function (data) {
                                                var field = data.field; //获取提交的字段
                                                field.isdelete = field.isdelete == 'on';
                                                if (debug) { console.log(field); } //开启调试返回数据
                                                //提交 Ajax 成功后,关闭当前弹层并重载表格
                                                coreHelper.Post("Api/Puhuo/DoEdit", field, function (e) {
                                                    console.log(e)
                                                    if (e.code === 0) {
                                                        layui.table.reloadData('LAY-app-Puhuo-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-Puhuo-editForm-submit").click();
                                }
                            });
                        } else {
                            layer.msg(e.msg);
                        }
                    });
                }
                //执行预览操作
                function doDetails(obj) {
                    coreHelper.Post("Api/Puhuo/GetDetails", { id: obj.data.id }, function (e) {
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuo/indexgroup.html
@@ -236,7 +236,7 @@
                    text: {none: '暂无相关数据'},
                    cols: [
                        [
                            { type: "checkbox", fixed: "left" },
                            { type: "checkbox"  },
                            { type: 'numbers', title: '序号', width: 60, sort: false },
                            /*  { field: 'id', title: '主键ID', width: 60, sort: false},*/
                           /* { field: 'areaCodeName', title: '区域名称', sort: false, width: 165 },*/
@@ -245,25 +245,38 @@
                           /* { field: 'areaCode', title: '区域', sort: false,width: 105 },*/
                           
                          /*  { field: 'categoryId', title: '商品分类id', sort: false,width: 105 },*/
                            { field: 'categoryName', title: '商品类别', sort: false, width: 185 },
                            { field: 'categoryName', title: '商品类别', sort: false, width: 125 },
                           /* { field: 'goodsId', title: '商品id', sort: false,width: 105 },*/
                            { field: 'goodsName', title: '商品名称', sort: false, width: 185 },
                           /* { field: 'productsId', title: '货品id', sort: false,width: 105 },*/
                            { field: 'productsName', title: '货品编号', sort: false, width: 185 },
                            { field: 'productsName', title: '货品编号', sort: false, width: 265 },
                            /*   { field: 'spesDesc', title: '货品规格', sort: false,width: 105 },*/
                            { field: 'nums', title: '数量', sort: false, width: 185 },
                            { field: 'price', title: '单价', sort: false, width: 185 },
                            { field: 'nums', title: '数量', sort: false, width: 165 },
                            { field: 'price', title: '单价', sort: false, width: 165 },
                         
                            { field: 'amount', title: '金额', sort: false, width: 185 },
                            { field: 'amount', title: '金额', sort: false, width: 165 },
                            { field: 'tiaozhengnums', title: '经销商数量', sort: false, width: 185 },
                            //{ 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: 230, align: 'center', title:'操作', fixed: 'right', toolbar: '#LAY-app-Puhuo-tableBox-bar' }
                            { width: 230, align: 'center', title:'操作' , toolbar: '#LAY-app-Puhuo-tableBox-bar' }
                        ]
                    ]
                    ], done: function (res, curr, count) {
                        console.log(res);
                        // 创建合计行的HTML
                        var totalRowHtml = '<tr class="layui-table-total" style="background-color: #f2f2f2; font-weight: bold;">\
    <td></td><td></td><td colspan="3">当页合计</td><td>&nbsp;&nbsp;&nbsp;'+ res.otherData.heji1 + '</td><td></td><td>&nbsp;&nbsp;&nbsp;' + res.otherData.heji2 + '</td><td>&nbsp;&nbsp;&nbsp;' + res.otherData.heji3 +'</td><td></td>\
  </tr>\
  <tr class="layui-table-total" style="background-color: #e9e9e9; font-weight: bold;">\
    <td></td><td></td><td colspan="3">总合计</td><td>&nbsp;&nbsp;&nbsp;'+ res.otherData.heji4 + '</td><td></td><td>&nbsp;&nbsp;&nbsp;' + res.otherData.heji5 + '</td><td>&nbsp;&nbsp;&nbsp;' + res.otherData.heji6 + '</td><td></td>\
  </tr>';
                        // 将合计行添加到表格底部
                        $('#LAY-app-Puhuo-tableBox').next().find('.layui-table-body tbody').append(totalRowHtml);
                    }
                });
                //监听排序事件
                table.on('sort(LAY-app-Puhuo-tableBox)', function(obj){
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuoshoukuan/create.html
New file
@@ -0,0 +1,204 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-PuhuoShoukuan-createForm" id="LAY-app-PuhuoShoukuan-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="puhuoId" class="layui-form-label  layui-form-required">铺货id</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="puhuoId"   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="distributionId" class="layui-form-label  layui-form-required">经销商id</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="distributionId"   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="distributionName" class="layui-form-label  layui-form-required">经销商</label>
        <div class="layui-input-block">
            <input name="distributionName"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入经销商" lay-reqText="请输入经销商"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="areaCode" class="layui-form-label  layui-form-required">区域</label>
        <div class="layui-input-block">
            <input name="areaCode"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入区域" lay-reqText="请输入区域"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="areaCodeName" class="layui-form-label  layui-form-required">区域名称</label>
        <div class="layui-input-block">
            <input name="areaCodeName"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入区域名称" lay-reqText="请输入区域名称"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="CategoryId" class="layui-form-label  layui-form-required">商品分类id</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="CategoryId"   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="CategoryName" class="layui-form-label  layui-form-required">商品分类</label>
        <div class="layui-input-block">
            <input name="CategoryName"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入商品分类" lay-reqText="请输入商品分类"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="goodsId" class="layui-form-label  layui-form-required">商品id</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="goodsId"   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="goodsName" class="layui-form-label  layui-form-required">商品名称</label>
        <div class="layui-input-block">
            <input name="goodsName"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入商品名称" lay-reqText="请输入商品名称"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="productsId" class="layui-form-label  layui-form-required">货品id</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="productsId"   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="productsName" class="layui-form-label  layui-form-required">货品编号</label>
        <div class="layui-input-block">
            <input name="productsName"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入货品编号" lay-reqText="请输入货品编号"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="spesDesc" class="layui-form-label  layui-form-required">货品规格</label>
        <div class="layui-input-block">
            <input name="spesDesc"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入货品规格" lay-reqText="请输入货品规格"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="price" class="layui-form-label  layui-form-required">货品价格</label>
        <div class="layui-input-block">
            <input name="price"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入货品价格" lay-reqText="请输入货品价格"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="nums" class="layui-form-label  layui-form-required">数量</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="nums"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入数量" lay-reqText="请输入数量并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="amount" class="layui-form-label  layui-form-required">金额</label>
        <div class="layui-input-block">
            <input name="amount"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入金额" lay-reqText="请输入金额"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="shoukuannums" class="layui-form-label  layui-form-required">收款数量</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="shoukuannums"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入收款数量" lay-reqText="请输入收款数量并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="shoukuanamount" class="layui-form-label  layui-form-required">收款金额</label>
        <div class="layui-input-block">
            <input name="shoukuanamount"   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-PuhuoShoukuan-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-PuhuoShoukuan-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-PuhuoShoukuan-createForm-submit" id="LAY-app-PuhuoShoukuan-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-PuhuoShoukuan-createTime',
                type: 'datetime',
                value: new Date(),
                fullPanel: true
            });
            laydate.render({
                elem: '#createTime-PuhuoShoukuan-upDataTime',
                type: 'datetime',
                value: new Date(),
                fullPanel: true
            });
            form.verify({
            });
            //重载form
            form.render(null, 'LAY-app-PuhuoShoukuan-createForm');
        })
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuoshoukuan/details.html
New file
@@ -0,0 +1,234 @@
<script type="text/html" template  lay-done="layui.data.done(d);">
    <table class="layui-table layui-form" lay-filter="LAY-app-PuhuoShoukuan-detailsForm" id="LAY-app-PuhuoShoukuan-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="puhuoId">铺货id</label>
                </td>
                <td>
                    {{ d.params.data.puhuoId || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="distributionId">经销商id</label>
                </td>
                <td>
                    {{ d.params.data.distributionId || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="distributionName">经销商</label>
                </td>
                <td>
                    {{ d.params.data.distributionName || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="areaCode">区域</label>
                </td>
                <td>
                    {{ d.params.data.areaCode || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="areaCodeName">区域名称</label>
                </td>
                <td>
                    {{ d.params.data.areaCodeName || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="CategoryId">商品分类id</label>
                </td>
                <td>
                    {{ d.params.data.CategoryId || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="CategoryName">商品分类</label>
                </td>
                <td>
                    {{ d.params.data.CategoryName || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="goodsId">商品id</label>
                </td>
                <td>
                    {{ d.params.data.goodsId || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="goodsName">商品名称</label>
                </td>
                <td>
                    {{ d.params.data.goodsName || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="productsId">货品id</label>
                </td>
                <td>
                    {{ d.params.data.productsId || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="productsName">货品编号</label>
                </td>
                <td>
                    {{ d.params.data.productsName || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="spesDesc">货品规格</label>
                </td>
                <td>
                    {{ d.params.data.spesDesc || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="price">货品价格</label>
                </td>
                <td>
                    {{ d.params.data.price || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="nums">数量</label>
                </td>
                <td>
                    {{ d.params.data.nums || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="amount">金额</label>
                </td>
                <td>
                    {{ d.params.data.amount || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="shoukuannums">收款数量</label>
                </td>
                <td>
                    {{ d.params.data.shoukuannums || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="shoukuanamount">收款金额</label>
                </td>
                <td>
                    {{ d.params.data.shoukuanamount || '' }}
                </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-PuhuoShoukuan-detailsForm');
        });
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuoshoukuan/edit.html
New file
@@ -0,0 +1,202 @@
<script type="text/html" template lay-done="layui.data.sendParams(d);">
    <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-PuhuoShoukuan-editForm" id="LAY-app-PuhuoShoukuan-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="puhuoId" class="layui-form-label  layui-form-required">铺货id</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="puhuoId"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.puhuoId || '' }}" placeholder="请输入铺货id" lay-reqText="请输入铺货id并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="distributionId" class="layui-form-label  layui-form-required">经销商id</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="distributionId"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.distributionId || '' }}" placeholder="请输入经销商id" lay-reqText="请输入经销商id并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="distributionName" class="layui-form-label  layui-form-required">经销商</label>
            <div class="layui-input-block">
                <input name="distributionName"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入经销商" lay-reqText="请输入经销商"  value="{{d.params.data.distributionName || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="areaCode" class="layui-form-label  layui-form-required">区域</label>
            <div class="layui-input-block">
                <input name="areaCode"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入区域" lay-reqText="请输入区域"  value="{{d.params.data.areaCode || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="areaCodeName" class="layui-form-label  layui-form-required">区域名称</label>
            <div class="layui-input-block">
                <input name="areaCodeName"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入区域名称" lay-reqText="请输入区域名称"  value="{{d.params.data.areaCodeName || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="CategoryId" class="layui-form-label  layui-form-required">商品分类id</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="CategoryId"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.CategoryId || '' }}" placeholder="请输入商品分类id" lay-reqText="请输入商品分类id并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="CategoryName" class="layui-form-label  layui-form-required">商品分类</label>
            <div class="layui-input-block">
                <input name="CategoryName"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入商品分类" lay-reqText="请输入商品分类"  value="{{d.params.data.CategoryName || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="goodsId" class="layui-form-label  layui-form-required">商品id</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="goodsId"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.goodsId || '' }}" placeholder="请输入商品id" lay-reqText="请输入商品id并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="goodsName" class="layui-form-label  layui-form-required">商品名称</label>
            <div class="layui-input-block">
                <input name="goodsName"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入商品名称" lay-reqText="请输入商品名称"  value="{{d.params.data.goodsName || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="productsId" class="layui-form-label  layui-form-required">货品id</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="productsId"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.productsId || '' }}" placeholder="请输入货品id" lay-reqText="请输入货品id并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="productsName" class="layui-form-label  layui-form-required">货品编号</label>
            <div class="layui-input-block">
                <input name="productsName"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入货品编号" lay-reqText="请输入货品编号"  value="{{d.params.data.productsName || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="spesDesc" class="layui-form-label  layui-form-required">货品规格</label>
            <div class="layui-input-block">
                <input name="spesDesc"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入货品规格" lay-reqText="请输入货品规格"  value="{{d.params.data.spesDesc || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="price" class="layui-form-label  layui-form-required">货品价格</label>
            <div class="layui-input-block">
                <input name="price"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入货品价格" lay-reqText="请输入货品价格"  value="{{d.params.data.price || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="nums" class="layui-form-label  layui-form-required">数量</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="nums"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.nums || '' }}" placeholder="请输入数量" lay-reqText="请输入数量并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="amount" class="layui-form-label  layui-form-required">金额</label>
            <div class="layui-input-block">
                <input name="amount"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入金额" lay-reqText="请输入金额"  value="{{d.params.data.amount || '' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="shoukuannums" class="layui-form-label  layui-form-required">收款数量</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="shoukuannums"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.shoukuannums || '' }}" placeholder="请输入收款数量" lay-reqText="请输入收款数量并为数字"  />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="shoukuanamount" class="layui-form-label  layui-form-required">收款金额</label>
            <div class="layui-input-block">
                <input name="shoukuanamount"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入收款金额" lay-reqText="请输入收款金额"  value="{{d.params.data.shoukuanamount || '' }}" />
            </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-PuhuoShoukuan-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-PuhuoShoukuan-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-PuhuoShoukuan-editForm-submit" id="LAY-app-PuhuoShoukuan-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-PuhuoShoukuan-createTime',
                type: 'datetime',
                fullPanel: true
            });
            laydate.render({
                elem: '#editTime-PuhuoShoukuan-upDataTime',
                type: 'datetime',
                fullPanel: true
            });
            form.verify({
            });
            //重载form
            form.render(null, 'LAY-app-PuhuoShoukuan-editForm');
        })
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/puhuoshoukuan/index.html
New file
@@ -0,0 +1,623 @@
<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/PuhuoShoukuan/GetIndex" lay-done="layui.data.done(d);">
</script>
<div class="table-body">
    <table  id="LAY-app-PuhuoShoukuan-tableBox" lay-filter="LAY-app-PuhuoShoukuan-tableBox"></table>
</div>
<script type="text/html" id="LAY-app-PuhuoShoukuan-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="distributionId">经销商id</label>
        <div class="layui-input-inline">
            <input type="text" name="distributionId"  placeholder="请输入经销商id" class="layui-input">
        </div>
    </div>-->
            <div class="layui-inline">
                <label class="layui-form-label" for="areaCode">省</label>
                <div class="layui-input-inline">
                    <!--<input type="text" name="areaCode" placeholder="请输入省" class="layui-input">-->
                    <select name="sheng" id="sheng" lay-filter="shengFilter">
                        <option value="0">请选择</option>
                        {{# layui.each(indexData, function(index, item){ }}
                        <option value="{{ item.id }}">{{ item.name }}</option>
                        {{# }); }}
                    </select>
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="shi">市</label>
                <div class="layui-input-inline">
                    <!--<input type="text" name="shi" placeholder="请输入市" class="layui-input">-->
                    <select name="shi" id="shi" lay-filter="cityFilter">
                    </select>
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="quxian">区县</label>
                <div class="layui-input-inline">
                    <!--<input type="text" name="quxian" placeholder="请输入区县" class="layui-input">-->
                    <select name="quxian" id="quxian" lay-filter="quxian">
                    </select>
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="distributionName">经销商</label>
                <div class="layui-input-inline">
                    <input type="text" name="distributionName" placeholder="请输入经销商" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="goodsName">商品名称</label>
                <div class="layui-input-inline">
                    <input type="text" name="goodsName" placeholder="请输入商品名称" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="productsName">货品编号</label>
                <div class="layui-input-inline">
                    <input type="text" name="productsName" placeholder="请输入货品编号" class="layui-input">
                </div>
            </div>
            <!--<div class="layui-inline">
        <label class="layui-form-label" for="areaCodeName">区域名称</label>
        <div class="layui-input-inline">
            <input type="text" name="areaCodeName" placeholder="请输入区域名称" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="CategoryId">商品分类id</label>
        <div class="layui-input-inline">
            <input type="text" name="CategoryId" placeholder="请输入商品分类id" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="CategoryName">商品分类</label>
        <div class="layui-input-inline">
            <input type="text" name="CategoryName" placeholder="请输入商品分类" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="goodsId">商品id</label>
        <div class="layui-input-inline">
            <input type="text" name="goodsId" placeholder="请输入商品id" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="goodsName">商品名称</label>
        <div class="layui-input-inline">
            <input type="text" name="goodsName" placeholder="请输入商品名称" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="productsId">货品id</label>
        <div class="layui-input-inline">
            <input type="text" name="productsId" placeholder="请输入货品id" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="productsName">货品编号</label>
        <div class="layui-input-inline">
            <input type="text" name="productsName" placeholder="请输入货品编号" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="spesDesc">货品规格</label>
        <div class="layui-input-inline">
            <input type="text" name="spesDesc" placeholder="请输入货品规格" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="price">货品价格</label>
        <div class="layui-input-inline">
            <input type="text" name="price" placeholder="请输入货品价格" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="nums">数量</label>
        <div class="layui-input-inline">
            <input type="text" name="nums" placeholder="请输入数量" class="layui-input">
        </div>
    </div>
    <div class="layui-inline">
        <label class="layui-form-label" for="amount">金额</label>
        <div class="layui-input-inline">
            <input type="text" name="amount" 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-Puhuo-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-Puhuo-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-PuhuoShoukuan-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
            </div>
        </div>
    </div>
</script>
<script type="text/html" id="LAY-app-PuhuoShoukuan-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-PuhuoShoukuan-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="#PuhuoShoukuanTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>-->
    <div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="PuhuoShoukuanTbDelDrop{{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-PuhuoShoukuan-search)',
                    function(data) {
                        var field = data.field;
                        searchwhere = field;
                        //执行重载
                        table.reloadData('LAY-app-PuhuoShoukuan-tableBox',{ where: field });
                    });
                //数据绑定
                table.render({
                    elem: '#LAY-app-PuhuoShoukuan-tableBox',
                    url: layui.setter.apiUrl + 'Api/PuhuoShoukuan/GetPageList',
                    method: 'POST',
                    toolbar: '#LAY-app-PuhuoShoukuan-toolbar',
                    pagebar: '#LAY-app-PuhuoShoukuan-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" },
                            { type: 'numbers', title: '序号', width: 60, sort: false },
                            /*  { field: 'id', title: '主键ID', width: 60, sort: false},*/
                            { field: 'areaCodeName', title: '区域名称', sort: false, width: 165 },
                            /* { field: 'distributionId', title: '经销商id', sort: false,width: 105 },*/
                            { field: 'distributionName', title: '经销商', sort: false, width: 125 },
                            { field: 'schoolName', title: '学校', sort: false, width: 165 },
                            /* { field: 'areaCode', title: '区域', sort: false,width: 105 },*/
                            /*  { field: 'categoryId', title: '商品分类id', sort: false,width: 105 },*/
                            { field: 'categoryName', title: '商品类别', sort: false, width: 165 },
                            /* { field: 'goodsId', title: '商品id', sort: false,width: 105 },*/
                            { field: 'goodsName', title: '商品名称', sort: false, width: 165 },
                            /* { field: 'productsId', title: '货品id', sort: false,width: 105 },*/
                            { field: 'productsName', title: '货品编号', sort: false, width: 215 },
                            /*   { field: 'spesDesc', title: '货品规格', sort: false,width: 105 },*/
                            { field: 'shoukuannums', title: '收款数量', sort: false, width: 165 },
                            { field: 'price', title: '单价', sort: false, width: 165 },
                            { field: 'shoukuanamount', title: '收款金额', sort: false, width: 165 },
                        ]
                    ], done: function (res, curr, count) {
                        console.log(res);
                        // 创建合计行的HTML
                        var totalRowHtml = '<tr class="layui-table-total" style="background-color: #f2f2f2; font-weight: bold;">\
    <td></td><td></td><td colspan="6">当页合计</td><td>&nbsp;&nbsp;&nbsp;'+ res.otherData.heji1 + '</td><td></td><td>&nbsp;&nbsp;&nbsp;' + res.otherData.heji2 + '</td>\
  </tr>\
  <tr class="layui-table-total" style="background-color: #e9e9e9; font-weight: bold;">\
    <td></td><td></td><td colspan="6">总合计</td><td>&nbsp;&nbsp;&nbsp;'+ res.otherData.heji4 + '</td><td></td><td>&nbsp;&nbsp;&nbsp;' + res.otherData.heji5 + '</td>\
  </tr>';
                        // 将合计行添加到表格底部
                        $('#LAY-app-PuhuoShoukuan-tableBox').next().find('.layui-table-body tbody').append(totalRowHtml);
                    }
                });
                //监听排序事件
                table.on('sort(LAY-app-PuhuoShoukuan-tableBox)', function(obj){
                    table.reloadData('LAY-app-PuhuoShoukuan-tableBox', {
                        initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
                        where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
                            orderField: obj.field, //排序字段
                            orderDirection: obj.type //排序方式
                        }
                    });
                });
                //监听行双击事件
                table.on('rowDouble(LAY-app-PuhuoShoukuan-tableBox)', function (obj) {
                    //查看详情
                    doDetails(obj);
                });
                //头工具栏事件
                table.on('pagebar(LAY-app-PuhuoShoukuan-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-PuhuoShoukuan-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/PuhuoShoukuan/GetCreate", null, function (e) {
                            if (e.code === 0) {
                                admin.popup({
                                    shadeClose: false,
                                    title: '创建数据',
                                    area: ['1200px', '90%'],
                                    id: 'LAY-popup-PuhuoShoukuan-create',
                                    success: function (layero, index) {
                                        view(this.id).render('base/PuhuoShoukuan/create', { data: e.data }).done(function () {
                                            //监听提交
                                            form.on('submit(LAY-app-PuhuoShoukuan-createForm-submit)',
                                                function(data) {
                                                    var field = data.field; //获取提交的字段
                                                    field.isdelete = field.isdelete == 'on';
                                                    if (debug) { console.log(field); } //开启调试返回数据
                                                    //提交 Ajax 成功后,关闭当前弹层并重载表格
                                                    coreHelper.Post("Api/PuhuoShoukuan/DoCreate", field, function (e) {
                                                            console.log(e)
                                                            if (e.code === 0) {
                                                                layui.table.reloadData('LAY-app-PuhuoShoukuan-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-PuhuoShoukuan-createForm-submit").click();
                                    }
                                });
                            } else {
                                layer.msg(e.msg);
                            }
                        });
                }
                //执行编辑操作
                function doEdit(obj){
                    coreHelper.Post("Api/PuhuoShoukuan/GetEdit", {id:obj.data.id}, function (e) {
                        if (e.code === 0) {
                            admin.popup({
                                shadeClose: false,
                                title: '编辑数据',
                                area: ['1200px', '90%'],
                                id: 'LAY-popup-PuhuoShoukuan-edit',
                                success: function (layero, index) {
                                    view(this.id).render('base/PuhuoShoukuan/edit', { data: e.data }).done(function () {
                                        //监听提交
                                        form.on('submit(LAY-app-PuhuoShoukuan-editForm-submit)',
                                            function(data) {
                                                var field = data.field; //获取提交的字段
                                                field.isdelete = field.isdelete == 'on';
                                                if (debug) { console.log(field); } //开启调试返回数据
                                                //提交 Ajax 成功后,关闭当前弹层并重载表格
                                                coreHelper.Post("Api/PuhuoShoukuan/DoEdit", field, function (e) {
                                                        console.log(e)
                                                        if (e.code === 0) {
                                                            layui.table.reloadData('LAY-app-PuhuoShoukuan-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-PuhuoShoukuan-editForm-submit").click();
                                }
                            });
                        } else {
                            layer.msg(e.msg);
                        }
                    });
                }
                //执行预览操作
                function doDetails(obj) {
                    coreHelper.Post("Api/PuhuoShoukuan/GetDetails", { id: obj.data.id }, function (e) {
                        if (e.code === 0) {
                            admin.popup({
                                shadeClose: false,
                                title: '查看详情',
                                area: ['1200px', '90%'],
                                id: 'LAY-popup-PuhuoShoukuan-details',
                                success: function (layero, index) {
                                    view(this.id).render('base/PuhuoShoukuan/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/PuhuoShoukuan/DoDelete", { id: obj.data.id }, function (e) {
                            if (debug) { console.log(e); } //开启调试返回数据
                            table.reloadData('LAY-app-PuhuoShoukuan-tableBox');
                            layer.msg(e.msg);
                        });
                }
                // 监听提交事件
                form.on('select(shengFilter)', function (data) {
                    var city = $("#sheng").val();
                    $.ajax({
                        type: "GET",
                        url: layui.setter.apiUrl + 'Api/CoreCmsPlanOrder/GetCityId?shengid=' + city,
                        dataType: "json",
                        global: false,
                        data: "",
                        success: function (data) {
                            console.log(data.data);
                            var quxian = $("#shi");
                            quxian.find('option').remove();
                            var aaa = '<option value="0">请选择</option>';
                            quxian.append(aaa);
                            if (data.data.length > 0) {
                                for (var i = 0; i < data.data.length; i++) {
                                    var o = '<option value="' + data.data[i].id + '" >' + data.data[i].name + '</option>';
                                    quxian.append(o);
                                }
                                // 使用form.render方法重新渲染select
                                form.render('select');
                            }
                        },
                        error: function () {
                            parent.layer.msg('失败', { icon: 5 });
                        }
                    });
                });
                // 监听提交事件
                form.on('select(cityFilter)', function (data) {
                    var city = $("#shi").val();
                    $.ajax({
                        type: "GET",
                        url: layui.setter.apiUrl + 'Api/CoreCmsPlanOrder/GetAreaId?cityid=' + city,
                        dataType: "json",
                        global: false,
                        data: "",
                        success: function (data) {
                            console.log(data.data);
                            var quxian = $("#quxian");
                            quxian.find('option').remove();
                            var aaa = '<option value="0">请选择</option>';
                            quxian.append(aaa);
                            if (data.data.length > 0) {
                                for (var i = 0; i < data.data.length; i++) {
                                    var o = '<option value="' + data.data[i].id + '" >' + data.data[i].name + '</option>';
                                    quxian.append(o);
                                }
                                // 使用form.render方法重新渲染select
                                form.render('select');
                            }
                        },
                        error: function () {
                            parent.layer.msg('失败', { icon: 5 });
                        }
                    });
                });
                //执行批量删除
                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/PuhuoShoukuan/DoBatchDelete", { id: delidsStr }, function (e) {
                                    if (debug) { console.log(e); } //开启调试返回数据
                                    table.reloadData('LAY-app-PuhuoShoukuan-tableBox');
                                    layer.msg(e.msg);
                                });
                        });
                }
                //执行查询条件导出excel
                function doQueryExportexcel(){
                    layer.confirm('确定根据当前的查询条件导出数据吗?',
                        function(index) {
                            var field = searchwhere;
                            coreHelper.PostForm("Api/PuhuoShoukuan/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/PuhuoShoukuan/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-PuhuoShoukuan-createTime',
                    type: 'datetime',
                    range: '到',
                });
                laydate.render({
                    elem: '#searchTime-PuhuoShoukuan-upDataTime',
                    type: 'datetime',
                    range: '到',
                });
                //监听 表格复选框操作
                layui.form.on('switch(switch_isdelete)', function (obj) {
                    coreHelper.Post("Api/PuhuoShoukuan/DoSetisdelete", { id: this.value, data: obj.elem.checked }, function (e) {
                        if (debug) { console.log(e); } //开启调试返回数据
                        //table.reloadData('LAY-app-PuhuoShoukuan-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>
CoreCms.Net.Web.Admin/wwwroot/views/content/stock/stocklog/index.html
@@ -112,6 +112,7 @@
                        [
                            { field: 'id', title: '序列', width: 40, sort: false },
                            { field: 'stockId', title: '关联单号', sort: false, width: 150 },
                            { field: 'memo', title: '备注', sort: false, width: 250 },
                            { field: 'goodsName', title: '商品名称', sort: false },
                            { field: 'spesDesc', title: '货品规格', sort: false },
                            //{ field: 'productId', title: '货品序列', sort: false, width: 105 },
CoreCms.Net.Web.Admin/wwwroot/views/content/stock/stocks/create.html
@@ -12,15 +12,16 @@
        <div class="layui-form-item">
            <label for="type" class="layui-form-label  layui-form-required">操作类型</label>
            <div class="layui-input-block">
                {{# layui.each(d.params.data.stockType, function(index, item){ }}
                <input type="radio" name="type" value="{{ item.value }}" title="{{ item.description }}" lay-verify="required">
                {{# }); }}
                <!--<select name="type" lay-verify="required" lay-reqText="请选择入库单类型">
                    <option value="">请选择出库入库类型</option>
                <!--{{# layui.each(d.params.data.stockType, function(index, item){ }}
            <input type="radio" name="type" value="{{ item.value }}" title="{{ item.description }}" lay-verify="required">
            {{# }); }}-->
                <select name="type" lay-verify="required" lay-reqText="请选择操作类型" lay-filter="cityFilter">
                    <option value="">请选择操作类型</option>
                    {{# layui.each(d.params.data.stockType, function(index, item){ }}
                    <option value="{{ item.value }}">{{ item.description }}</option>
                    {{# }); }}
                </select>-->
                    <option value="3">经销商铺货</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
@@ -31,6 +32,18 @@
        </div>
        <div class="layui-form-item" id="jingxiaoshang" style="display:none;">
            <label for="distributionId" class="layui-form-label  layui-form-required">经销商</label>
            <div class="layui-input-block">
                <select name="distributionId" lay-verify="required" lay-reqText="请选择经销商" lay-filter="cityFilter" lay-search>
                    {{# layui.each(d.params.data.distributions, function(index, item){ }}
                    <option value="{{ item.id }}">{{ item.name }}</option>
                    {{# }); }}
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label for="memo" class="layui-form-label  layui-form-required">选择货品</label>
            <div class="layui-input-block" style="padding: 0 0 10px 10px;" id="father">
@@ -38,7 +51,7 @@
                    <label class="layui-form-label layui-form-required">选择货品</label>
                    <div class="pro clearfix">
                        <div class="layui-input-inline layui-inline-13">
                            <select name="item.productId[0]" id="productId" lay-verify="required">
                            <select name="item.productId[0]" id="productId" lay-verify="required" lay-search>
                                <option value="">根据商品名称、货品编号搜索</option>
                                {{# layui.each(d.params.data.products, function(index, item){ }}
                                <option value="{{ item.id }}">商品名称:{{ item.name }}{{ item.spesDesc ? '-'+item.spesDesc :''}},货品编号:{{ item.sn }},当前库存:{{ item.stock }}</option>
@@ -54,8 +67,8 @@
                                    <i class="layui-icon">&#xe654;</i>
                                </button>
                                <!--<button type="button" class="layui-btn layui-btn-primary layui-btn-sm del">
                                    <i class="layui-icon">&#xe640;</i>
                                </button>-->
                                <i class="layui-icon">&#xe640;</i>
                            </button>-->
                            </div>
                        </div>
                    </div>
@@ -79,7 +92,7 @@
        <label class="layui-form-label layui-form-required">选择货品</label>
        <div class="pro clearfix">
            <div class="layui-input-inline layui-inline-13">
                <select name="item.productId[{{ d.id }}]" id="productId" lay-verify="required">
                <select name="item.productId[{{ d.id }}]" id="productId" lay-verify="required" lay-search>
                    <option value="">根据商品名称、货品编号搜索</option>
                    {{# layui.each(paramsData, function(index, item){ }}
                    <option value="{{ item.id }}">商品名称:{{ item.name }}{{ item.spesDesc ? '-'+item.spesDesc :''}},货品编号:{{ item.sn }},当前库存:{{ item.stock }}</option>
@@ -156,6 +169,20 @@
                    form.render();
                }
                // 监听提交事件
                form.on('select(cityFilter)', function (data) {
                    //console.log(data.value); // 被选中的值
                    //console.log(data.elem); // 被选中的元素
                    //console.log(data.field); // 相关表单的字段名
                    // 在这里可以执行其他操作
                    if (data.value == '3') {
                        $('#jingxiaoshang').show();
                    } else {
                        $('#jingxiaoshang').hide();
                    }
                });
                form.verify({
                    verifyid: [/^.{0,20}$/, '序列最大只允许输入20位字符'],
@@ -165,4 +192,5 @@
                form.render(null, 'LAY-app-CoreCmsStock-createForm');
            })
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/content/stock/stocks/index.html
@@ -209,6 +209,7 @@
                                                model.id = field.id;
                                                model.type = field.type;
                                                model.memo = field.memo;
                                                model.distributionId = field.distributionId;
                                                field.model = model;
                                                if (debug) { console.log(field); } //开启调试返回数据
CoreCms.Net.Web.Admin/wwwroot/views/layout.html
@@ -82,7 +82,7 @@
            ,url = (item.jump && typeof item.jump === 'string') ? item.jump : item.name;
        }}
          <li data-name="{{ item.name || '' }}" data-jump="{{ item.jump || '' }}" class="layui-nav-item {{ classSelected() }}">
            <a href="javascript:;" {{ hasChildren ? '' : 'lay-href="'+ url+'"' }} lay-tips="{{ item.title }}" lay-direction="2">
            <a style="padding-top:0px;padding-bottom:0px;" href="javascript:;" {{ hasChildren ? '' : 'lay-href="'+ url+'"' }} lay-tips="{{ item.title }}" lay-direction="2">
              <i class="layui-icon {{ item.icon }}"></i>
              <cite>{{ item.title }}</cite>
            </a>
@@ -104,7 +104,7 @@
              }}
                <dd  data-name="{{ item2.name || '' }}"  data-jump="{{ item2.jump || '' }}" 
                {{ classSelected2() ? ('class='+ classSelected2()) : '' }}>
                  <a href="javascript:;" {{ hasChildren2 ? '' : 'lay-href='+ url2+' ' }}>{{ item2.title }}</a>
                  <a style="padding-top:0px;padding-bottom:0px;"  href="javascript:;" {{ hasChildren2 ? '' : 'lay-href='+ url2+' ' }}>{{ item2.title }}</a>
                  {{# if(hasChildren2){ }}
                    <dl class="layui-nav-child">
                      {{# layui.each(item2.list, function(index3, item3){ 
@@ -116,7 +116,7 @@
                      }}
                        <dd data-name="{{ item3.name || '' }}"  data-jump="{{ item3.jump || '' }}" 
                        {{ match ? 'class="layui-this"' : '' }}>
                          <a href="javascript:;" lay-href="{{ url3 }}" {{ item3.iframe ? 'lay-iframe="true"' : '' }}>{{ item3.title }}</a>
                          <a style="padding-top:0px;padding-bottom:0px;"  href="javascript:;" lay-href="{{ url3 }}" {{ item3.iframe ? 'lay-iframe="true"' : '' }}>{{ item3.title }}</a>
                        </dd>
                      {{# }); }}
                    </dl>