移动系统liao
2024-05-08 f7f968bf90a2124d1787919b116bb143290622ce
增加货品管理页面,增加ip地址获取APi  修改发票列表宽度
3个文件已修改
9个文件已添加
3277 ■■■■■ 已修改文件
CoreCms.Net.IRepository/baifenbinfa/ICoreCmsProductsRepository.cs 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IServices/baifenbingfa/ICoreCmsProductsServices.cs 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Model/Entities/Good/CoreCmsProductsPartial.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Repository/baifenbingfa/CoreCmsProductsRepository.cs 453 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Services/baifenbingfa/CoreCmsProductsServices.cs 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/Controllers/baifenbingfa/CoreCmsProductsController.cs 1226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/create.html 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/details.html 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/edit.html 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html 555 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/financial/invoice/index.html 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.Web.Admin/wwwroot/views/good/goods/details.html 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CoreCms.Net.IRepository/baifenbinfa/ICoreCmsProductsRepository.cs
New file
@@ -0,0 +1,125 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/5/7 16:00:53
 *        Description: 暂无
 ***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.IRepository
{
    /// <summary>
    /// 货品表 工厂接口
    /// </summary>
    public interface ICoreCmsbaifenProductsRepository : IBaseRepository<CoreCmsProducts>
    {
        #region 重写增删改查操作===========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> InsertAsync(CoreCmsProducts entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(CoreCmsProducts entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(List<CoreCmsProducts> 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<CoreCmsProducts>> 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<CoreCmsProducts>> QueryPageAsync(
            Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
        /// <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<CoreCmsProducts>> QueryDetailPageAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
        /// <summary>
        ///     获取关联商品的货品列表数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="orderByExpression"></param>
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        public  Task<List<CoreCmsProducts>> QueryDetaiListAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, bool blUseNoLock = false);
    }
}
CoreCms.Net.IServices/baifenbingfa/ICoreCmsProductsServices.cs
New file
@@ -0,0 +1,120 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/5/7 16:00:53
 *        Description: 暂无
 ***********************************************************************/
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
using CoreCms.Net.Model.Entities;
using CoreCms.Net.Model.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.IServices
{
    /// <summary>
    /// 货品表 服务工厂接口
    /// </summary>
    public interface ICoreCmsbaifenProductsServices : IBaseServices<CoreCmsProducts>
    {
        #region 重写增删改查操作===========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> InsertAsync(CoreCmsProducts entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(CoreCmsProducts entity);
        /// <summary>
        /// 重写异步更新方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        Task<AdminUiCallBack> UpdateAsync(List<CoreCmsProducts> 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<CoreCmsProducts>> 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<CoreCmsProducts>> QueryPageAsync(
            Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
        #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<CoreCmsProducts>> QueryDetailPageAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false);
        /// <summary>
        ///     获取关联商品的货品列表数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="orderByExpression"></param>
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        public Task<List<CoreCmsProducts>> QueryDetaiListAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, bool blUseNoLock = false);
    }
}
CoreCms.Net.Model/Entities/Good/CoreCmsProductsPartial.cs
@@ -21,6 +21,8 @@
    /// </summary>
    public partial class CoreCmsProducts
    {
        /// <summary>
        ///     商品编码
        /// </summary>
@@ -141,5 +143,12 @@
        [Display(Name = "三级佣金")]
        [SugarColumn(IsIgnore = true)]
        public decimal levelThree { get; set; } = 0;
        /// <summary>
        ///    商品分类
        /// </summary>
        [Display(Name = "商品分类")]
        [SugarColumn(IsIgnore = true)]
        public string Category { get; set; }
    }
}
CoreCms.Net.Repository/baifenbingfa/CoreCmsProductsRepository.cs
New file
@@ -0,0 +1,453 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/5/7 16:00:53
 *        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 System.Linq;
