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