From f7f968bf90a2124d1787919b116bb143290622ce Mon Sep 17 00:00:00 2001
From: 移动系统liao <liaoxujun@qq.com>
Date: 星期三, 08 五月 2024 11:25:50 +0800
Subject: [PATCH] 增加货品管理页面,增加ip地址获取APi  修改发票列表宽度

---
 CoreCms.Net.IRepository/baifenbinfa/ICoreCmsProductsRepository.cs             |  125 ++
 CoreCms.Net.Web.Admin/wwwroot/views/good/goods/details.html                   |   26 
 CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html   |  555 ++++++++++
 CoreCms.Net.Web.Admin/wwwroot/views/financial/invoice/index.html              |    6 
 CoreCms.Net.IServices/baifenbingfa/ICoreCmsProductsServices.cs                |  120 ++
 CoreCms.Net.Services/baifenbingfa/CoreCmsProductsServices.cs                  |  159 ++
 CoreCms.Net.Web.Admin/Controllers/baifenbingfa/CoreCmsProductsController.cs   | 1226 ++++++++++++++++++++++
 CoreCms.Net.Model/Entities/Good/CoreCmsProductsPartial.cs                     |    9 
 CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/create.html  |  199 +++
 CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/edit.html    |  192 +++
 CoreCms.Net.Repository/baifenbingfa/CoreCmsProductsRepository.cs              |  453 ++++++++
 CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/details.html |  207 +++
 12 files changed, 3,267 insertions(+), 10 deletions(-)

diff --git a/CoreCms.Net.IRepository/baifenbinfa/ICoreCmsProductsRepository.cs b/CoreCms.Net.IRepository/baifenbinfa/ICoreCmsProductsRepository.cs
new file mode 100644
index 0000000..e3bc88e
--- /dev/null
+++ b/CoreCms.Net.IRepository/baifenbinfa/ICoreCmsProductsRepository.cs
@@ -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);
+
+    }
+}
diff --git a/CoreCms.Net.IServices/baifenbingfa/ICoreCmsProductsServices.cs b/CoreCms.Net.IServices/baifenbingfa/ICoreCmsProductsServices.cs
new file mode 100644
index 0000000..6e464e6
--- /dev/null
+++ b/CoreCms.Net.IServices/baifenbingfa/ICoreCmsProductsServices.cs
@@ -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);
+    }
+}
diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsProductsPartial.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsProductsPartial.cs
index ed45231..92c4a3a 100644
--- a/CoreCms.Net.Model/Entities/Good/CoreCmsProductsPartial.cs
+++ b/CoreCms.Net.Model/Entities/Good/CoreCmsProductsPartial.cs
@@ -21,6 +21,8 @@
     /// </summary>
     public partial class CoreCmsProducts
     {
+
+   
         /// <summary>
         ///     鍟嗗搧缂栫爜
         /// </summary>
@@ -141,5 +143,12 @@
         [Display(Name = "涓夌骇浣i噾")]
         [SugarColumn(IsIgnore = true)]
         public decimal levelThree { get; set; } = 0;
+
+        /// <summary>
+        ///    鍟嗗搧鍒嗙被
+        /// </summary>
+        [Display(Name = "鍟嗗搧鍒嗙被")]
+        [SugarColumn(IsIgnore = true)]
+        public string Category { get; set; }
     }
 }