namespace CoreCms.Net.Repository
{
    /// <summary>
    /// 货品表 接口实现
    /// </summary>
    public class CoreCmsbaifenProductsRepository : BaseRepository<CoreCmsProducts>, ICoreCmsbaifenProductsRepository
    {
        private readonly IUnitOfWork _unitOfWork;
        public CoreCmsbaifenProductsRepository(IUnitOfWork unitOfWork) : base(unitOfWork)
        {
            _unitOfWork = unitOfWork;
        }
       #region 实现重写增删改查操作==========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> InsertAsync(CoreCmsProducts 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(CoreCmsProducts entity)
        {
            var jm = new AdminUiCallBack();
            var oldModel = await DbClient.Queryable<CoreCmsProducts>().In(entity.id).SingleAsync();
            if (oldModel == null)
            {
            jm.msg = "不存在此信息";
            return jm;
            }
            //事物处理过程开始
            oldModel.id = entity.id;
            oldModel.goodsId = entity.goodsId;
            oldModel.barcode = entity.barcode;
            oldModel.sn = entity.sn;
            oldModel.price = entity.price;
            oldModel.costprice = entity.costprice;
            oldModel.mktprice = entity.mktprice;
            oldModel.marketable = entity.marketable;
            oldModel.pointsDeduction = entity.pointsDeduction;
            oldModel.points = entity.points;
            oldModel.weight = entity.weight;
            oldModel.stock = entity.stock;
            oldModel.freezeStock = entity.freezeStock;
            oldModel.spesDesc = entity.spesDesc;
            oldModel.isDefalut = entity.isDefalut;
            oldModel.images = entity.images;
            oldModel.isDel = entity.isDel;
            oldModel.distributionPrice = entity.distributionPrice;
            oldModel.cutMoney = entity.cutMoney;
            oldModel.distributionCutMoney = entity.distributionCutMoney;
            //事物处理过程结束
            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<CoreCmsProducts> 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<CoreCmsProducts>(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<CoreCmsProducts>().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<CoreCmsProducts>> GetCaChe()
        {
           var list = await DbClient.Queryable<CoreCmsProducts>().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<CoreCmsProducts>> QueryPageAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            RefAsync<int> totalCount = 0;
            List<CoreCmsProducts> page;
            if (blUseNoLock)
            {
                page = await DbClient.Queryable<CoreCmsProducts>()
                .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                .WhereIF(predicate != null, predicate).Select(p => new CoreCmsProducts
                {
                      id = p.id,
                goodsId = p.goodsId,
                barcode = p.barcode,
                sn = p.sn,
                price = p.price,
                costprice = p.costprice,
                mktprice = p.mktprice,
                marketable = p.marketable,
                pointsDeduction = p.pointsDeduction,
                points = p.points,
                weight = p.weight,
                stock = p.stock,
                freezeStock = p.freezeStock,
                spesDesc = p.spesDesc,
                isDefalut = p.isDefalut,
                images = p.images,
                isDel = p.isDel,
                distributionPrice = p.distributionPrice,
                cutMoney = p.cutMoney,
                distributionCutMoney = p.distributionCutMoney,
                }).With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            else
            {
                page = await DbClient.Queryable<CoreCmsProducts>()
                .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                .WhereIF(predicate != null, predicate).Select(p => new CoreCmsProducts
                {
                      id = p.id,
                goodsId = p.goodsId,
                barcode = p.barcode,
                sn = p.sn,
                price = p.price,
                costprice = p.costprice,
                mktprice = p.mktprice,
                marketable = p.marketable,
                pointsDeduction = p.pointsDeduction,
                points = p.points,
                weight = p.weight,
                stock = p.stock,
                freezeStock = p.freezeStock,
                spesDesc = p.spesDesc,
                isDefalut = p.isDefalut,
                images = p.images,
                isDel = p.isDel,
                distributionPrice = p.distributionPrice,
                cutMoney = p.cutMoney,
                distributionCutMoney = p.distributionCutMoney,
                }).ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            var list = new PageList<CoreCmsProducts>(page, pageIndex, pageSize, totalCount);
            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<CoreCmsProducts>> QueryDetailPageAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            RefAsync<int> totalCount = 0;
            List<CoreCmsProducts> page;
            if (blUseNoLock)
            {
                page = await DbClient.Queryable<CoreCmsGoods, CoreCmsProducts, CoreCmsGoodsCategory>((good, product, Category) => new JoinQueryInfos(
                         JoinType.Inner, good.id == product.goodsId
                , JoinType.Inner, good.goodsCategoryId == Category.id               )
                )
                    .Select((good, product, Category) => new CoreCmsProducts
                    {
                        id = product.id,
                        goodsId = product.goodsId,
                        barcode = product.barcode,
                        sn = product.sn,
                        price = product.price,
                        costprice = product.costprice,
                        mktprice = product.mktprice,
                        marketable = product.marketable,
                        weight = product.weight,
                        stock = product.stock,
                        freezeStock = product.freezeStock,
                        pointsDeduction = product.pointsDeduction,
                        points = product.points,
                        spesDesc = product.spesDesc,
                        isDefalut = product.isDefalut,
                        images = product.images,
                        isDel = good.isDel,
                        name = good.name,
                        bn = good.bn,
                        isMarketable = good.isMarketable,
                        unit = good.unit,
                            distributionPrice = product.distributionPrice,
                        cutMoney = product.cutMoney,
                        distributionCutMoney = product.distributionCutMoney,
                        Category =  (SqlFunc.Subqueryable<CoreCmsGoodsCategory> ().Where(x=>x.id==Category.parentId).Select(x=>x.name)+"-"+  Category.name)?? Category.name,
                    }).With(SqlWith.NoLock)
                    .MergeTable()
                    .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                    .WhereIF(predicate != null, predicate)
                    .ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            else
            {
                page = await DbClient.Queryable<CoreCmsGoods, CoreCmsProducts, CoreCmsGoodsCategory>((good, product, Category) => new JoinQueryInfos(
                         JoinType.Inner, good.id == product.goodsId
                , JoinType.Inner, good.goodsCategoryId == Category.id
               )
                )
                    .Select((good, product, Category) => new CoreCmsProducts
                    {
                        id = product.id,
                        goodsId = product.goodsId,
                        barcode = product.barcode,
                        sn = product.sn,
                        price = product.price,
                        costprice = product.costprice,
                        mktprice = product.mktprice,
                        marketable = product.marketable,
                        weight = product.weight,
                        stock = product.stock,
                        freezeStock = product.freezeStock,
                        pointsDeduction = product.pointsDeduction,
                        points = product.points,
                        spesDesc = product.spesDesc,
                        isDefalut = product.isDefalut,
                        images = product.images,
                        isDel = good.isDel,
                        name = good.name,
                        bn = good.bn,
                        isMarketable = good.isMarketable,
                        unit = good.unit
                        ,
                        distributionPrice = product.distributionPrice,
                        cutMoney = product.cutMoney,
                        distributionCutMoney = product.distributionCutMoney,
                        Category = (SqlFunc.Subqueryable<CoreCmsGoodsCategory>().Where(x => x.id == Category.parentId).Select(x => x.name) + "-" + Category.name) ?? Category.name,
                    })
                    .MergeTable()
                    .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                    .WhereIF(predicate != null, predicate)
                    .ToPageListAsync(pageIndex, pageSize, totalCount);
            }
            var list = new PageList<CoreCmsProducts>(page, pageIndex, pageSize, totalCount);
            return list;
        }
        #endregion
        #region 查询所有货品包括商品信息列表
        /// <summary>
        ///     获取关联商品的货品列表数据
        /// </summary>
        /// <param name="predicate">判断集合</param>
        /// <param name="orderByType">排序方式</param>
        /// <param name="orderByExpression"></param>
        /// <param name="blUseNoLock">是否使用WITH(NOLOCK)</param>
        /// <returns></returns>
        public async Task<List<CoreCmsProducts>> QueryDetaiListAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType,  bool blUseNoLock = false)
        {
            RefAsync<int> totalCount = 0;
            List<CoreCmsProducts> page;
            if (blUseNoLock)
            {
                page = await DbClient.Queryable<CoreCmsGoods, CoreCmsProducts,CoreCmsGoodsCategory>((good, product, Category) => new JoinQueryInfos(
                         JoinType.Inner, good.id == product.goodsId
                , JoinType.Inner, good.goodsCategoryId == Category.id
               )
                )
                    .Select((good, product, Category) => new CoreCmsProducts
                    {
                        id = product.id,
                        goodsId = product.goodsId,
                        barcode = product.barcode,
                        sn = product.sn,
                        price = product.price,
                        costprice = product.costprice,
                        mktprice = product.mktprice,
                        marketable = product.marketable,
                        weight = product.weight,
                        stock = product.stock,
                        freezeStock = product.freezeStock,
                        pointsDeduction = product.pointsDeduction,
                        points = product.points,
                        spesDesc = product.spesDesc,
                        isDefalut = product.isDefalut,
                        images = product.images,
                        isDel = good.isDel,
                        name = good.name,
                        bn = good.bn,
                        isMarketable = good.isMarketable,
                        unit = good.unit,
                        distributionPrice = product.distributionPrice,
                        cutMoney = product.cutMoney,
                        distributionCutMoney = product.distributionCutMoney,
                        Category = (SqlFunc.Subqueryable<CoreCmsGoodsCategory>().Where(x => x.id == Category.parentId).Select(x => x.name) + "-" + Category.name) ?? Category.name,
                    }).With(SqlWith.NoLock)
                    .MergeTable()
                    .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                    .WhereIF(predicate != null, predicate)
                    .ToListAsync();
            }
            else
            {
                page = await DbClient.Queryable<CoreCmsGoods, CoreCmsProducts, CoreCmsGoodsCategory>((good, product, Category) => new JoinQueryInfos(
                         JoinType.Inner, good.id == product.goodsId
                , JoinType.Inner, good.goodsCategoryId == Category.id
               )
                )
                    .Select((good, product, Category) => new CoreCmsProducts
                    {
                        id = product.id,
                        goodsId = product.goodsId,
                        barcode = product.barcode,
                        sn = product.sn,
                        price = product.price,
                        costprice = product.costprice,
                        mktprice = product.mktprice,
                        marketable = product.marketable,
                        weight = product.weight,
                        stock = product.stock,
                        freezeStock = product.freezeStock,
                        pointsDeduction = product.pointsDeduction,
                        points = product.points,
                        spesDesc = product.spesDesc,
                        isDefalut = product.isDefalut,
                        images = product.images,
                        isDel = good.isDel,
                        name = good.name,
                        bn = good.bn,
                        isMarketable = good.isMarketable,
                        unit = good.unit
                        ,
                        distributionPrice = product.distributionPrice,
                        cutMoney = product.cutMoney,
                        distributionCutMoney = product.distributionCutMoney,
                        Category = (SqlFunc.Subqueryable<CoreCmsGoodsCategory>().Where(x => x.id == Category.parentId).Select(x => x.name) + "-" + Category.name) ?? Category.name,
                    })
                    .MergeTable()
                    .OrderByIF(orderByExpression != null, orderByExpression, orderByType)
                    .WhereIF(predicate != null, predicate)
                    .ToListAsync();
            }
            return page;
        }
        #endregion
    }
}
CoreCms.Net.Services/baifenbingfa/CoreCmsProductsServices.cs
New file
@@ -0,0 +1,159 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/5/7 16:00:53
 *        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.ViewModels.Basics;
using CoreCms.Net.Model.ViewModels.UI;
using SqlSugar;
namespace CoreCms.Net.Services
{
    /// <summary>
    /// 货品表 接口实现
    /// </summary>
    public class CoreCmsbaifenProductsServices : BaseServices<CoreCmsProducts>, ICoreCmsbaifenProductsServices
    {
        private readonly ICoreCmsbaifenProductsRepository _dal;
        private readonly IUnitOfWork _unitOfWork;
        public CoreCmsbaifenProductsServices(IUnitOfWork unitOfWork, ICoreCmsbaifenProductsRepository dal)
        {
            this._dal = dal;
            base.BaseDal = dal;
            _unitOfWork = unitOfWork;
        }
        #region 实现重写增删改查操作==========================================================
        /// <summary>
        /// 重写异步插入方法
        /// </summary>
        /// <param name="entity">实体数据</param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> InsertAsync(CoreCmsProducts entity)
        {
            return await _dal.InsertAsync(entity);
        }
        /// <summary>
        /// 重写异步更新方法方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> UpdateAsync(CoreCmsProducts entity)
        {
            return await _dal.UpdateAsync(entity);
        }
        /// <summary>
        /// 重写异步更新方法方法
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsProducts> 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<CoreCmsProducts>> 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<CoreCmsProducts>> QueryPageAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
        }
        #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<CoreCmsProducts>> QueryDetailPageAsync(Expression<Func<CoreCmsProducts, bool>> predicate,
            Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1,
            int pageSize = 20, bool blUseNoLock = false)
        {
            return await _dal.QueryDetailPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock);
        }
        #endregion
        #region 查询所有满足条件的列表
        public async Task<List<CoreCmsProducts>> QueryDetaiListAsync(Expression<Func<CoreCmsProducts, bool>> predicate, Expression<Func<CoreCmsProducts, object>> orderByExpression, OrderByType orderByType, bool blUseNoLock = false)
        {
            return await _dal.QueryDetaiListAsync(predicate, orderByExpression, orderByType, blUseNoLock);
        }
        #endregion
    }
}
CoreCms.Net.Web.Admin/Controllers/baifenbingfa/CoreCmsProductsController.cs
New file
@@ -0,0 +1,1226 @@
/***********************************************************************
 *            Project: baifenBinfa
 *        ProjectName: 百分兵法管理系统
 *                Web: http://chuanyin.com
 *             Author:
 *              Email:
 *         CreateTime: 2024/5/7 16:00:53
 *        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 Microsoft.IdentityModel.Tokens;
namespace CoreCms.Net.Web.Admin.Controllers
{
    /// <summary>
    /// 货品表
    ///</summary>
    [Description("货品表")]
    [Route("api/[controller]/[action]")]
    [ApiController]
    [RequiredErrorForAdmin]
    [Authorize(Permissions.Name)]
    public class CoreCmsbaifenProductsController : ControllerBase
    {
        private readonly IWebHostEnvironment _webHostEnvironment;
        private readonly ICoreCmsbaifenProductsServices _CoreCmsProductsServices;
        /// <summary>
        /// 构造函数
        ///</summary>
        public CoreCmsbaifenProductsController(IWebHostEnvironment webHostEnvironment
            ,ICoreCmsbaifenProductsServices CoreCmsProductsServices
            )
        {
            _webHostEnvironment = webHostEnvironment;
            _CoreCmsProductsServices = CoreCmsProductsServices;
        }
        #region 获取列表============================================================
        // POST: Api/CoreCmsProducts/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<CoreCmsProducts>();
            //获取排序字段
            var orderField = Request.Form["orderField"].FirstOrDefault();
            Expression<Func<CoreCmsProducts, object>> orderEx = orderField switch
            {
                "id" => p => p.id,"goodsId" => p => p.goodsId,"barcode" => p => p.barcode,"sn" => p => p.sn,"price" => p => p.price,"costprice" => p => p.costprice,"mktprice" => p => p.mktprice,"marketable" => p => p.marketable,"pointsDeduction" => p => p.pointsDeduction,"points" => p => p.points,"weight" => p => p.weight,"stock" => p => p.stock,"freezeStock" => p => p.freezeStock,"spesDesc" => p => p.spesDesc,"isDefalut" => p => p.isDefalut,"images" => p => p.images,"isDel" => p => p.isDel,"distributionPrice" => p => p.distributionPrice,"cutMoney" => p => p.cutMoney,"distributionCutMoney" => p => p.distributionCutMoney,
                _ => p => p.id
            };
            //设置排序方式
            var orderDirection = Request.Form["orderDirection"].FirstOrDefault();
            var orderBy = orderDirection switch
            {
                "asc" => OrderByType.Asc,
                "desc" => OrderByType.Desc,
                _ => OrderByType.Desc
            };
            //查询筛选
            //货品序列 int
            var name = Request.Form["name"].FirstOrDefault();
            if (!string.IsNullOrEmpty(name))
            {
                where = where.And(p => p.name.Contains(name));
            }
            //货品序列 int
            var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
            if (id > 0)
            {
                where = where.And(p => p.id == id);
            }
            //商品序列 int
            var goodsId = Request.Form["goodsId"].FirstOrDefault().ObjectToInt(0);
            if (goodsId > 0)
            {
                where = where.And(p => p.goodsId == goodsId);
            }
            //商品条码 nvarchar
            var barcode = Request.Form["barcode"].FirstOrDefault();
            if (!string.IsNullOrEmpty(barcode))
            {
                where = where.And(p => p.barcode.Contains(barcode));
            }
            //货品编码 nvarchar
            var sn = Request.Form["sn"].FirstOrDefault();
            if (!string.IsNullOrEmpty(sn))
            {
                where = where.And(p => p.sn.Contains(sn));
            }
            //货品价格 decimal
            var price = Request.Form["price"].FirstOrDefault().ObjectToDecimal(0);
            if (price > 0)
            {
                where = where.And(p => p.price == price);
            }
            //商品分类 decimal
            var Category = Request.Form["category"].FirstOrDefault();
            if (!string.IsNullOrEmpty(Category))
            {
                where = where.And(p => p.Category.Contains(Category));
            }
            //货品成本价 decimal
            var costprice = Request.Form["costprice"].FirstOrDefault().ObjectToDecimal(0);
            if (costprice > 0)
            {
                where = where.And(p => p.costprice == costprice);
            }
            //货品市场价 decimal
            var mktprice = Request.Form["mktprice"].FirstOrDefault().ObjectToDecimal(0);
            if (mktprice > 0)
            {
                where = where.And(p => p.mktprice == mktprice);
            }
            //是否上架 bit
            var marketable = Request.Form["marketable"].FirstOrDefault();
            if (!string.IsNullOrEmpty(marketable) && marketable.ToLowerInvariant() == "true")
            {
                where = where.And(p => p.marketable == true);
            }
            else if (!string.IsNullOrEmpty(marketable) && marketable.ToLowerInvariant() == "false")
            {
                where = where.And(p => p.marketable == false);
            }
            //积分可抵扣金额 decimal
            var pointsDeduction = Request.Form["pointsDeduction"].FirstOrDefault().ObjectToDecimal(0);
            if (pointsDeduction > 0)
            {
                where = where.And(p => p.pointsDeduction == pointsDeduction);
            }
            //赠送积分 int
            var points = Request.Form["points"].FirstOrDefault().ObjectToInt(0);
            if (points > 0)
            {
                where = where.And(p => p.points == points);
            }
            //重量(克) decimal
            var weight = Request.Form["weight"].FirstOrDefault().ObjectToDecimal(0);
            if (weight > 0)
            {
                where = where.And(p => p.weight == weight);
            }
            //库存 int
            var stock = Request.Form["stock"].FirstOrDefault().ObjectToInt(0);
            if (stock > 0)
            {
                where = where.And(p => p.stock == stock);
            }
            //冻结库存 int
            var freezeStock = Request.Form["freezeStock"].FirstOrDefault().ObjectToInt(0);
            if (freezeStock > 0)
            {
                where = where.And(p => p.freezeStock == freezeStock);
            }
            //规格值 nvarchar
            var spesDesc = Request.Form["spesDesc"].FirstOrDefault();
            if (!string.IsNullOrEmpty(spesDesc))
            {
                where = where.And(p => p.spesDesc.Contains(spesDesc));
            }
            //是否默认货品 bit
            var isDefalut = Request.Form["isDefalut"].FirstOrDefault();
            if (!string.IsNullOrEmpty(isDefalut) && isDefalut.ToLowerInvariant() == "true")
            {
                where = where.And(p => p.isDefalut == true);
            }
            else if (!string.IsNullOrEmpty(isDefalut) && isDefalut.ToLowerInvariant() == "false")
            {
                where = where.And(p => p.isDefalut == false);
            }
            //规格图片 nvarchar
            var images = Request.Form["images"].FirstOrDefault();
            if (!string.IsNullOrEmpty(images))
            {
                where = where.And(p => p.images.Contains(images));
            }
            //是否删除 bit
            var isDel = Request.Form["isDel"].FirstOrDefault();
            if (!string.IsNullOrEmpty(isDel) && isDel.ToLowerInvariant() == "true")
            {
                where = where.And(p => p.isDel == true);
            }
            else if (!string.IsNullOrEmpty(isDel) && isDel.ToLowerInvariant() == "false")
            {
                where = where.And(p => p.isDel == false);
            }
            // decimal
            var distributionPrice = Request.Form["distributionPrice"].FirstOrDefault().ObjectToDecimal(0);
            if (distributionPrice > 0)
            {
                where = where.And(p => p.distributionPrice == distributionPrice);
            }
            // decimal
            var cutMoney = Request.Form["cutMoney"].FirstOrDefault().ObjectToDecimal(0);
            if (cutMoney > 0)
            {
                where = where.And(p => p.cutMoney == cutMoney);
            }
            // decimal
            var distributionCutMoney = Request.Form["distributionCutMoney"].FirstOrDefault().ObjectToDecimal(0);
            if (distributionCutMoney > 0)
            {
                where = where.And(p => p.distributionCutMoney == distributionCutMoney);
            }
            //获取数据
            var list = await _CoreCmsProductsServices.QueryDetailPageAsync(where, orderEx, orderBy, pageCurrent, pageSize, true);
            //返回数据
            jm.data = list;
            jm.code = 0;
            jm.count = list.TotalCount;
            jm.msg = "数据调用成功!";
            return jm;
        }
        #endregion
        #region 首页数据============================================================
        // POST: Api/CoreCmsProducts/GetIndex
        /// <summary>
        /// 首页数据
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("首页数据")]
        public AdminUiCallBack GetIndex()
        {
            //返回数据
            var jm = new AdminUiCallBack { code = 0 };
            return jm;
        }
        #endregion
        #region 创建数据============================================================
        // POST: Api/CoreCmsProducts/GetCreate
        /// <summary>
        /// 创建数据
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("创建数据")]
        public AdminUiCallBack GetCreate()
        {
            //返回数据
            var jm = new AdminUiCallBack { code = 0 };
            return jm;
        }
        #endregion
        #region 创建提交============================================================
        // POST: Api/CoreCmsProducts/DoCreate
        /// <summary>
        /// 创建提交
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("创建提交")]
        public async Task<AdminUiCallBack> DoCreate([FromBody]CoreCmsProducts entity)
        {
            var jm = await _CoreCmsProductsServices.InsertAsync(entity);
            return jm;
        }
        #endregion
        #region 编辑数据============================================================
        // POST: Api/CoreCmsProducts/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 _CoreCmsProductsServices.QueryByIdAsync(entity.id, false);
            if (model == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            jm.code = 0;
            jm.data = model;
            return jm;
        }
        #endregion
        #region 编辑提交============================================================
        // POST: Api/CoreCmsProducts/Edit
        /// <summary>
        /// 编辑提交
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("编辑提交")]
        public async Task<AdminUiCallBack> DoEdit([FromBody]CoreCmsProducts entity)
        {
            var jm = await _CoreCmsProductsServices.UpdateAsync(entity);
            return jm;
        }
        #endregion
        #region 删除数据============================================================
        // POST: Api/CoreCmsProducts/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 _CoreCmsProductsServices.ExistsAsync(p => p.id == entity.id, true);
            if (!model)
            {
                jm.msg = GlobalConstVars.DataisNo;
                return jm;
            }
            jm = await _CoreCmsProductsServices.DeleteByIdAsync(entity.id);
            return jm;
        }
        #endregion
        #region 批量删除============================================================
        // POST: Api/CoreCmsProducts/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 _CoreCmsProductsServices.DeleteByIdsAsync(entity.id);
            return jm;
        }
        #endregion
        #region 预览数据============================================================
        // POST: Api/CoreCmsProducts/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 _CoreCmsProductsServices.QueryByIdAsync(entity.id, false);
            if (model == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            jm.code = 0;
            jm.data = model;
            return jm;
        }
        #endregion
        #region 选择导出============================================================
        // POST: Api/CoreCmsProducts/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数据  p.name!=null  保证商品存在,否则不查询
            var listModel = await _CoreCmsProductsServices.QueryDetaiListAsync(p => entity.id.Contains(p.id), p => p.goodsId, OrderByType.Asc, true);
            //给sheet1添加第一行的头部标题
            var headerRow = mySheet.CreateRow(0);
            var headerStyle = ExcelHelper.GetHeaderStyle(book);
            var cellNum = 0;
            var cell0 = headerRow.CreateCell(cellNum);
            cell0.SetCellValue("货品序列");
            cell0.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell1 = headerRow.CreateCell(cellNum);
            cell1.SetCellValue("商品分类");
            cell1.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            //var cell2 = headerRow.CreateCell(cellNum);
            //cell2.SetCellValue("商品条码");
            //cell2.CellStyle = headerStyle;
            //mySheet.SetColumnWidth(cellNum, 10 * 256);
            //cellNum++;
            var cell2 = headerRow.CreateCell(cellNum);
            cell2.SetCellValue("所属商品名称");
            cell2.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 cell3 = headerRow.CreateCell(cellNum);
            cell3.SetCellValue("货品编码");
            cell3.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell4 = headerRow.CreateCell(cellNum);
            cell4.SetCellValue("货品价格");
            cell4.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell5 = headerRow.CreateCell(cellNum);
            cell5.SetCellValue("货品成本价");
            cell5.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell6 = headerRow.CreateCell(cellNum);
            cell6.SetCellValue("指导零售价");
            cell6.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            //var cell7 = headerRow.CreateCell(cellNum);
            //cell7.SetCellValue("是否上架");
            //cell7.CellStyle = headerStyle;
            //mySheet.SetColumnWidth(cellNum, 10 * 256);
            //cellNum++;
            //var cell8 = headerRow.CreateCell(cellNum);
            //cell8.SetCellValue("积分可抵扣金额");
            //cell8.CellStyle = headerStyle;
            //mySheet.SetColumnWidth(cellNum, 10 * 256);
            //cellNum++;
            //var cell9 = headerRow.CreateCell(cellNum);
            //cell9.SetCellValue("赠送积分");
            //cell9.CellStyle = headerStyle;
            //mySheet.SetColumnWidth(cellNum, 10 * 256);
            //cellNum++;
            //var 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 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 cell10 = headerRow.CreateCell(cellNum);
            cell10.SetCellValue("重量(克)");
            cell10.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].goodsId.ToString());
                //    rowTemp1.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                var rowTemp2 = rowTemp.CreateCell(cellNumTemp);
                rowTemp2.SetCellValue(listModel[i].Category?.ToString());
                rowTemp2.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp1 = rowTemp.CreateCell(cellNumTemp);
                rowTemp1.SetCellValue(listModel[i].name?.ToString());
                rowTemp1.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp13 = rowTemp.CreateCell(cellNumTemp);
                rowTemp13.SetCellValue(listModel[i].spesDesc.ToString());
                rowTemp13.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp3 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp3.SetCellValue(listModel[i].sn.ToString());
                        rowTemp3.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp4 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp4.SetCellValue(listModel[i].price.ToString());
                        rowTemp4.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp5 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp5.SetCellValue(listModel[i].costprice.ToString());
                        rowTemp5.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp6 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp6.SetCellValue(listModel[i].mktprice.ToString());
                        rowTemp6.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    //var rowTemp7 = rowTemp.CreateCell(cellNumTemp);
                    //    rowTemp7.SetCellValue(listModel[i].marketable.ToString());
                    //    rowTemp7.CellStyle = commonCellStyle;
                    //    cellNumTemp++;
                    //var rowTemp8 = rowTemp.CreateCell(cellNumTemp);
                    //    rowTemp8.SetCellValue(listModel[i].pointsDeduction.ToString());
                    //    rowTemp8.CellStyle = commonCellStyle;
                    //    cellNumTemp++;
                    //var rowTemp9 = rowTemp.CreateCell(cellNumTemp);
                    //    rowTemp9.SetCellValue(listModel[i].points.ToString());
                    //    rowTemp9.CellStyle = commonCellStyle;
                    //    cellNumTemp++;
                    //var rowTemp11 = rowTemp.CreateCell(cellNumTemp);
                    //    rowTemp11.SetCellValue(listModel[i].stock.ToString());
                    //    rowTemp11.CellStyle = commonCellStyle;
                    //    cellNumTemp++;
                    //var rowTemp12 = rowTemp.CreateCell(cellNumTemp);
                    //    rowTemp12.SetCellValue(listModel[i].freezeStock.ToString());
                    //    rowTemp12.CellStyle = commonCellStyle;
                    //    cellNumTemp++;
                    //var rowTemp14 = rowTemp.CreateCell(cellNumTemp);
                    //    rowTemp14.SetCellValue(listModel[i].isDefalut.ToString());
                    //    rowTemp14.CellStyle = commonCellStyle;
                    //    cellNumTemp++;
                    //var rowTemp15 = rowTemp.CreateCell(cellNumTemp);
                    //    rowTemp15.SetCellValue(listModel[i].images.ToString());
                    //    rowTemp15.CellStyle = commonCellStyle;
                    //    cellNumTemp++;
                    //var rowTemp16 = rowTemp.CreateCell(cellNumTemp);
                    //    rowTemp16.SetCellValue(listModel[i].isDel.ToString());
                    //    rowTemp16.CellStyle = commonCellStyle;
                    //    cellNumTemp++;
                    var rowTemp17 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp17.SetCellValue(listModel[i].distributionPrice.ToString());
                        rowTemp17.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp18 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp18.SetCellValue(listModel[i].cutMoney.ToString());
                        rowTemp18.CellStyle = commonCellStyle;
                        cellNumTemp++;
                    var rowTemp19 = rowTemp.CreateCell(cellNumTemp);
                        rowTemp19.SetCellValue(listModel[i].distributionCutMoney.ToString());
                        rowTemp19.CellStyle = commonCellStyle;
                        cellNumTemp++;
                var rowTemp10 = rowTemp.CreateCell(cellNumTemp);
                rowTemp10.SetCellValue(listModel[i].weight.ToString());
                rowTemp10.CellStyle = commonCellStyle;
                cellNumTemp++;
            }
            // 导出excel
            string webRootPath = _webHostEnvironment.WebRootPath;
            string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
            string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-货品列表导出(选择结果).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/CoreCmsProducts/QueryExportExcel/10
        /// <summary>
        /// 查询导出
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [Description("查询导出")]
        public async Task<AdminUiCallBack> QueryExportExcel()
        {
            var jm = new AdminUiCallBack();
            var where = PredicateBuilder.True<CoreCmsProducts>();
            //查询筛选
            var name = Request.Form["name"].FirstOrDefault();
            if (!string.IsNullOrEmpty(name))
            {
                where = where.And(p => p.name.Contains(name));
            }
            else
            { where = where.And(p => (p.name != null || p.name != ""));
            }
            //货品序列 int
            var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0);
            if (id > 0)
            {
                where = where.And(p => p.id == id);
            }
            //商品序列 int
            var goodsId = Request.Form["goodsId"].FirstOrDefault().ObjectToInt(0);
            if (goodsId > 0)
            {
                where = where.And(p => p.goodsId == goodsId);
            }
            var Category = Request.Form["category"].FirstOrDefault();
            if (!string.IsNullOrEmpty(Category))
            {
                where = where.And(p => p.Category.Contains(Category));
            }
            //商品条码 nvarchar
            var barcode = Request.Form["barcode"].FirstOrDefault();
            if (!string.IsNullOrEmpty(barcode))
            {
                where = where.And(p => p.barcode.Contains(barcode));
            }
            //货品编码 nvarchar
            var sn = Request.Form["sn"].FirstOrDefault();
            if (!string.IsNullOrEmpty(sn))
            {
                where = where.And(p => p.sn.Contains(sn));
            }
            //货品价格 decimal
            var price = Request.Form["price"].FirstOrDefault().ObjectToDecimal(0);
            if (price > 0)
            {
                where = where.And(p => p.price == price);
            }
            //货品成本价 decimal
            var costprice = Request.Form["costprice"].FirstOrDefault().ObjectToDecimal(0);
            if (costprice > 0)
            {
                where = where.And(p => p.costprice == costprice);
            }
            //货品市场价 decimal
            var mktprice = Request.Form["mktprice"].FirstOrDefault().ObjectToDecimal(0);
            if (mktprice > 0)
            {
                where = where.And(p => p.mktprice == mktprice);
            }
            //是否上架 bit
            var marketable = Request.Form["marketable"].FirstOrDefault();
            if (!string.IsNullOrEmpty(marketable) && marketable.ToLowerInvariant() == "true")
            {
                where = where.And(p => p.marketable == true);
            }
            else if (!string.IsNullOrEmpty(marketable) && marketable.ToLowerInvariant() == "false")
            {
                where = where.And(p => p.marketable == false);
            }
            //积分可抵扣金额 decimal
            var pointsDeduction = Request.Form["pointsDeduction"].FirstOrDefault().ObjectToDecimal(0);
            if (pointsDeduction > 0)
            {
                where = where.And(p => p.pointsDeduction == pointsDeduction);
            }
            //赠送积分 int
            var points = Request.Form["points"].FirstOrDefault().ObjectToInt(0);
            if (points > 0)
            {
                where = where.And(p => p.points == points);
            }
            //重量(克) decimal
            var weight = Request.Form["weight"].FirstOrDefault().ObjectToDecimal(0);
            if (weight > 0)
            {
                where = where.And(p => p.weight == weight);
            }
            //库存 int
            var stock = Request.Form["stock"].FirstOrDefault().ObjectToInt(0);
            if (stock > 0)
            {
                where = where.And(p => p.stock == stock);
            }
            //冻结库存 int
            var freezeStock = Request.Form["freezeStock"].FirstOrDefault().ObjectToInt(0);
            if (freezeStock > 0)
            {
                where = where.And(p => p.freezeStock == freezeStock);
            }
            //规格值 nvarchar
            var spesDesc = Request.Form["spesDesc"].FirstOrDefault();
            if (!string.IsNullOrEmpty(spesDesc))
            {
                where = where.And(p => p.spesDesc.Contains(spesDesc));
            }
            //是否默认货品 bit
            var isDefalut = Request.Form["isDefalut"].FirstOrDefault();
            if (!string.IsNullOrEmpty(isDefalut) && isDefalut.ToLowerInvariant() == "true")
            {
                where = where.And(p => p.isDefalut == true);
            }
            else if (!string.IsNullOrEmpty(isDefalut) && isDefalut.ToLowerInvariant() == "false")
            {
                where = where.And(p => p.isDefalut == false);
            }
            //规格图片 nvarchar
            var images = Request.Form["images"].FirstOrDefault();
            if (!string.IsNullOrEmpty(images))
            {
                where = where.And(p => p.images.Contains(images));
            }
            //是否删除 bit
            var isDel = Request.Form["isDel"].FirstOrDefault();
            if (!string.IsNullOrEmpty(isDel) && isDel.ToLowerInvariant() == "true")
            {
                where = where.And(p => p.isDel == true);
            }
            else if (!string.IsNullOrEmpty(isDel) && isDel.ToLowerInvariant() == "false")
            {
                where = where.And(p => p.isDel == false);
            }
            // decimal
            var distributionPrice = Request.Form["distributionPrice"].FirstOrDefault().ObjectToDecimal(0);
            if (distributionPrice > 0)
            {
                where = where.And(p => p.distributionPrice == distributionPrice);
            }
            // decimal
            var cutMoney = Request.Form["cutMoney"].FirstOrDefault().ObjectToDecimal(0);
            if (cutMoney > 0)
            {
                where = where.And(p => p.cutMoney == cutMoney);
            }
            // decimal
            var distributionCutMoney = Request.Form["distributionCutMoney"].FirstOrDefault().ObjectToDecimal(0);
            if (distributionCutMoney > 0)
            {
                where = where.And(p => p.distributionCutMoney == distributionCutMoney);
            }
            where = where.And(p => p.isDel==false);
            //获取数据
            //创建Excel文件的对象
            var book = new HSSFWorkbook();
            //添加一个sheet
            var mySheet = book.CreateSheet("Sheet1");
            //获取list数据
            var listModel = await _CoreCmsProductsServices.QueryDetaiListAsync(where, p => p.goodsId, OrderByType.Asc, true);
            //给sheet1添加第一行的头部标题
                var headerRow = mySheet.CreateRow(0);
            var headerStyle = ExcelHelper.GetHeaderStyle(book);
            var cellNum = 0;
            var cell0 = headerRow.CreateCell(cellNum);
            cell0.SetCellValue("货品序列");
            cell0.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell2 = headerRow.CreateCell(cellNum);
            cell2.SetCellValue("商品分类");
            cell2.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell1 = headerRow.CreateCell(cellNum);
            cell1.SetCellValue("所属商品名称");
            cell1.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            //var cell2 = headerRow.CreateCell(cellNum);
            //cell2.SetCellValue("商品条码");
            //cell2.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 cell3 = headerRow.CreateCell(cellNum);
            cell3.SetCellValue("货品编码");
            cell3.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell4 = headerRow.CreateCell(cellNum);
            cell4.SetCellValue("货品价格");
            cell4.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell5 = headerRow.CreateCell(cellNum);
            cell5.SetCellValue("货品成本价");
            cell5.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            var cell6 = headerRow.CreateCell(cellNum);
            cell6.SetCellValue("指导零售价");
            cell6.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            //var cell7 = headerRow.CreateCell(cellNum);
            //cell7.SetCellValue("是否上架");
            //cell7.CellStyle = headerStyle;
            //mySheet.SetColumnWidth(cellNum, 10 * 256);
            //cellNum++;
            //var cell8 = headerRow.CreateCell(cellNum);
            //cell8.SetCellValue("积分可抵扣金额");
            //cell8.CellStyle = headerStyle;
            //mySheet.SetColumnWidth(cellNum, 10 * 256);
            //cellNum++;
            //var cell9 = headerRow.CreateCell(cellNum);
            //cell9.SetCellValue("赠送积分");
            //cell9.CellStyle = headerStyle;
            //mySheet.SetColumnWidth(cellNum, 10 * 256);
            //cellNum++;
            //var 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 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 cell10 = headerRow.CreateCell(cellNum);
            cell10.SetCellValue("重量(克)");
            cell10.CellStyle = headerStyle;
            mySheet.SetColumnWidth(cellNum, 10 * 256);
            cellNum++;
            headerRow.Height = 30 * 20;
            headerRow.Height = 30 * 20;
            var commonCellStyle = ExcelHelper.GetCommonStyle(book);
            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 rowTemp2 = rowTemp.CreateCell(cellNumTemp);
                rowTemp2.SetCellValue(listModel[i].Category?.ToString());
                rowTemp2.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp1 = rowTemp.CreateCell(cellNumTemp);
                rowTemp1.SetCellValue(listModel[i].name?.ToString());
                rowTemp1.CellStyle = commonCellStyle;
                cellNumTemp++;
                //var rowTemp2 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp2.SetCellValue(listModel[i].barcode.ToString());
                //    rowTemp2.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                var rowTemp13 = rowTemp.CreateCell(cellNumTemp);
                rowTemp13.SetCellValue(listModel[i].spesDesc.ToString());
                rowTemp13.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp3 = rowTemp.CreateCell(cellNumTemp);
                rowTemp3.SetCellValue(listModel[i].sn.ToString());
                rowTemp3.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp4 = rowTemp.CreateCell(cellNumTemp);
                rowTemp4.SetCellValue(listModel[i].price.ToString());
                rowTemp4.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp5 = rowTemp.CreateCell(cellNumTemp);
                rowTemp5.SetCellValue(listModel[i].costprice.ToString());
                rowTemp5.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp6 = rowTemp.CreateCell(cellNumTemp);
                rowTemp6.SetCellValue(listModel[i].mktprice.ToString());
                rowTemp6.CellStyle = commonCellStyle;
                cellNumTemp++;
                //var rowTemp7 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp7.SetCellValue(listModel[i].marketable.ToString());
                //    rowTemp7.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                //var rowTemp8 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp8.SetCellValue(listModel[i].pointsDeduction.ToString());
                //    rowTemp8.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                //var rowTemp9 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp9.SetCellValue(listModel[i].points.ToString());
                //    rowTemp9.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                //var rowTemp11 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp11.SetCellValue(listModel[i].stock.ToString());
                //    rowTemp11.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                //var rowTemp12 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp12.SetCellValue(listModel[i].freezeStock.ToString());
                //    rowTemp12.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                //var rowTemp14 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp14.SetCellValue(listModel[i].isDefalut.ToString());
                //    rowTemp14.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                //var rowTemp15 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp15.SetCellValue(listModel[i].images.ToString());
                //    rowTemp15.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                //var rowTemp16 = rowTemp.CreateCell(cellNumTemp);
                //    rowTemp16.SetCellValue(listModel[i].isDel.ToString());
                //    rowTemp16.CellStyle = commonCellStyle;
                //    cellNumTemp++;
                var rowTemp17 = rowTemp.CreateCell(cellNumTemp);
                rowTemp17.SetCellValue(listModel[i].distributionPrice.ToString());
                rowTemp17.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp18 = rowTemp.CreateCell(cellNumTemp);
                rowTemp18.SetCellValue(listModel[i].cutMoney.ToString());
                rowTemp18.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp19 = rowTemp.CreateCell(cellNumTemp);
                rowTemp19.SetCellValue(listModel[i].distributionCutMoney.ToString());
                rowTemp19.CellStyle = commonCellStyle;
                cellNumTemp++;
                var rowTemp10 = rowTemp.CreateCell(cellNumTemp);
                rowTemp10.SetCellValue(listModel[i].weight.ToString());
                rowTemp10.CellStyle = commonCellStyle;
                cellNumTemp++;
            }
            // 写入到excel
            string webRootPath = _webHostEnvironment.WebRootPath;
            string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/";
            string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsProducts导出(查询结果).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/CoreCmsProducts/DoSetmarketable/10
        /// <summary>
        /// 设置是否上架
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("设置是否上架")]
        public async Task<AdminUiCallBack> DoSetmarketable([FromBody]FMUpdateBoolDataByIntId entity)
        {
            var jm = new AdminUiCallBack();
            var oldModel = await _CoreCmsProductsServices.QueryByIdAsync(entity.id, false);
            if (oldModel == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            oldModel.marketable = (bool)entity.data;
            var bl = await _CoreCmsProductsServices.UpdateAsync(p => new CoreCmsProducts() { marketable = oldModel.marketable }, p => p.id == oldModel.id);
            jm.code = bl ? 0 : 1;
            jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
            return jm;
        }
        #endregion
        #region 设置是否默认货品============================================================
        // POST: Api/CoreCmsProducts/DoSetisDefalut/10
        /// <summary>
        /// 设置是否默认货品
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("设置是否默认货品")]
        public async Task<AdminUiCallBack> DoSetisDefalut([FromBody]FMUpdateBoolDataByIntId entity)
        {
            var jm = new AdminUiCallBack();
            var oldModel = await _CoreCmsProductsServices.QueryByIdAsync(entity.id, false);
            if (oldModel == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            oldModel.isDefalut = (bool)entity.data;
            var bl = await _CoreCmsProductsServices.UpdateAsync(p => new CoreCmsProducts() { isDefalut = oldModel.isDefalut }, p => p.id == oldModel.id);
            jm.code = bl ? 0 : 1;
            jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure;
            return jm;
        }
        #endregion
        #region 设置是否删除============================================================
        // POST: Api/CoreCmsProducts/DoSetisDel/10
        /// <summary>
        /// 设置是否删除
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        [HttpPost]
        [Description("设置是否删除")]
        public async Task<AdminUiCallBack> DoSetisDel([FromBody]FMUpdateBoolDataByIntId entity)
        {
            var jm = new AdminUiCallBack();
            var oldModel = await _CoreCmsProductsServices.QueryByIdAsync(entity.id, false);
            if (oldModel == null)
            {
                jm.msg = "不存在此信息";
                return jm;
            }
            oldModel.isDel = (bool)entity.data;
            var bl = await _CoreCmsProductsServices.UpdateAsync(p => new CoreCmsProducts() { isDel = oldModel.isDel }, 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/corecmsproducts/create.html
New file
@@ -0,0 +1,199 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsbaifenProducts-createForm" id="LAY-app-CoreCmsbaifenProducts-createForm">
    <div class="layui-form-item">
        <label for="id" class="layui-form-label  layui-form-required">货品序列</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="请输入货品序列" lay-reqText="请输入货品序列并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="goodsId" class="layui-form-label  layui-form-required">商品序列</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="请输入商品序列" lay-reqText="请输入商品序列并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="barcode" class="layui-form-label  layui-form-required">商品条码</label>
        <div class="layui-input-block">
        <input name="barcode"   lay-verType="tips" lay-verify="required|verifybarcode" class="layui-input"  lay-reqText="请输入商品条码" placeholder="请输入商品条码"/>
        </div>
    </div>
    <div class="layui-form-item">
        <label for="sn" class="layui-form-label  layui-form-required">货品编码</label>
        <div class="layui-input-block">
        <input name="sn"   lay-verType="tips" lay-verify="required|verifysn" class="layui-input"  lay-reqText="请输入货品编码" placeholder="请输入货品编码"/>
        </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="costprice" class="layui-form-label  layui-form-required">货品成本价</label>
        <div class="layui-input-block">
            <input name="costprice"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入货品成本价" lay-reqText="请输入货品成本价"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="mktprice" class="layui-form-label  layui-form-required">货品市场价</label>
        <div class="layui-input-block">
            <input name="mktprice"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入货品市场价" lay-reqText="请输入货品市场价"  />
        </div>
    </div>
    <div class="layui-form-item" pane>
        <label for="marketable" class="layui-form-label  layui-form-required">是否上架</label>
        <div class="layui-input-block">
            <input type="checkbox" lay-filter="switch" name="marketable"   lay-skin="switch" lay-text="开启|关闭">
        </div>
    </div>
    <div class="layui-form-item">
        <label for="pointsDeduction" class="layui-form-label  layui-form-required">积分可抵扣金额</label>
        <div class="layui-input-block">
            <input name="pointsDeduction"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入积分可抵扣金额" lay-reqText="请输入积分可抵扣金额"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="points" class="layui-form-label  layui-form-required">赠送积分</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="points"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入赠送积分" lay-reqText="请输入赠送积分并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="weight" class="layui-form-label  layui-form-required">重量(克)</label>
        <div class="layui-input-block">
            <input name="weight"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入重量(克)" lay-reqText="请输入重量(克)"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="stock" class="layui-form-label  layui-form-required">库存</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="stock"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入库存" lay-reqText="请输入库存并为数字"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="freezeStock" class="layui-form-label  layui-form-required">冻结库存</label>
        <div class="layui-input-block">
            <input  type="number" min="0" max="999999" name="freezeStock"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" 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"  lay-reqText="请输入规格值" placeholder="请输入规格值" />
        </div>
    </div>
    <div class="layui-form-item" pane>
        <label for="isDefalut" class="layui-form-label  layui-form-required">是否默认货品</label>
        <div class="layui-input-block">
            <input type="checkbox" lay-filter="switch" name="isDefalut"   lay-skin="switch" lay-text="开启|关闭">
        </div>
    </div>
    <div class="layui-form-item">
        <label for="images" class="layui-form-label  layui-form-required">规格图片</label>
        <div class="layui-input-inline">
            <input name="images" id="imagesInput" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请上传规格图片" lay-reqText="请上传规格图片"  />
        </div>
        <div class="layui-input-inline">
            <img class="coreshop-upload-img" id="viewImgBoximages"  src="{{ layui.setter.noImagePicUrl }}">
            <button type="button" class="layui-btn" id="upBtnimages" lay-active="doCropperImg">上传图片</button>
        </div>
    </div>
    <div class="layui-form-item" pane>
        <label for="isDel" class="layui-form-label  layui-form-required">是否删除</label>
        <div class="layui-input-block">
            <input type="checkbox" lay-filter="switch" name="isDel"   lay-skin="switch" lay-text="开启|关闭">
        </div>
    </div>
    <div class="layui-form-item">
        <label for="distributionPrice" class="layui-form-label  layui-form-required"></label>
        <div class="layui-input-block">
            <input name="distributionPrice"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入" lay-reqText="请输入"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="cutMoney" class="layui-form-label  layui-form-required"></label>
        <div class="layui-input-block">
            <input name="cutMoney"   lay-verType="tips" lay-verify="required" class="layui-input"  placeholder="请输入" lay-reqText="请输入"  />
        </div>
    </div>
    <div class="layui-form-item">
        <label for="distributionCutMoney" class="layui-form-label  layui-form-required"></label>
        <div class="layui-input-block">
            <input name="distributionCutMoney"   lay-verType="tips" lay-verify="required" class="layui-input"  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-CoreCmsbaifenProducts-createForm-submit" id="LAY-app-CoreCmsbaifenProducts-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;
            //规格图片图片裁剪上传
            $('#upBtnimages').click(function () {
                cropperImg.cropImg({
                    aspectRatio: 1 / 1,
                    imgSrc: $('#viewImgBoximages').attr('src'),
                    onCrop: function (data) {
                        var loadIndex = layer.load(2);
                        coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
                            if (0 === res.code) {
                                $('#viewImgBoximages').attr('src', res.data.fileUrl);
                                $("#imagesInput").val(res.data.fileUrl);
                                layer.msg(res.msg);
                                layer.close(loadIndex);
                            } else {
                                layer.close(loadIndex);
                                layer.msg(res.msg, { icon: 2, anim: 6 });
                            }
                        });
                    }
                });
            });
            form.verify({
                verifybarcode: [/^.{0,128}$/,'商品条码最大只允许输入128位字符'],
                verifysn: [/^.{0,30}$/,'货品编码最大只允许输入30位字符'],
            });
            //重载form
            form.render(null, 'LAY-app-CoreCmsbaifenProducts-createForm');
        })
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/details.html
New file
@@ -0,0 +1,207 @@
<script type="text/html" template  lay-done="layui.data.done(d);">
    <table class="layui-table layui-form" lay-filter="LAY-app-CoreCmsbaifenProducts-detailsForm" id="LAY-app-CoreCmsbaifenProducts-detailsForm">
        <colgroup>
            <col width="100">
            <col>
        </colgroup>
        <tbody>
            <tr>
                <td>
                    <label for="id">货品序列</label>
                </td>
                <td>
                    {{ d.params.data.id || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="goodsId">商品序列</label>
                </td>
                <td>
                    {{ d.params.data.goodsId || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="barcode">商品条码</label>
                </td>
                <td>
                    {{ d.params.data.barcode || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="sn">货品编码</label>
                </td>
                <td>
                    {{ d.params.data.sn || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="price">货品价格</label>
                </td>
                <td>
                    {{ d.params.data.price || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="costprice">货品成本价</label>
                </td>
                <td>
                    {{ d.params.data.costprice || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="mktprice">货品市场价</label>
                </td>
                <td>
                    {{ d.params.data.mktprice || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="marketable">是否上架</label>
                </td>
                <td>
                    <input type="checkbox" disabled name="marketable" value="{{d.params.data.marketable}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="marketable" {{ d.params.data.marketable ? 'checked' : '' }}>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="pointsDeduction">积分可抵扣金额</label>
                </td>
                <td>
                    {{ d.params.data.pointsDeduction || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="points">赠送积分</label>
                </td>
                <td>
                    {{ d.params.data.points || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="weight">重量(克)</label>
                </td>
                <td>
                    {{ d.params.data.weight || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="stock">库存</label>
                </td>
                <td>
                    {{ d.params.data.stock || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="freezeStock">冻结库存</label>
                </td>
                <td>
                    {{ d.params.data.freezeStock || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="spesDesc">规格值</label>
                </td>
                <td>
                    {{ d.params.data.spesDesc || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="isDefalut">是否默认货品</label>
                </td>
                <td>
                    <input type="checkbox" disabled name="isDefalut" value="{{d.params.data.isDefalut}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isDefalut" {{ d.params.data.isDefalut ? 'checked' : '' }}>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="images">规格图片</label>
                </td>
                <td>
                    {{ d.params.data.images || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="isDel">是否删除</label>
                </td>
                <td>
                    <input type="checkbox" disabled name="isDel" value="{{d.params.data.isDel}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isDel" {{ d.params.data.isDel ? 'checked' : '' }}>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="distributionPrice"></label>
                </td>
                <td>
                    {{ d.params.data.distributionPrice || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="cutMoney"></label>
                </td>
                <td>
                    {{ d.params.data.cutMoney || '' }}
                </td>
            </tr>
            <tr>
                <td>
                    <label for="distributionCutMoney"></label>
                </td>
                <td>
                    {{ d.params.data.distributionCutMoney || '' }}
                </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-CoreCmsbaifenProducts-detailsForm');
        });
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/edit.html
New file
@@ -0,0 +1,192 @@
<script type="text/html" template lay-done="layui.data.sendParams(d);">
    <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsbaifenProducts-editForm" id="LAY-app-CoreCmsbaifenProducts-editForm">
        <input type="hidden" name="id"  value="{{d.params.data.id || '' }}" />
        <div class="layui-form-item ">
        <div class="layui-input-inline "  style="width: 350px;">
            <label for="name" class="layui-form-label ">所属商品</label>
            <div class="layui-input-block">
            <input name="name" disabled  style="width: 200px;" lay-verType="tips"  class="layui-input" l value="{{d.params.data.name || '' }}" />
        </div>
         </div>
        <div class="layui-input-inline">
            <label for="id" class="layui-form-label  ">货品序列</label>
            <div class="layui-input-block">
                <input disabled type="number" min="0"  max="999999" name="id"   lay-verType="tips"  class="layui-input" value="{{d.params.data.id || '' }}"   />
            </div>
        </div>
        <div class="layui-input-inline">
            <label for="sn" class="layui-form-label ">货品编码</label>
            <div class="layui-input-block">
            <input name="sn"  disabled lay-verType="tips"  style="width: 200px;"  class="layui-input"  value="{{d.params.data.sn || '' }}" />
            </div>
        </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"   disabled lay-verType="tips" lay-verify="required" class="layui-input"  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-inline">
                <input name="price"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入货品价格" lay-reqText="请输入货品价格"  value="{{d.params.data.price || '0' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="costprice" class="layui-form-label  layui-form-required">成本价(元)</label>
            <div class="layui-input-inline">
                <input name="costprice"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入货品成本价" lay-reqText="请输入货品成本价"  value="{{d.params.data.costprice || '0' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="mktprice" class="layui-form-label  layui-form-required">指导零售价(元)</label>
            <div class="layui-input-inline">
                <input name="mktprice"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入指导零售价" lay-reqText="请输入指导零售价"  value="{{d.params.data.mktprice || '0' }}" />
            </div>
        </div>
        <!-- <div class="layui-form-item">
            <label for="pointsDeduction" class="layui-form-label  layui-form-required">积分可抵扣金额</label>
            <div class="layui-input-block">
                <input name="pointsDeduction"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入积分可抵扣金额" lay-reqText="请输入积分可抵扣金额"  value="{{d.params.data.pointsDeduction || '' }}" />
            </div>
        </div> -->
        <!-- <div class="layui-form-item">
            <label for="points" class="layui-form-label  layui-form-required">赠送积分</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="points"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.points || '' }}" placeholder="请输入赠送积分" lay-reqText="请输入赠送积分并为数字"  />
            </div>
        </div> -->
        <div class="layui-form-item">
            <label for="weight" class="layui-form-label  layui-form-required" >重量(克)</label>
            <div class="layui-input-inline">
                <input name="weight"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入重量(克)" lay-reqText="请输入重量(克)"  value="{{d.params.data.weight || '0' }}" />
            </div>
        </div>
        <!-- <div class="layui-form-item">
            <label for="stock" class="layui-form-label  layui-form-required">库存</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="stock"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.stock || '' }}" placeholder="请输入库存" lay-reqText="请输入库存并为数字"  />
            </div>
        </div> -->
        <!-- <div class="layui-form-item">
            <label for="freezeStock" class="layui-form-label  layui-form-required">冻结库存</label>
            <div class="layui-input-block">
                <input  type="number" min="0" max="999999" name="freezeStock"   lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.freezeStock || '' }}" placeholder="请输入冻结库存" lay-reqText="请输入冻结库存并为数字"  />
            </div>
        </div> -->
        <!-- <div class="layui-form-item" pane>
            <label for="isDefalut" class="layui-form-label  layui-form-required">是否默认货品</label>
            <div class="layui-input-block">
                <input type="checkbox" lay-filter="switch" name="isDefalut"   {{ d.params.data.isDefalut ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
            </div>
        </div>
         -->
        <!-- <div class="layui-form-item">
            <label for="images" class="layui-form-label  layui-form-required">规格图片</label>
            <div class="layui-input-inline">
                <input name="images" id="imagesInput" lay-verType="tips" lay-verify="required" class="layui-input"  value="{{d.params.data.images || '' }}" placeholder="请上传规格图片" lay-reqText="请上传规格图片"  />
            </div>
            <div class="layui-input-inline">
                <button type="button" class="layui-btn" id="upBtnimages" lay-active="doCropperImg">上传图片</button>
                <img class="coreshop-upload-img" id="viewImgBoximages" src="{{d.params.data.images || layui.setter.noImagePicUrl }}">
            </div>
        </div> -->
<!--
        <div class="layui-form-item" pane>
            <label for="isDel" class="layui-form-label  layui-form-required">是否删除</label>
            <div class="layui-input-block">
                <input type="checkbox" lay-filter="switch" name="isDel"   {{ d.params.data.isDel ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
            </div>
        </div> -->
        <div class="layui-form-item">
            <label for="distributionPrice" class="layui-form-label  layui-form-required " > 经销商价格(元)</label>
            <div class="layui-input-inline">
                <input name="distributionPrice"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入经销商价格" lay-reqText="请输入经销商价格"  value="{{d.params.data.distributionPrice || '0' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="cutMoney" class="layui-form-label  layui-form-required" style="width: 180px;">普通用户购买返佣金(元)</label>
            <div class="layui-input-inline">
                <input name="cutMoney"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入普通用户购买返佣金" lay-reqText="请输入普通用户购买返佣金"  value="{{d.params.data.cutMoney || '0' }}" />
            </div>
        </div>
        <div class="layui-form-item">
            <label for="distributionCutMoney" class="layui-form-label  layui-form-required" style="width: 180px;">经销商用户购买返佣金(元)</label>
            <div class="layui-input-inline">
                <input name="distributionCutMoney"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="请输入经销商用户购买返佣金" lay-reqText="请输入经销商用户购买返佣金"  value="{{d.params.data.distributionCutMoney || '0' }}" />
            </div>
        </div>
        <div class="layui-form-item text-right core-hidden">
            <input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsbaifenProducts-editForm-submit" id="LAY-app-CoreCmsbaifenProducts-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;
            //规格图片图片裁剪上传
            $('#upBtnimages').click(function () {
                cropperImg.cropImg({
                    aspectRatio: 1 / 1,
                    imgSrc: $('#viewImgBoximages').attr('src'),
                    onCrop: function (data) {
                        var loadIndex = layer.load(2);
                        coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
                            if (0 === res.code) {
                                $('#viewImgBoximages').attr('src', res.data.fileUrl);
                                $("#imagesInput").val(res.data.fileUrl);
                                layer.msg(res.msg);
                                layer.close(loadIndex);
                            } else {
                                layer.close(loadIndex);
                                layer.msg(res.msg, { icon: 2, anim: 6 });
                            }
                        });
                    }
                });
            });
            form.verify({
                verifybarcode: [/^.{0,128}$/,'商品条码最大只允许输入128位字符'],
                verifysn: [/^.{0,30}$/,'货品编码最大只允许输入30位字符'],
            });
            //重载form
            form.render(null, 'LAY-app-CoreCmsbaifenProducts-editForm');
        })
    };
</script>
CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html
New file
@@ -0,0 +1,555 @@
<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/CoreCmsbaifenProducts/GetIndex" lay-done="layui.data.done(d);">
</script>
<div class="table-body">
    <table  id="LAY-app-CoreCmsbaifenProducts-tableBox" lay-filter="LAY-app-CoreCmsbaifenProducts-tableBox"></table>
</div>
<script type="text/html" id="LAY-app-CoreCmsbaifenProducts-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">货品序列</label>
                <div class="layui-input-inline">
                    <input type="text" name="id"  placeholder="请输入货品序列" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="category">商品分类</label>
                <div class="layui-input-inline">
                    <input type="text" name="category"  placeholder="请输入商品分类关键字" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="name">商品名称</label>
                <div class="layui-input-inline">
                    <input type="text" name="name"  placeholder="请输入商品名称关键字" class="layui-input">
                </div>
            </div>
            <!-- <div class="layui-inline">
                <label class="layui-form-label" for="barcode">商品条码</label>
                <div class="layui-input-inline">
                    <input type="text" name="barcode"  placeholder="请输入商品条码" class="layui-input">
                </div>
            </div> -->
            <div class="layui-inline">
                <label class="layui-form-label" for="sn">货品编码</label>
                <div class="layui-input-inline">
                    <input type="text" name="sn"  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="costprice">货品成本价</label>
                <div class="layui-input-inline">
                    <input type="text" name="costprice"  placeholder="请输入货品成本价" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="mktprice">货品市场价</label>
                <div class="layui-input-inline">
                    <input type="text" name="mktprice"  placeholder="请输入货品市场价" class="layui-input">
                </div>
            </div> -->
            <div class="layui-inline">
                <label class="layui-form-label" for="marketable">是否上架</label>
                <div class="layui-input-inline">
                    <select name="marketable">
                        <option value="">请选择</option>
                        <option value="True">是</option>
                        <option value="False">否</option>
                    </select>
                </div>
            </div>
            <!-- <div class="layui-inline">
                <label class="layui-form-label" for="pointsDeduction">积分可抵扣金额</label>
                <div class="layui-input-inline">
                    <input type="text" name="pointsDeduction"  placeholder="请输入积分可抵扣金额" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="points">赠送积分</label>
                <div class="layui-input-inline">
                    <input type="text" name="points"  placeholder="请输入赠送积分" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="weight">重量(克)</label>
                <div class="layui-input-inline">
                    <input type="text" name="weight"  placeholder="请输入重量(克)" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="stock">库存</label>
                <div class="layui-input-inline">
                    <input type="text" name="stock"  placeholder="请输入库存" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="freezeStock">冻结库存</label>
                <div class="layui-input-inline">
                    <input type="text" name="freezeStock"  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="isDefalut">是否默认货品</label>
                <div class="layui-input-inline">
                    <select name="isDefalut">
                        <option value="">请选择</option>
                        <option value="True">是</option>
                        <option value="False">否</option>
                    </select>
                </div>
            </div> -->
            <!-- <div class="layui-inline">
                <label class="layui-form-label" for="images">规格图片</label>
                <div class="layui-input-inline">
                    <input type="text" name="images"  placeholder="请输入规格图片" class="layui-input">
                </div>
            </div> -->
            <!-- <div class="layui-inline">
                <label class="layui-form-label" for="isDel">是否删除</label>
                <div class="layui-input-inline">
                    <select name="isDel">
                        <option value="">请选择</option>
                        <option value="True">是</option>
                        <option value="False">否</option>
                    </select>
                </div>
            </div> -->
            <!-- <div class="layui-inline">
                <label class="layui-form-label" for="distributionPrice"></label>
                <div class="layui-input-inline">
                    <input type="text" name="distributionPrice"  placeholder="请输入" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="cutMoney"></label>
                <div class="layui-input-inline">
                    <input type="text" name="cutMoney"  placeholder="请输入" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label" for="distributionCutMoney"></label>
                <div class="layui-input-inline">
                    <input type="text" name="distributionCutMoney"  placeholder="请输入" class="layui-input">
                </div>
            </div> -->
            <div class="layui-inline">
                <button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-CoreCmsbaifenProducts-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
            </div>
        </div>
    </div>
</script>
<script type="text/html" id="LAY-app-CoreCmsbaifenProducts-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-CoreCmsbaifenProducts-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="#CoreCmsbaifenProductsTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a> -->
    <div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="CoreCmsbaifenProductsTbDelDrop{{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-CoreCmsbaifenProducts-search)',
                    function(data) {
                        var field = data.field;
                        searchwhere = field;
                        debugger
                        //执行重载
                        table.reloadData('LAY-app-CoreCmsbaifenProducts-tableBox',{ where: field });
                    });
                //数据绑定
                table.render({
                    elem: '#LAY-app-CoreCmsbaifenProducts-tableBox',
                    url: layui.setter.apiUrl + 'Api/CoreCmsbaifenProducts/GetPageList',
                    method: 'POST',
                    toolbar: '#LAY-app-CoreCmsbaifenProducts-toolbar',
                    pagebar: '#LAY-app-CoreCmsbaifenProducts-pagebar',
                    className: 'pagebarbox',
                    defaultToolbar: ['filter', 'print', 'exports'],
                    height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
                    page: true,
                    limit: 30,
                    limits: [10, 15, 20, 25, 30, 50, 100, 200],
                    text: {none: '暂无相关数据'},
                    cols: [
                        [
                            { type: "checkbox", fixed: "left" },
                            { field: 'category', title: '商品分类', sort: false,width: 240 },
                            { field: 'name', title: '商品名称', sort: false,width: 240 },
                            { field: 'barcode', title: '商品条码', sort: false,width: 132 },
                            { field: 'spesDesc', title: '规格值', sort: false,width: 240 },
                            { field: 'sn', title: '货品编码', sort: false,width: 132 },
                            { field: 'images', title: '货品图片', width: 100, sort: false,
                                templet: function (d) {
                                    if (d.images) {
                                        return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + d.images + '")><image style="max-width:28px;max-height:28px;" src="' + d.images + '"/></a>';
                                    } else {
                                        return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + setter.noImagePicUrl + '")><image style="max-width:30px;max-height:30px;" src="' + setter.noImagePicUrl + '"/></a>';
                                    }
                                }
                            },
                            { field: 'price', title: '价格', sort: false,width: 105 },
                            { field: 'costprice', title: '成本价', sort: false,width: 105 },
                            { field: 'mktprice', title: '市场价', sort: false,width: 105 },
                            // { field: 'pointsDeduction', title: '积分可抵扣金额', sort: false,width: 105 },
                            { field: 'distributionPrice', title: '经销商价格', sort: false,width: 105 },
                            { field: 'cutMoney', title: '普通用户购买返佣金', sort: false,width: 135 },
                            { field: 'distributionCutMoney', title: '经销商用户购买返佣金', sort: false,width: 140 },
                            // { field: 'marketable', title: '是否上架', width: 95, templet: '#switch_marketable', sort: false , unresize: true},
                            // { field: 'points', title: '赠送积分', sort: false,width: 105 },
                            { field: 'weight', title: '重量(克)', sort: false,width: 105 },
                            // { field: 'stock', title: '库存', sort: false,width: 105 },
                            // { field: 'freezeStock', title: '冻结库存', sort: false,width: 105 },
                            // { field: 'isDefalut', title: '是否默认货品', width: 95, templet: '#switch_isDefalut', sort: false , unresize: true},
                            // { field: 'isDel', title: '是否删除', width: 95, templet: '#switch_isDel', sort: false , unresize: true},
                            { width: 162, align: 'center', title:'操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsbaifenProducts-tableBox-bar' }
                        ]
                    ]
                });
                //监听排序事件
                table.on('sort(LAY-app-CoreCmsbaifenProducts-tableBox)', function(obj){
                    table.reloadData('LAY-app-CoreCmsbaifenProducts-tableBox', {
                        initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
                        where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
                            orderField: obj.field, //排序字段
                            orderDirection: obj.type //排序方式
                        }
                    });
                });
                //监听行双击事件
                table.on('rowDouble(LAY-app-CoreCmsbaifenProducts-tableBox)', function (obj) {
                    //查看详情
                    doDetails(obj);
                });
                //头工具栏事件
                table.on('pagebar(LAY-app-CoreCmsbaifenProducts-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-CoreCmsbaifenProducts-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/CoreCmsbaifenProducts/GetCreate", null, function (e) {
                            if (e.code === 0) {
                                admin.popup({
                                    shadeClose: false,
                                    title: '创建数据',
                                    area: ['1200px', '90%'],
                                    id: 'LAY-popup-CoreCmsbaifenProducts-create',
                                    success: function (layero, index) {
                                        view(this.id).render('baifenbingfa/corecmsproducts/create', { data: e.data }).done(function () {
                                            //监听提交
                                            form.on('submit(LAY-app-CoreCmsbaifenProducts-createForm-submit)',
                                                function(data) {
                                                    var field = data.field; //获取提交的字段
                                                    field.marketable = field.marketable == 'on';
                                                    field.isDefalut = field.isDefalut == 'on';
                                                    field.isDel = field.isDel == 'on';
                                                    if (debug) { console.log(field); } //开启调试返回数据
                                                    //提交 Ajax 成功后,关闭当前弹层并重载表格
                                                    coreHelper.Post("Api/CoreCmsbaifenProducts/DoCreate", field, function (e) {
                                                            console.log(e)
                                                            if (e.code === 0) {
                                                                layui.table.reloadData('LAY-app-CoreCmsbaifenProducts-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-CoreCmsbaifenProducts-createForm-submit").click();
                                    }
                                });
                            } else {
                                layer.msg(e.msg);
                            }
                        });
                }
                //执行编辑操作
                function doEdit(obj){
                    coreHelper.Post("Api/CoreCmsbaifenProducts/GetEdit", {id:obj.data.id}, function (e) {
                        if (e.code === 0) {
                            admin.popup({
                                shadeClose: false,
                                title: '编辑数据',
                                area: ['1200px', '90%'],
                                id: 'LAY-popup-CoreCmsbaifenProducts-edit',
                                success: function (layero, index) {
                                    view(this.id).render('baifenbingfa/corecmsproducts/edit', { data: e.data }).done(function () {
                                        //监听提交
                                        form.on('submit(LAY-app-CoreCmsbaifenProducts-editForm-submit)',
                                            function(data) {
                                                var field = data.field; //获取提交的字段
                                                field.marketable = field.marketable == 'on';
                                                field.isDefalut = field.isDefalut == 'on';
                                                field.isDel = field.isDel == 'on';
                                                if (debug) { console.log(field); } //开启调试返回数据
                                                //提交 Ajax 成功后,关闭当前弹层并重载表格
                                                coreHelper.Post("Api/CoreCmsbaifenProducts/DoEdit", field, function (e) {
                                                        console.log(e)
                                                        if (e.code === 0) {
                                                            layui.table.reloadData('LAY-app-CoreCmsbaifenProducts-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-CoreCmsbaifenProducts-editForm-submit").click();
                                }
                            });
                        } else {
                            layer.msg(e.msg);
                        }
                    });
                }
                //执行预览操作
                function doDetails(obj) {
                    coreHelper.Post("Api/CoreCmsbaifenProducts/GetDetails", { id: obj.data.id }, function (e) {
                        if (e.code === 0) {
                            admin.popup({
                                shadeClose: false,
                                title: '查看详情',
                                area: ['1200px', '90%'],
                                id: 'LAY-popup-CoreCmsbaifenProducts-details',
                                success: function (layero, index) {
                                    view(this.id).render('baifenbingfa/corecmsproducts/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/CoreCmsbaifenProducts/DoDelete", { id: obj.data.id }, function (e) {
                            if (debug) { console.log(e); } //开启调试返回数据
                            table.reloadData('LAY-app-CoreCmsbaifenProducts-tableBox');
                            layer.msg(e.msg);
                        });
                }
                //执行批量删除
                function doBatchDelete(checkStatus){
                    var checkData = checkStatus.data;
                    if (checkData.length === 0) {
                        return layer.msg('请选择要删除的数据');
                    }
                    layer.confirm('确定删除吗?删除后将无法恢复。',
                        function(index) {
                            var delidsStr = [];
                            layui.each(checkData,
                                function(index, item) {
                                    delidsStr.push(item.id);
                                });
                            coreHelper.Post("Api/CoreCmsbaifenProducts/DoBatchDelete", { id: delidsStr }, function (e) {
                                    if (debug) { console.log(e); } //开启调试返回数据
                                    table.reloadData('LAY-app-CoreCmsbaifenProducts-tableBox');
                                    layer.msg(e.msg);
                                });
                        });
                }
                //执行查询条件导出excel
                function doQueryExportexcel(){
                    layer.confirm('确定根据当前的查询条件导出数据吗?',
                        function(index) {
                            var field = searchwhere;
                            coreHelper.PostForm("Api/CoreCmsbaifenProducts/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/CoreCmsbaifenProducts/SelectExportExcel", { id: delidsStr }, function (e) {
                                    if (debug) { console.log(e); } //开启调试返回数据
                                    if (e.code === 0) {
                                        window.open(e.data);
                                    } else {
                                        layer.msg(e.msg);
                                    }
                                });
                        });
                }
                //监听 表格复选框操作
                layui.form.on('switch(switch_marketable)', function (obj) {
                    coreHelper.Post("Api/CoreCmsbaifenProducts/DoSetmarketable", { id: this.value, data: obj.elem.checked }, function (e) {
                        if (debug) { console.log(e); } //开启调试返回数据
                        //table.reloadData('LAY-app-CoreCmsbaifenProducts-tableBox');
                        layer.msg(e.msg);
                    });
                });
                layui.form.on('switch(switch_isDefalut)', function (obj) {
                    coreHelper.Post("Api/CoreCmsbaifenProducts/DoSetisDefalut", { id: this.value, data: obj.elem.checked }, function (e) {
                        if (debug) { console.log(e); } //开启调试返回数据
                        //table.reloadData('LAY-app-CoreCmsbaifenProducts-tableBox');
                        layer.msg(e.msg);
                    });
                });
                layui.form.on('switch(switch_isDel)', function (obj) {
                    coreHelper.Post("Api/CoreCmsbaifenProducts/DoSetisDel", { id: this.value, data: obj.elem.checked }, function (e) {
                        if (debug) { console.log(e); } //开启调试返回数据
                        //table.reloadData('LAY-app-CoreCmsbaifenProducts-tableBox');
                        layer.msg(e.msg);
                    });
                });
                //重载form
                form.render();
            });
    };
</script>
<!--设置是否上架-->
<script type="text/html" id="switch_marketable">
    <input type="checkbox" name="switch_marketable" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="switch_marketable" {{ d.marketable ? 'checked' : '' }}>
</script>
<!--设置是否默认货品-->
<script type="text/html" id="switch_isDefalut">
    <input type="checkbox" name="switch_isDefalut" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="switch_isDefalut" {{ d.isDefalut ? 'checked' : '' }}>
</script>
<!--设置是否删除-->
<script type="text/html" id="switch_isDel">
    <input type="checkbox" name="switch_isDel" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="switch_isDel" {{ d.isDel ? 'checked' : '' }}>
</script>
CoreCms.Net.Web.Admin/wwwroot/views/financial/invoice/index.html
@@ -149,7 +149,7 @@
                            },
                            { field: 'sourceId', title: '资源序列', sort: false, width: 125 },
                            {
                                field: 'userNickName', title: '用户', sort: false, width: 105, templet: function (d) {
                                field: 'userNickName', title: '用户', sort: false, width: 180, templet: function (d) {
                                    return d.userNickName + '(' + d.userId + ')';
                                }
                            },
@@ -164,7 +164,7 @@
                                    return "";
                                }
                            },
                            { field: 'title', title: '发票抬头', sort: false },
                            { field: 'title', title: '发票抬头', sort: false ,width: 200 },
                            { field: 'taxNumber', title: '发票税号', sort: false, width: 150 },
                            { field: 'amount', title: '发票金额', sort: false, width: 80, templet: function (data) { return '¥' + data.amount } },
                            {
@@ -185,7 +185,7 @@
                                }
                            },
                            { field: 'fileUrl', title: '发票下载地址', sort: false},
                            { field: 'remarks', title: '开票备注', sort: false, width: 105 },
                            { field: 'remarks', title: '开票备注', sort: false, width: 150 },
                            { field: 'createTime', title: '创建时间', width: 130, sort: false },
                            { field: 'updateTime', title: '更新时间', width: 130, sort: false },
                            { width: 122, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-CoreCmsInvoice-tableBox-bar' }
CoreCms.Net.Web.Admin/wwwroot/views/good/goods/details.html
@@ -192,10 +192,10 @@
            <col width="80">
            <col width="80">
            <col width="80">
            <col width="80">
            <col width="80">
            <col width="80">
            <col width="80">
            <col width="100">
            <col width="100">
            <col width="100">
            <col width="100">
        </colgroup>
        <thead>
            <tr>
@@ -208,10 +208,13 @@
                <th>库存</th>
                <th><i class="required-color">*</i>销售价</th>
                <th>成本价</th>
                <th>经销商价格</th>
                <th>指导零售价</th>
                <th>一级返现</th>
                <th>经销商用户购买返现</th>
                <th>普通用户购买返现</th>
                <!-- <th>一级返现</th>
                <th>二级返现</th>
                <th>三级返现</th>
                <th>三级返现</th> -->
            </tr>
        </thead>
        <tbody id="productsTbody">
@@ -256,9 +259,18 @@
                    {{item.costprice}}
                </td>
                <td>
                    {{item.distributionPrice}}
                </td>
                <td>
                    {{item.mktprice}}
                </td>
                <td>
                    {{item.distributionCutMoney}}
                </td>
                <td>
                    {{item.cutMoney}}
                </td>
                <!-- <td>
                    {{item.levelOne}}
                </td>
                <td>
@@ -266,7 +278,7 @@
                </td>
                <td>
                    {{item.levelThree}}
                </td>
                </td> -->
            </tr>
            {{# }); }}
        </tbody>