\ No newline at end of file
diff --git a/CoreCms.Net.Repository/baifenbingfa/CoreCmsProductsRepository.cs b/CoreCms.Net.Repository/baifenbingfa/CoreCmsProductsRepository.cs
new file mode 100644
index 0000000..e7f9cde
--- /dev/null
+++ b/CoreCms.Net.Repository/baifenbingfa/CoreCmsProductsRepository.cs
@@ -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
+    }
+}
diff --git a/CoreCms.Net.Services/baifenbingfa/CoreCmsProductsServices.cs b/CoreCms.Net.Services/baifenbingfa/CoreCmsProductsServices.cs
new file mode 100644
index 0000000..fbcae89
--- /dev/null
+++ b/CoreCms.Net.Services/baifenbingfa/CoreCmsProductsServices.cs
@@ -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
+
+
+
+    }
+}
diff --git a/CoreCms.Net.Web.Admin/Controllers/baifenbingfa/CoreCmsProductsController.cs b/CoreCms.Net.Web.Admin/Controllers/baifenbingfa/CoreCmsProductsController.cs
new file mode 100644
index 0000000..3c45bd1
--- /dev/null
+++ b/CoreCms.Net.Web.Admin/Controllers/baifenbingfa/CoreCmsProductsController.cs
@@ -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);
+            }
+			//绉垎鍙姷鎵i噾棰� 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();
+            //娣诲姞涓�涓猻heet
+            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);
+            //缁檚heet1娣诲姞绗竴琛岀殑澶撮儴鏍囬
+            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("绉垎鍙姷鎵i噾棰�");
+            //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);
+            }
+			//绉垎鍙姷鎵i噾棰� 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();
+            //娣诲姞涓�涓猻heet
+            var mySheet = book.CreateSheet("Sheet1");
+            //鑾峰彇list鏁版嵁
+            var listModel = await _CoreCmsProductsServices.QueryDetaiListAsync(where, p => p.goodsId, OrderByType.Asc, true);
+            //缁檚heet1娣诲姞绗竴琛岀殑澶撮儴鏍囬
+                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("绉垎鍙姷鎵i噾棰�");
+            //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++;
+
+            }
+            // 鍐欏叆鍒癳xcel
+            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
+        
+
+    }
+}
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/create.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/create.html
new file mode 100644
index 0000000..ccc1833
--- /dev/null
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/create.html
@@ -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">绉垎鍙姷鎵i噾棰�</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>
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/details.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/details.html
new file mode 100644
index 0000000..4aae366
--- /dev/null
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/details.html
@@ -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">绉垎鍙姷鎵i噾棰�</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>
\ No newline at end of file
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/edit.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/edit.html
new file mode 100644
index 0000000..7e6329f
--- /dev/null
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/edit.html
@@ -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">绉垎鍙姷鎵i噾棰�</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;">鏅�氱敤鎴疯喘涔拌繑浣i噾(鍏�)</label>
+            <div class="layui-input-inline">
+                <input name="cutMoney"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="璇疯緭鍏ユ櫘閫氱敤鎴疯喘涔拌繑浣i噾" lay-reqText="璇疯緭鍏ユ櫘閫氱敤鎴疯喘涔拌繑浣i噾"  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;">缁忛攢鍟嗙敤鎴疯喘涔拌繑浣i噾(鍏�)</label>
+            <div class="layui-input-inline">
+                <input name="distributionCutMoney"   lay-verType="tips" lay-verify="required" class="layui-input" placeholder="璇疯緭鍏ョ粡閿�鍟嗙敤鎴疯喘涔拌繑浣i噾" lay-reqText="璇疯緭鍏ョ粡閿�鍟嗙敤鎴疯喘涔拌繑浣i噾"  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>
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html
new file mode 100644
index 0000000..9a71a7e
--- /dev/null
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html
@@ -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">绉垎鍙姷鎵i噾棰�</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: '绉垎鍙姷鎵i噾棰�', sort: false,width: 105 },
+                            { field: 'distributionPrice', title: '缁忛攢鍟嗕环鏍�', sort: false,width: 105 },
+						    { field: 'cutMoney', title: '鏅�氱敤鎴疯喘涔拌繑浣i噾', sort: false,width: 135 },
+						    { field: 'distributionCutMoney', title: '缁忛攢鍟嗙敤鎴疯喘涔拌繑浣i噾', 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>
+
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/financial/invoice/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/financial/invoice/index.html
index f48550f..2e1a296 100644
--- a/CoreCms.Net.Web.Admin/wwwroot/views/financial/invoice/index.html
+++ b/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' }
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/details.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/details.html
index 9dccd14..c5fc8ff 100644
--- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/details.html
+++ b/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>

--
Gitblit v1.9.1