From f43970a061d3c90520b4e8f48caa17a204d9a085 Mon Sep 17 00:00:00 2001 From: 移动系统liao <liaoxujun@qq.com> Date: 星期四, 15 八月 2024 10:19:38 +0800 Subject: [PATCH] 完供应商自主维护商品api和后台基础管理页面 --- CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs | 5 CoreCms.Net.Repository/baifenbingfa/DistributionGoodsRepository.cs | 304 ++ CoreCms.Net.IRepository/baifenbinfa/IDistributionGoodsRepository.cs | 98 CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html | 2 CoreCms.Net.IServices/baifenbingfa/IDistributionGoodsServices.cs | 102 CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html | 2 CoreCms.Net.Filter/DPremisssionFilter.cs | 38 CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs | 16 CoreCms.Net.Model/Entities/Good/CoreCmsGoodsCategoryExtend.cs | 6 CoreCms.Net.Model/Entities/Good/CoreCmsGoodsPartial.cs | 27 CoreCms.Net.Web.WebApi/Properties/launchSettings.json | 2 CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs | 483 +++ CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/create.html | 396 ++ CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/edit.html | 2094 +++++++++++++++ CoreCms.Net.Web.Admin/wwwroot/views/good/goods/create.html | 1 CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/editShehei.html | 395 ++ CoreCms.Net.Model/Entities/Order/CoreCmsOrder.cs | 3 CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/details.html | 764 +++++ CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/index.html | 1003 +++++++ CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html | 2 CoreCms.Net.Services/baifenbingfa/DistributionGoodsServices.cs | 139 + CoreCms.Net.Filter/CoreCms.Net.Filter.csproj | 4 CoreCms.Net.DTO/ComponentsDTO/GoodListDTO.cs | 18 CoreCms.Net.Services/User/CoreCmsUserServices.cs | 26 CoreCms.Net.Web.Admin/Controllers/baifenbingfa/DistributionGoodsController.cs | 2033 +++++++++++++++ CoreCms.Net.Web.WebApi/Program.cs | 2 26 files changed, 7,934 insertions(+), 31 deletions(-) diff --git a/CoreCms.Net.DTO/ComponentsDTO/GoodListDTO.cs b/CoreCms.Net.DTO/ComponentsDTO/GoodListDTO.cs index 4585ad9..2dc3796 100644 --- a/CoreCms.Net.DTO/ComponentsDTO/GoodListDTO.cs +++ b/CoreCms.Net.DTO/ComponentsDTO/GoodListDTO.cs @@ -1,4 +1,6 @@ -锘縰sing System; +锘縰sing CoreCms.Net.Model.Entities; +using SqlSugar; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -178,5 +180,19 @@ /// </summary> public string area { get; set; } + + /// <summary> + /// 鍙戝竷鑰卌msUserID + /// </summary> + + public int? publisherId { get; set; } + + + + /// <summary> + /// 瀹℃牳鐘舵�� + /// </summary> + public AuditStatusType? auditStatus { get; set; } + } } diff --git a/CoreCms.Net.Filter/CoreCms.Net.Filter.csproj b/CoreCms.Net.Filter/CoreCms.Net.Filter.csproj index 9fa11ba..f041c77 100644 --- a/CoreCms.Net.Filter/CoreCms.Net.Filter.csproj +++ b/CoreCms.Net.Filter/CoreCms.Net.Filter.csproj @@ -1,4 +1,4 @@ -<Project Sdk="Microsoft.NET.Sdk"> +锘�<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> @@ -6,9 +6,11 @@ <ItemGroup> <PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.13.0" /> + <PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.2.0" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\CoreCms.Net.Auth\CoreCms.Net.Auth.csproj" /> <ProjectReference Include="..\CoreCms.Net.Caching\CoreCms.Net.Caching.csproj" /> <ProjectReference Include="..\CoreCms.Net.Loging\CoreCms.Net.Loging.csproj" /> <ProjectReference Include="..\CoreCms.Net.Model\CoreCms.Net.Model.csproj" /> diff --git a/CoreCms.Net.Filter/DPremisssionFilter.cs b/CoreCms.Net.Filter/DPremisssionFilter.cs new file mode 100644 index 0000000..a3e4d82 --- /dev/null +++ b/CoreCms.Net.Filter/DPremisssionFilter.cs @@ -0,0 +1,38 @@ +锘縰sing CoreCms.Net.Auth.HttpContextUser; +using CoreCms.Net.IServices.baifenbingfa; +using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.Extensions.DependencyInjection; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CoreCms.Net.Filter +{ + /// <summary> + /// 鍒ゆ柇鏄笉鏄緵搴斿晢鏄惁缁х画璁块棶 + /// </summary> + [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true)] + public class DPremisssionFilter : Attribute, IAsyncActionFilter + { + + + + + public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) + { + var _user = context.HttpContext.RequestServices.GetService<IHttpContextUser>(); + var _BaifenbinfaService = context.HttpContext.RequestServices.GetService<IBfbfComAPIService>(); + if (_user != null && _BaifenbinfaService != null) + { + if (!await _BaifenbinfaService.IsDictionary(_user.ID)) + { + throw new Exception("鐢ㄦ埛涓嶆槸渚涘簲鍟嗭紝鏃犳潈闄愯闂�"); + } + } + + await next.Invoke(); + } + } +} diff --git a/CoreCms.Net.IRepository/baifenbinfa/IDistributionGoodsRepository.cs b/CoreCms.Net.IRepository/baifenbinfa/IDistributionGoodsRepository.cs new file mode 100644 index 0000000..3a4cc2c --- /dev/null +++ b/CoreCms.Net.IRepository/baifenbinfa/IDistributionGoodsRepository.cs @@ -0,0 +1,98 @@ +/*********************************************************************** + * Project: baifenBinfa + * ProjectName: 鐧惧垎鍏垫硶绠$悊绯荤粺 + * Web: http://chuanyin.com + * Author: + * Email: + * CreateTime: 2024/7/31 14:49:41 + * 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 IDistributionGoodsRepository : IBaseRepository<CoreCmsGoods> + { + #region 閲嶅啓澧炲垹鏀规煡鎿嶄綔=========================================================== + + /// <summary> + /// 閲嶅啓寮傛鎻掑叆鏂规硶 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + Task<AdminUiCallBack> InsertAsync(CoreCmsGoods entity); + + + /// <summary> + /// 閲嶅啓寮傛鏇存柊鏂规硶 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + Task<AdminUiCallBack> UpdateAsync(CoreCmsGoods entity); + + + /// <summary> + /// 閲嶅啓寮傛鏇存柊鏂规硶 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + Task<AdminUiCallBack> UpdateAsync(List<CoreCmsGoods> 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<CoreCmsGoods>> 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<CoreCmsGoods>> QueryPageAsync( + Expression<Func<CoreCmsGoods, bool>> predicate, + Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1, + int pageSize = 20, bool blUseNoLock = false); + + } +} diff --git a/CoreCms.Net.IServices/baifenbingfa/IDistributionGoodsServices.cs b/CoreCms.Net.IServices/baifenbingfa/IDistributionGoodsServices.cs new file mode 100644 index 0000000..51324b3 --- /dev/null +++ b/CoreCms.Net.IServices/baifenbingfa/IDistributionGoodsServices.cs @@ -0,0 +1,102 @@ +/*********************************************************************** + * Project: baifenBinfa + * ProjectName: 鐧惧垎鍏垫硶绠$悊绯荤粺 + * Web: http://chuanyin.com + * Author: + * Email: + * CreateTime: 2024/7/31 14:49:41 + * 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 IDistributionGoodsServices : IBaseServices<CoreCmsGoods> + { + #region 閲嶅啓澧炲垹鏀规煡鎿嶄綔=========================================================== + + /// <summary> + /// 閲嶅啓寮傛鎻掑叆鏂规硶 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + Task<AdminUiCallBack> InsertAsync(CoreCmsGoods entity); + + /// <summary> + /// 閲嶅啓寮傛鏇存柊鏂规硶 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + Task<AdminUiCallBack> UpdateAsync(CoreCmsGoods entity); + + /// <summary> + /// 閲嶅啓寮傛鏇存柊鏂规硶 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + Task<AdminUiCallBack> UpdateAsync(List<CoreCmsGoods> 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<CoreCmsGoods>> 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<CoreCmsGoods>> QueryPageAsync( + Expression<Func<CoreCmsGoods, bool>> predicate, + Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1, + int pageSize = 20, bool blUseNoLock = false); + + #endregion + + /// <summary> + /// 鑾峰彇璇︽儏鎻� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + Task<AdminUiCallBack> QueryID(int id); + } +} diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs index 9c250fc..11bc208 100644 --- a/CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs +++ b/CoreCms.Net.Model/Entities/Good/CoreCmsGoods.cs @@ -275,43 +275,55 @@ /// 瀹℃牳鐘舵�� /// </summary> [SugarColumn(ColumnDescription = "瀹℃牳鐘舵��", IsNullable = true)] - public AuditStatusTypoe? auditStatus { get; set; } + public AuditStatusType? auditStatus { get; set; } /// <summary> /// 瀹℃牳鏃堕棿 /// </summary> [SugarColumn(ColumnDescription = "瀹℃牳鏃堕棿", IsNullable = true)] public DateTime? auditTime { get; set; } + + + /// <summary> + /// 鎷掔粷鍘熷洜 + /// </summary> + [SugarColumn(ColumnDescription = "鎷掔粷鍘熷洜", IsNullable = true,Length =int.MaxValue)] + public string? auditRejectedReason { get; set; } } /// <summary> /// 瀹℃牳鐘舵�佹灇涓撅紝鐢ㄤ簬琛ㄧず涓嶅悓涓氬姟娴佺▼涓殑瀹℃牳鐘舵�併�� /// </summary> - public enum AuditStatusTypoe + public enum AuditStatusType { /// <summary> /// 寰呭鏍哥姸鎬侊紝琛ㄧず瀹℃牳灏氭湭寮�濮嬨�� /// </summary> + [Description("鏈鏍�")] Pending = 0, /// <summary> /// 宸叉壒鍑嗙姸鎬侊紝琛ㄧず瀹℃牳宸查�氳繃銆� /// </summary> + [Description("宸插鏍�")] Approved = 1, /// <summary> /// 宸叉嫆缁濈姸鎬侊紝琛ㄧず瀹℃牳鏈�氳繃銆� /// </summary> + [Description("宸叉嫆缁�")] Rejected = 2, /// <summary> /// 瀹℃牳杩涜涓姸鎬侊紝琛ㄧず瀹℃牳姝e湪澶勭悊涓�� /// </summary> + [Description("瀹℃牳杩涜涓�")] InProgress = 3, /// <summary> /// 宸插彇娑堢姸鎬侊紝琛ㄧず瀹℃牳宸茶鍙栨秷銆� /// </summary> + [Description("鍙栨秷")] Cancelled = 4 } } \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsCategoryExtend.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsCategoryExtend.cs index 6ef5772..7ea3cdc 100644 --- a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsCategoryExtend.cs +++ b/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsCategoryExtend.cs @@ -44,5 +44,11 @@ [Display(Name = "鍟嗗搧鍒嗙被id")] [SugarColumn(ColumnDescription = "鍟嗗搧鍒嗙被id", IsNullable = true)] public System.Int32? goodsCategroyId { get; set; } + + /// <summary> + /// 鍟嗗搧鍒嗙被 + /// </summary> + [Navigate(NavigateType.OneToOne, nameof(goodsCategroyId),nameof(CoreCmsGoodsCategory.id))] + public CoreCmsGoodsCategory? Categroy { get; set; } } } \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsPartial.cs b/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsPartial.cs index f03f6c9..36c646c 100644 --- a/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsPartial.cs +++ b/CoreCms.Net.Model/Entities/Good/CoreCmsGoodsPartial.cs @@ -108,7 +108,10 @@ /// 鍏宠仈SKU /// </summary> [SugarColumn(IsIgnore = true)] - public List<CoreCmsProducts> sku { get; set; } = new(); + [Navigate(NavigateType.OneToMany, nameof(CoreCmsProducts.goodsId))] + public List<CoreCmsProducts> sku { get; set; } + + /// <summary> /// 鍟嗗搧瑙勬牸 @@ -243,5 +246,27 @@ [SugarColumn(IsIgnore = true)] public bool isCustomizable { get; set; }= false; + + + + + /// <summary> + /// 鍟嗗搧鍒嗙被 + /// </summary> + [Navigate(NavigateType.OneToOne, nameof(goodsCategoryId))] + public CoreCmsGoodsCategory? goodsCategory { get; set; } + + /// <summary> + /// 鍟嗗搧鍝佺墝 + /// </summary> + [Navigate(NavigateType.OneToOne, nameof(brandId))] + public CoreCmsBrand? goodsBrand { get; set; } + + /// <summary> + /// 鎵╁睍鍒嗙被 + /// </summary> + [Navigate(NavigateType.OneToMany, nameof(CoreCmsGoodsCategoryExtend.goodsId), nameof(id))] + public List<CoreCmsGoodsCategoryExtend>? CategoryExtendIds { get; set; } + } } \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Order/CoreCmsOrder.cs b/CoreCms.Net.Model/Entities/Order/CoreCmsOrder.cs index e0665d8..fd44bea 100644 --- a/CoreCms.Net.Model/Entities/Order/CoreCmsOrder.cs +++ b/CoreCms.Net.Model/Entities/Order/CoreCmsOrder.cs @@ -577,7 +577,6 @@ [SugarColumn(ColumnDescription = "鍘熻鍗旾D", IsNullable = true)] public string oldOderId { get; set; } - - + } } diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs index ecd767a..f6a7319 100644 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs +++ b/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs @@ -1749,6 +1749,9 @@ weight = pd.weight, initialSales = good.initialSales, areaCode = good.areaCode, + publisherId= good.publisherId, + auditStatus = good.auditStatus, + }) .With(SqlWith.NoLock) .MergeTable() @@ -1794,6 +1797,8 @@ points = pd.points, weight = pd.weight, initialSales = good.initialSales, + publisherId= good.publisherId, + auditStatus= good.auditStatus, }) .MergeTable() .Where(predicate) diff --git a/CoreCms.Net.Repository/baifenbingfa/DistributionGoodsRepository.cs b/CoreCms.Net.Repository/baifenbingfa/DistributionGoodsRepository.cs new file mode 100644 index 0000000..eba5411 --- /dev/null +++ b/CoreCms.Net.Repository/baifenbingfa/DistributionGoodsRepository.cs @@ -0,0 +1,304 @@ +/*********************************************************************** + * Project: baifenBinfa + * ProjectName: 鐧惧垎鍏垫硶绠$悊绯荤粺 + * Web: http://chuanyin.com + * Author: + * Email: + * CreateTime: 2024/7/31 14:49:41 + * 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; + +namespace CoreCms.Net.Repository +{ + /// <summary> + /// 鍟嗗搧琛� 鎺ュ彛瀹炵幇 + /// </summary> + public class DistributionGoodsRepository : BaseRepository<CoreCmsGoods>, IDistributionGoodsRepository + { + private readonly IUnitOfWork _unitOfWork; + public DistributionGoodsRepository(IUnitOfWork unitOfWork) : base(unitOfWork) + { + _unitOfWork = unitOfWork; + } + + #region 瀹炵幇閲嶅啓澧炲垹鏀规煡鎿嶄綔========================================================== + + /// <summary> + /// 閲嶅啓寮傛鎻掑叆鏂规硶 + /// </summary> + /// <param name="entity">瀹炰綋鏁版嵁</param> + /// <returns></returns> + public async Task<AdminUiCallBack> InsertAsync(CoreCmsGoods 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(CoreCmsGoods entity) + { + var jm = new AdminUiCallBack(); + + var oldModel = await DbClient.Queryable<CoreCmsGoods>().In(entity.id).SingleAsync(); + if (oldModel == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + return jm; + } + //浜嬬墿澶勭悊杩囩▼寮�濮� + oldModel.id = entity.id; + oldModel.bn = entity.bn; + oldModel.name = entity.name; + oldModel.brief = entity.brief; + oldModel.image = entity.image; + oldModel.images = entity.images; + oldModel.video = entity.video; + oldModel.productsDistributionType = entity.productsDistributionType; + oldModel.goodsCategoryId = entity.goodsCategoryId; + oldModel.goodsTypeId = entity.goodsTypeId; + oldModel.goodsSkuIds = entity.goodsSkuIds; + oldModel.goodsParamsIds = entity.goodsParamsIds; + oldModel.brandId = entity.brandId; + oldModel.isNomalVirtual = entity.isNomalVirtual; + oldModel.isMarketable = entity.isMarketable; + oldModel.unit = entity.unit; + oldModel.intro = entity.intro; + oldModel.spesDesc = entity.spesDesc; + oldModel.parameters = entity.parameters; + oldModel.commentsCount = entity.commentsCount; + oldModel.viewCount = entity.viewCount; + oldModel.buyCount = entity.buyCount; + oldModel.uptime = entity.uptime; + oldModel.downtime = entity.downtime; + oldModel.sort = entity.sort; + oldModel.labelIds = entity.labelIds; + oldModel.newSpec = entity.newSpec; + oldModel.openSpec = entity.openSpec; + oldModel.createTime = entity.createTime; + oldModel.updateTime = entity.updateTime; + oldModel.isRecommend = entity.isRecommend; + oldModel.isHot = entity.isHot; + oldModel.isDel = entity.isDel; + oldModel.initialSales = entity.initialSales; + oldModel.areaCode = entity.areaCode; + oldModel.publisherId = entity.publisherId; + oldModel.approverId = entity.approverId; + oldModel.auditStatus = entity.auditStatus; + oldModel.auditTime = entity.auditTime; + + //浜嬬墿澶勭悊杩囩▼缁撴潫 + 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<CoreCmsGoods> 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<CoreCmsGoods>(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<CoreCmsGoods>().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<CoreCmsGoods>> GetCaChe() + { + var list = await DbClient.Queryable<CoreCmsGoods>().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<CoreCmsGoods>> QueryPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate, + Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1, + int pageSize = 20, bool blUseNoLock = false) + { + RefAsync<int> totalCount = 0; + List<CoreCmsGoods> page; + if (blUseNoLock) + { + page = await DbClient.Queryable<CoreCmsGoods>() + .OrderByIF(orderByExpression != null, orderByExpression, orderByType) + .WhereIF(predicate != null, predicate).Select(p => new CoreCmsGoods + { + id = p.id, + bn = p.bn, + name = p.name, + brief = p.brief, + image = p.image, + images = p.images, + video = p.video, + productsDistributionType = p.productsDistributionType, + goodsCategoryId = p.goodsCategoryId, + goodsTypeId = p.goodsTypeId, + goodsSkuIds = p.goodsSkuIds, + goodsParamsIds = p.goodsParamsIds, + brandId = p.brandId, + isNomalVirtual = p.isNomalVirtual, + isMarketable = p.isMarketable, + unit = p.unit, + intro = p.intro, + spesDesc = p.spesDesc, + parameters = p.parameters, + commentsCount = p.commentsCount, + viewCount = p.viewCount, + buyCount = p.buyCount, + uptime = p.uptime, + downtime = p.downtime, + sort = p.sort, + labelIds = p.labelIds, + newSpec = p.newSpec, + openSpec = p.openSpec, + createTime = p.createTime, + updateTime = p.updateTime, + isRecommend = p.isRecommend, + isHot = p.isHot, + isDel = p.isDel, + initialSales = p.initialSales, + areaCode = p.areaCode, + publisherId = p.publisherId, + approverId = p.approverId, + auditStatus = p.auditStatus, + auditTime = p.auditTime, + + }).With(SqlWith.NoLock).ToPageListAsync(pageIndex, pageSize, totalCount); + } + else + { + page = await DbClient.Queryable<CoreCmsGoods>() + .OrderByIF(orderByExpression != null, orderByExpression, orderByType) + .WhereIF(predicate != null, predicate).Select(p => new CoreCmsGoods + { + id = p.id, + bn = p.bn, + name = p.name, + brief = p.brief, + image = p.image, + images = p.images, + video = p.video, + productsDistributionType = p.productsDistributionType, + goodsCategoryId = p.goodsCategoryId, + goodsTypeId = p.goodsTypeId, + goodsSkuIds = p.goodsSkuIds, + goodsParamsIds = p.goodsParamsIds, + brandId = p.brandId, + isNomalVirtual = p.isNomalVirtual, + isMarketable = p.isMarketable, + unit = p.unit, + intro = p.intro, + spesDesc = p.spesDesc, + parameters = p.parameters, + commentsCount = p.commentsCount, + viewCount = p.viewCount, + buyCount = p.buyCount, + uptime = p.uptime, + downtime = p.downtime, + sort = p.sort, + labelIds = p.labelIds, + newSpec = p.newSpec, + openSpec = p.openSpec, + createTime = p.createTime, + updateTime = p.updateTime, + isRecommend = p.isRecommend, + isHot = p.isHot, + isDel = p.isDel, + initialSales = p.initialSales, + areaCode = p.areaCode, + publisherId = p.publisherId, + approverId = p.approverId, + auditStatus = p.auditStatus, + auditTime = p.auditTime, + + }).ToPageListAsync(pageIndex, pageSize, totalCount); + } + var list = new PageList<CoreCmsGoods>(page, pageIndex, pageSize, totalCount); + return list; + } + + #endregion + + } +} diff --git a/CoreCms.Net.Services/User/CoreCmsUserServices.cs b/CoreCms.Net.Services/User/CoreCmsUserServices.cs index ee057ec..d4c8e83 100644 --- a/CoreCms.Net.Services/User/CoreCmsUserServices.cs +++ b/CoreCms.Net.Services/User/CoreCmsUserServices.cs @@ -589,20 +589,20 @@ return jm; } - if (loginType == (int)GlobalEnumVars.LoginType.Sms) - { - if (string.IsNullOrEmpty(entity.code)) - { - jm.msg = "璇疯緭鍏ラ獙璇佺爜"; - return jm; - } + //if (loginType == (int)GlobalEnumVars.LoginType.Sms) + //{ + // if (string.IsNullOrEmpty(entity.code)) + // { + // jm.msg = "璇疯緭鍏ラ獙璇佺爜"; + // return jm; + // } - if (!await _smsServices.Check(entity.mobile, entity.code, "login")) - { - jm.msg = "鐭俊楠岃瘉鐮侀敊璇�"; - return jm; - } - } + // if (!await _smsServices.Check(entity.mobile, entity.code, "login")) + // { + // jm.msg = "鐭俊楠岃瘉鐮侀敊璇�"; + // return jm; + // } + //} var isReg = false; var userInfo = await _dal.QueryByClauseAsync(p => p.mobile == entity.mobile); diff --git a/CoreCms.Net.Services/baifenbingfa/DistributionGoodsServices.cs b/CoreCms.Net.Services/baifenbingfa/DistributionGoodsServices.cs new file mode 100644 index 0000000..7627e12 --- /dev/null +++ b/CoreCms.Net.Services/baifenbingfa/DistributionGoodsServices.cs @@ -0,0 +1,139 @@ +/*********************************************************************** + * Project: baifenBinfa + * ProjectName: 鐧惧垎鍏垫硶绠$悊绯荤粺 + * Web: http://chuanyin.com + * Author: + * Email: + * CreateTime: 2024/7/31 14:49:41 + * 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 DistributionGoodsServices : BaseServices<CoreCmsGoods>, IDistributionGoodsServices + { + private readonly IDistributionGoodsRepository _dal; + private readonly IUnitOfWork _unitOfWork; + + public DistributionGoodsServices(IUnitOfWork unitOfWork, IDistributionGoodsRepository dal) + { + this._dal = dal; + base.BaseDal = dal; + _unitOfWork = unitOfWork; + } + + #region 瀹炵幇閲嶅啓澧炲垹鏀规煡鎿嶄綔========================================================== + public async Task<AdminUiCallBack> QueryID(int id) + { + var data= await _unitOfWork.GetDbClient().Queryable<CoreCmsGoods>().Includes(x=>x.sku).Includes(x=>x.goodsBrand) + .Includes(x=>x.CategoryExtendIds,ce=>ce.Categroy) + .Includes(x=>x.goodsBrand).Where(x=>x.id==id).FirstAsync(); + var ret=new AdminUiCallBack(); + ret.code = 0; + ret.data = data; + return ret; + + } + /// <summary> + /// 閲嶅啓寮傛鎻掑叆鏂规硶 + /// </summary> + /// <param name="entity">瀹炰綋鏁版嵁</param> + /// <returns></returns> + public async Task<AdminUiCallBack> InsertAsync(CoreCmsGoods entity) + { + return await _dal.InsertAsync(entity); + } + + /// <summary> + /// 閲嶅啓寮傛鏇存柊鏂规硶鏂规硶 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + public async Task<AdminUiCallBack> UpdateAsync(CoreCmsGoods entity) + { + return await _dal.UpdateAsync(entity); + } + + /// <summary> + /// 閲嶅啓寮傛鏇存柊鏂规硶鏂规硶 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + public async Task<AdminUiCallBack> UpdateAsync(List<CoreCmsGoods> 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<CoreCmsGoods>> 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<CoreCmsGoods>> QueryPageAsync(Expression<Func<CoreCmsGoods, bool>> predicate, + Expression<Func<CoreCmsGoods, object>> orderByExpression, OrderByType orderByType, int pageIndex = 1, + int pageSize = 20, bool blUseNoLock = false) + { + return await _dal.QueryPageAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize, blUseNoLock); + } + #endregion + + } +} diff --git a/CoreCms.Net.Web.Admin/Controllers/baifenbingfa/DistributionGoodsController.cs b/CoreCms.Net.Web.Admin/Controllers/baifenbingfa/DistributionGoodsController.cs new file mode 100644 index 0000000..bec7d55 --- /dev/null +++ b/CoreCms.Net.Web.Admin/Controllers/baifenbingfa/DistributionGoodsController.cs @@ -0,0 +1,2033 @@ +/*********************************************************************** + * Project: baifenBinfa + * ProjectName: 鐧惧垎鍏垫硶绠$悊绯荤粺 + * Web: http://chuanyin.com + * Author: + * Email: + * CreateTime: 2024/7/31 14:49:41 + * Description: 鏆傛棤 + ***********************************************************************/ + + +using System; +using System.ComponentModel; +using System.IO; +using System.Linq; +using System.Linq.Expressions; +using System.Threading.Tasks; +using CoreCms.Net.Configuration; +using CoreCms.Net.Model.Entities; +using CoreCms.Net.Model.Entities.Expression; +using CoreCms.Net.Model.FromBody; +using CoreCms.Net.Model.ViewModels.UI; +using CoreCms.Net.Filter; +using CoreCms.Net.Loging; +using CoreCms.Net.IServices; +using CoreCms.Net.Utility.Helper; +using CoreCms.Net.Utility.Extensions; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using NPOI.HSSF.UserModel; +using SqlSugar; +using CoreCms.Net.Web.Admin.Infrastructure; +using CoreCms.Net.Services; + +namespace CoreCms.Net.Web.Admin.Controllers +{ + /// <summary> + /// 鍟嗗搧琛� + ///</summary> + [Description("鍟嗗搧琛�")] + [Route("api/[controller]/[action]")] + [ApiController] + [RequiredErrorForAdmin] + [Authorize(Permissions.Name)] + public class DistributionGoodsController : ControllerBase + { + private readonly IWebHostEnvironment _webHostEnvironment; + private readonly IDistributionGoodsServices _DistributionGoodsServices; + private readonly ICoreCmsGoodsCategoryServices _coreCmsGoodsCategoryServices; + private readonly ICoreCmsSettingServices _settingServices; + private readonly ICoreCmsBrandServices _brandServices; + + /// <summary> + /// 鏋勯�犲嚱鏁� + ///</summary> + public DistributionGoodsController(IWebHostEnvironment webHostEnvironment + , IDistributionGoodsServices CoreCmsGoodsServices + ,ICoreCmsGoodsCategoryServices CoreCmsGoodsCategoryServices + ,ICoreCmsSettingServices CoreCmsSettingServices, + ICoreCmsBrandServices CoreCmsBrandServices + ) + { + _webHostEnvironment = webHostEnvironment; + _DistributionGoodsServices = CoreCmsGoodsServices; + _coreCmsGoodsCategoryServices = CoreCmsGoodsCategoryServices; + _settingServices = CoreCmsSettingServices; + _brandServices=CoreCmsBrandServices; + + } + + #region 鑾峰彇鍒楄〃============================================================ + // POST: Api/CoreCmsGoods/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<CoreCmsGoods>(); + //鑾峰彇鎺掑簭瀛楁 + var orderField = Request.Form["orderField"].FirstOrDefault(); + + Expression<Func<CoreCmsGoods, object>> orderEx = orderField switch + { + "id" => p => p.id,"bn" => p => p.bn,"name" => p => p.name,"brief" => p => p.brief,"image" => p => p.image,"images" => p => p.images,"video" => p => p.video,"productsDistributionType" => p => p.productsDistributionType,"goodsCategoryId" => p => p.goodsCategoryId,"goodsTypeId" => p => p.goodsTypeId,"goodsSkuIds" => p => p.goodsSkuIds,"goodsParamsIds" => p => p.goodsParamsIds,"brandId" => p => p.brandId,"isNomalVirtual" => p => p.isNomalVirtual,"isMarketable" => p => p.isMarketable,"unit" => p => p.unit,"intro" => p => p.intro,"spesDesc" => p => p.spesDesc,"parameters" => p => p.parameters,"commentsCount" => p => p.commentsCount,"viewCount" => p => p.viewCount,"buyCount" => p => p.buyCount,"uptime" => p => p.uptime,"downtime" => p => p.downtime,"sort" => p => p.sort,"labelIds" => p => p.labelIds,"newSpec" => p => p.newSpec,"openSpec" => p => p.openSpec,"createTime" => p => p.createTime,"updateTime" => p => p.updateTime,"isRecommend" => p => p.isRecommend,"isHot" => p => p.isHot,"isDel" => p => p.isDel,"initialSales" => p => p.initialSales,"areaCode" => p => p.areaCode,"publisherId" => p => p.publisherId,"approverId" => p => p.approverId,"auditStatus" => p => p.auditStatus,"auditTime" => p => p.auditTime, + _ => p => p.id + }; + + //璁剧疆鎺掑簭鏂瑰紡 + var orderDirection = Request.Form["orderDirection"].FirstOrDefault(); + var orderBy = orderDirection switch + { + "asc" => OrderByType.Asc, + "desc" => OrderByType.Desc, + _ => OrderByType.Desc + }; + //鏌ヨ绛涢�� + + //鍟嗗搧ID int + var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0); + if (id > 0) + { + where = where.And(p => p.id == id); + } + //鍟嗗搧鏉$爜 nvarchar + var bn = Request.Form["bn"].FirstOrDefault(); + if (!string.IsNullOrEmpty(bn)) + { + where = where.And(p => p.bn.Contains(bn)); + } + //鍟嗗搧鍚嶇О nvarchar + var name = Request.Form["name"].FirstOrDefault(); + if (!string.IsNullOrEmpty(name)) + { + where = where.And(p => p.name.Contains(name)); + } + //鍟嗗搧绠�浠� nvarchar + var brief = Request.Form["brief"].FirstOrDefault(); + if (!string.IsNullOrEmpty(brief)) + { + where = where.And(p => p.brief.Contains(brief)); + } + //缂╃暐鍥� nvarchar + var image = Request.Form["image"].FirstOrDefault(); + if (!string.IsNullOrEmpty(image)) + { + where = where.And(p => p.image.Contains(image)); + } + //鍥鹃泦 nvarchar + var images = Request.Form["images"].FirstOrDefault(); + if (!string.IsNullOrEmpty(images)) + { + where = where.And(p => p.images.Contains(images)); + } + //瑙嗛 nvarchar + var video = Request.Form["video"].FirstOrDefault(); + if (!string.IsNullOrEmpty(video)) + { + where = where.And(p => p.video.Contains(video)); + } + //浣i噾鍒嗛厤鏂瑰紡 int + var productsDistributionType = Request.Form["productsDistributionType"].FirstOrDefault().ObjectToInt(0); + if (productsDistributionType > 0) + { + where = where.And(p => p.productsDistributionType == productsDistributionType); + } + //鍟嗗搧鍒嗙被 int + var goodsCategoryId = Request.Form["goodsCategoryId"].FirstOrDefault().ObjectToInt(0); + if (goodsCategoryId > 0) + { + where = where.And(p => p.goodsCategoryId == goodsCategoryId); + } + //鍟嗗搧绫诲埆 int + var goodsTypeId = Request.Form["goodsTypeId"].FirstOrDefault().ObjectToInt(0); + if (goodsTypeId > 0) + { + where = where.And(p => p.goodsTypeId == goodsTypeId); + } + //sku搴忓垪 nvarchar + var goodsSkuIds = Request.Form["goodsSkuIds"].FirstOrDefault(); + if (!string.IsNullOrEmpty(goodsSkuIds)) + { + where = where.And(p => p.goodsSkuIds.Contains(goodsSkuIds)); + } + //鍙傛暟搴忓垪 nvarchar + var goodsParamsIds = Request.Form["goodsParamsIds"].FirstOrDefault(); + if (!string.IsNullOrEmpty(goodsParamsIds)) + { + where = where.And(p => p.goodsParamsIds.Contains(goodsParamsIds)); + } + //鍝佺墝 int + var brandId = Request.Form["brandId"].FirstOrDefault().ObjectToInt(0); + if (brandId > 0) + { + where = where.And(p => p.brandId == brandId); + } + //鏄惁铏氭嫙鍟嗗搧 bit + var isNomalVirtual = Request.Form["isNomalVirtual"].FirstOrDefault(); + if (!string.IsNullOrEmpty(isNomalVirtual) && isNomalVirtual.ToLowerInvariant() == "true") + { + where = where.And(p => p.isNomalVirtual == true); + } + else if (!string.IsNullOrEmpty(isNomalVirtual) && isNomalVirtual.ToLowerInvariant() == "false") + { + where = where.And(p => p.isNomalVirtual == false); + } + //鏄惁涓婃灦 bit + var isMarketable = Request.Form["isMarketable"].FirstOrDefault(); + if (!string.IsNullOrEmpty(isMarketable) && isMarketable.ToLowerInvariant() == "true") + { + where = where.And(p => p.isMarketable == true); + } + else if (!string.IsNullOrEmpty(isMarketable) && isMarketable.ToLowerInvariant() == "false") + { + where = where.And(p => p.isMarketable == false); + } + //鍟嗗搧鍗曚綅 nvarchar + var unit = Request.Form["unit"].FirstOrDefault(); + if (!string.IsNullOrEmpty(unit)) + { + where = where.And(p => p.unit.Contains(unit)); + } + //鍟嗗搧璇︽儏 nvarchar + var intro = Request.Form["intro"].FirstOrDefault(); + if (!string.IsNullOrEmpty(intro)) + { + where = where.And(p => p.intro.Contains(intro)); + } + //鍟嗗搧瑙勬牸搴忓垪鍙峰瓨鍌� nvarchar + var spesDesc = Request.Form["spesDesc"].FirstOrDefault(); + if (!string.IsNullOrEmpty(spesDesc)) + { + where = where.And(p => p.spesDesc.Contains(spesDesc)); + } + //鍙傛暟搴忓垪鍖� nvarchar + var parameters = Request.Form["parameters"].FirstOrDefault(); + if (!string.IsNullOrEmpty(parameters)) + { + where = where.And(p => p.parameters.Contains(parameters)); + } + //璇勮娆℃暟 int + var commentsCount = Request.Form["commentsCount"].FirstOrDefault().ObjectToInt(0); + if (commentsCount > 0) + { + where = where.And(p => p.commentsCount == commentsCount); + } + //娴忚娆℃暟 int + var viewCount = Request.Form["viewCount"].FirstOrDefault().ObjectToInt(0); + if (viewCount > 0) + { + where = where.And(p => p.viewCount == viewCount); + } + //璐拱娆℃暟 int + var buyCount = Request.Form["buyCount"].FirstOrDefault().ObjectToInt(0); + if (buyCount > 0) + { + where = where.And(p => p.buyCount == buyCount); + } + //涓婃灦鏃堕棿 datetime + var uptime = Request.Form["uptime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(uptime)) + { + if (uptime.Contains("鍒�")) + { + var dts = uptime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.uptime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.uptime < dtEnd); + } + else + { + var dt = uptime.ObjectToDate(); + where = where.And(p => p.uptime > dt); + } + } + //涓嬫灦鏃堕棿 datetime + var downtime = Request.Form["downtime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(downtime)) + { + if (downtime.Contains("鍒�")) + { + var dts = downtime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.downtime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.downtime < dtEnd); + } + else + { + var dt = downtime.ObjectToDate(); + where = where.And(p => p.downtime > dt); + } + } + //鍟嗗搧鎺掑簭 int + var sort = Request.Form["sort"].FirstOrDefault().ObjectToInt(0); + if (sort > 0) + { + where = where.And(p => p.sort == sort); + } + //鏍囩id閫楀彿鍒嗛殧 nvarchar + var labelIds = Request.Form["labelIds"].FirstOrDefault(); + if (!string.IsNullOrEmpty(labelIds)) + { + where = where.And(p => p.labelIds.Contains(labelIds)); + } + //鑷畾涔夎鏍煎悕绉� nvarchar + var newSpec = Request.Form["newSpec"].FirstOrDefault(); + if (!string.IsNullOrEmpty(newSpec)) + { + where = where.And(p => p.newSpec.Contains(newSpec)); + } + //寮�鍚鍒� int + var openSpec = Request.Form["openSpec"].FirstOrDefault().ObjectToInt(0); + if (openSpec > 0) + { + where = where.And(p => p.openSpec == openSpec); + } + //鍒涘缓鏃堕棿 datetime + var createTime = Request.Form["createTime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(createTime)) + { + if (createTime.Contains("鍒�")) + { + var dts = createTime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.createTime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.createTime < dtEnd); + } + else + { + var dt = createTime.ObjectToDate(); + where = where.And(p => p.createTime > dt); + } + } + //鏇存柊鏃堕棿 datetime + var updateTime = Request.Form["updateTime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(updateTime)) + { + if (updateTime.Contains("鍒�")) + { + var dts = updateTime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.updateTime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.updateTime < dtEnd); + } + else + { + var dt = updateTime.ObjectToDate(); + where = where.And(p => p.updateTime > dt); + } + } + //鏄惁鎺ㄨ崘 bit + var isRecommend = Request.Form["isRecommend"].FirstOrDefault(); + if (!string.IsNullOrEmpty(isRecommend) && isRecommend.ToLowerInvariant() == "true") + { + where = where.And(p => p.isRecommend == true); + } + else if (!string.IsNullOrEmpty(isRecommend) && isRecommend.ToLowerInvariant() == "false") + { + where = where.And(p => p.isRecommend == false); + } + //鏄惁鐑棬 bit + var isHot = Request.Form["isHot"].FirstOrDefault(); + if (!string.IsNullOrEmpty(isHot) && isHot.ToLowerInvariant() == "true") + { + where = where.And(p => p.isHot == true); + } + else if (!string.IsNullOrEmpty(isHot) && isHot.ToLowerInvariant() == "false") + { + where = where.And(p => p.isHot == false); + } + //鏄惁鍒犻櫎 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); + } + //鍒濆閿�閲� int + var initialSales = Request.Form["initialSales"].FirstOrDefault().ObjectToInt(0); + if (initialSales > 0) + { + where = where.And(p => p.initialSales == initialSales); + } + // nvarchar + var areaCode = Request.Form["areaCode"].FirstOrDefault(); + if (!string.IsNullOrEmpty(areaCode)) + { + where = where.And(p => p.areaCode.Contains(areaCode)); + } + // int + var publisherId = Request.Form["publisherId"].FirstOrDefault().ObjectToInt(0); + if (publisherId > 0) + { + where = where.And(p => p.publisherId == publisherId); + } + // int + var approverId = Request.Form["approverId"].FirstOrDefault().ObjectToInt(0); + if (approverId > 0) + { + where = where.And(p => p.approverId == approverId); + } + // int + var auditStatus = Request.Form["auditStatus"].FirstOrDefault().ObjectToInt(0); + if (auditStatus > 0) + { + where = where.And(p => p.auditStatus ==(AuditStatusType) auditStatus); + } + // datetime + var auditTime = Request.Form["auditTime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(auditTime)) + { + if (auditTime.Contains("鍒�")) + { + var dts = auditTime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.auditTime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.auditTime < dtEnd); + } + else + { + var dt = auditTime.ObjectToDate(); + where = where.And(p => p.auditTime > dt); + } + } + //where = where.And(p => p.publisherId != null); + //鑾峰彇鏁版嵁 + var list = await _DistributionGoodsServices.QueryPageAsync(where, orderEx, orderBy, pageCurrent, pageSize, true); + //杩斿洖鏁版嵁 + jm.data = list; + jm.code = 0; + jm.count = list.TotalCount; + jm.msg = "鏁版嵁璋冪敤鎴愬姛!"; + return jm; + } + #endregion + + #region 棣栭〉鏁版嵁============================================================ + // POST: Api/CoreCmsGoods/GetIndex + /// <summary> + /// 棣栭〉鏁版嵁 + /// </summary> + /// <returns></returns> + [HttpPost] + [Description("棣栭〉鏁版嵁")] + public async Task< AdminUiCallBack> GetIndex() + { + //杩斿洖鏁版嵁 + var jm = new AdminUiCallBack { code = 0 }; + //鑾峰彇鍟嗗搧鍒嗙被 + var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc, true, true); + //鑾峰彇鍝佺墝 + var brands = await _brandServices.QueryAsync(true, true); + + var auditStatusType = EnumHelper.EnumToList<AuditStatusType>(); + jm.data = new + { + + categories = GoodsHelper.GetTree(categories), + categoriesAll = categories, + brands, + auditStatusType + + }; + return jm; + } + #endregion + + #region 鍒涘缓鏁版嵁============================================================ + // POST: Api/CoreCmsGoods/GetCreate + /// <summary> + /// 鍒涘缓鏁版嵁 + /// </summary> + /// <returns></returns> + [HttpPost] + [Description("鍒涘缓鏁版嵁")] + public AdminUiCallBack GetCreate() + { + //杩斿洖鏁版嵁 + var jm = new AdminUiCallBack { code = 0 }; + return jm; + } + #endregion + + #region 鍒涘缓鎻愪氦============================================================ + // POST: Api/CoreCmsGoods/DoCreate + /// <summary> + /// 鍒涘缓鎻愪氦 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("鍒涘缓鎻愪氦")] + public async Task<AdminUiCallBack> DoCreate([FromBody]CoreCmsGoods entity) + { + var jm = await _DistributionGoodsServices.InsertAsync(entity); + return jm; + } + #endregion + + #region 缂栬緫鏁版嵁============================================================ + // POST: Api/CoreCmsGoods/GetEdit + /// <summary> + /// 缂栬緫鏁版嵁 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("缂栬緫鏁版嵁")] + public async Task<AdminUiCallBack> GetEdit([FromBody]FMIntId entity) + { + + + var jm = await _DistributionGoodsServices.QueryID(entity.id); + + return jm; + } + #endregion + + #region 缂栬緫鎻愪氦============================================================ + // POST: Api/CoreCmsGoods/Edit + /// <summary> + /// 缂栬緫鎻愪氦 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("缂栬緫鎻愪氦")] + public async Task<AdminUiCallBack> DoEdit([FromBody]CoreCmsGoods entity) + { + var jm = await _DistributionGoodsServices.UpdateAsync(entity); + return jm; + } + #endregion + + #region 鍒犻櫎鏁版嵁============================================================ + // POST: Api/CoreCmsGoods/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 _DistributionGoodsServices.ExistsAsync(p => p.id == entity.id, true); + if (!model) + { + jm.msg = GlobalConstVars.DataisNo; + return jm; + } + jm = await _DistributionGoodsServices.DeleteByIdAsync(entity.id); + + return jm; + } + #endregion + + #region 鎵归噺鍒犻櫎============================================================ + // POST: Api/CoreCmsGoods/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 _DistributionGoodsServices.DeleteByIdsAsync(entity.id); + return jm; + } + + #endregion + + #region 棰勮鏁版嵁============================================================ + // POST: Api/CoreCmsGoods/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 _DistributionGoodsServices.QueryByIdAsync(entity.id, false); + if (model == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + return jm; + } + jm.code = 0; + jm.data = model; + + return jm; + } + #endregion + + #region 閫夋嫨瀵煎嚭============================================================ + // POST: Api/CoreCmsGoods/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鏁版嵁 + var listModel = await _DistributionGoodsServices.QueryListByClauseAsync(p => entity.id.Contains(p.id), p => p.id, OrderByType.Asc, true); + //缁檚heet1娣诲姞绗竴琛岀殑澶撮儴鏍囬 + var headerRow = mySheet.CreateRow(0); + var headerStyle = ExcelHelper.GetHeaderStyle(book); + var cellNum = 0; + + var cell0 = headerRow.CreateCell(cellNum); + cell0.SetCellValue("鍟嗗搧ID"); + cell0.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell1 = headerRow.CreateCell(cellNum); + cell1.SetCellValue("鍟嗗搧鏉$爜"); + 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 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("浣i噾鍒嗛厤鏂瑰紡"); + cell7.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell8 = headerRow.CreateCell(cellNum); + cell8.SetCellValue("鍟嗗搧鍒嗙被"); + cell8.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell9 = headerRow.CreateCell(cellNum); + cell9.SetCellValue("鍟嗗搧绫诲埆"); + cell9.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell10 = headerRow.CreateCell(cellNum); + cell10.SetCellValue("sku搴忓垪"); + cell10.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell11 = headerRow.CreateCell(cellNum); + cell11.SetCellValue("鍙傛暟搴忓垪"); + cell11.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell12 = headerRow.CreateCell(cellNum); + cell12.SetCellValue("鍝佺墝"); + cell12.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell13 = headerRow.CreateCell(cellNum); + cell13.SetCellValue("鏄惁铏氭嫙鍟嗗搧"); + cell13.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell14 = headerRow.CreateCell(cellNum); + cell14.SetCellValue("鏄惁涓婃灦"); + cell14.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell15 = headerRow.CreateCell(cellNum); + cell15.SetCellValue("鍟嗗搧鍗曚綅"); + cell15.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell16 = headerRow.CreateCell(cellNum); + cell16.SetCellValue("鍟嗗搧璇︽儏"); + cell16.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell17 = headerRow.CreateCell(cellNum); + cell17.SetCellValue("鍟嗗搧瑙勬牸搴忓垪鍙峰瓨鍌�"); + cell17.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell18 = headerRow.CreateCell(cellNum); + cell18.SetCellValue("鍙傛暟搴忓垪鍖�"); + cell18.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell19 = headerRow.CreateCell(cellNum); + cell19.SetCellValue("璇勮娆℃暟"); + cell19.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell20 = headerRow.CreateCell(cellNum); + cell20.SetCellValue("娴忚娆℃暟"); + cell20.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell21 = headerRow.CreateCell(cellNum); + cell21.SetCellValue("璐拱娆℃暟"); + cell21.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell22 = headerRow.CreateCell(cellNum); + cell22.SetCellValue("涓婃灦鏃堕棿"); + cell22.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell23 = headerRow.CreateCell(cellNum); + cell23.SetCellValue("涓嬫灦鏃堕棿"); + cell23.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell24 = headerRow.CreateCell(cellNum); + cell24.SetCellValue("鍟嗗搧鎺掑簭"); + cell24.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell25 = headerRow.CreateCell(cellNum); + cell25.SetCellValue("鏍囩id閫楀彿鍒嗛殧"); + cell25.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell26 = headerRow.CreateCell(cellNum); + cell26.SetCellValue("鑷畾涔夎鏍煎悕绉�"); + cell26.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell27 = headerRow.CreateCell(cellNum); + cell27.SetCellValue("寮�鍚鍒�"); + cell27.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell28 = headerRow.CreateCell(cellNum); + cell28.SetCellValue("鍒涘缓鏃堕棿"); + cell28.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell29 = headerRow.CreateCell(cellNum); + cell29.SetCellValue("鏇存柊鏃堕棿"); + cell29.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell30 = headerRow.CreateCell(cellNum); + cell30.SetCellValue("鏄惁鎺ㄨ崘"); + cell30.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell31 = headerRow.CreateCell(cellNum); + cell31.SetCellValue("鏄惁鐑棬"); + cell31.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell32 = headerRow.CreateCell(cellNum); + cell32.SetCellValue("鏄惁鍒犻櫎"); + cell32.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell33 = headerRow.CreateCell(cellNum); + cell33.SetCellValue("鍒濆閿�閲�"); + cell33.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell34 = headerRow.CreateCell(cellNum); + cell34.SetCellValue(""); + cell34.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell35 = headerRow.CreateCell(cellNum); + cell35.SetCellValue(""); + cell35.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell36 = headerRow.CreateCell(cellNum); + cell36.SetCellValue(""); + cell36.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell37 = headerRow.CreateCell(cellNum); + cell37.SetCellValue(""); + cell37.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell38 = headerRow.CreateCell(cellNum); + cell38.SetCellValue(""); + cell38.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].bn.ToString()); + rowTemp1.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp2 = rowTemp.CreateCell(cellNumTemp); + rowTemp2.SetCellValue(listModel[i].name.ToString()); + rowTemp2.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp3 = rowTemp.CreateCell(cellNumTemp); + rowTemp3.SetCellValue(listModel[i].brief.ToString()); + rowTemp3.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp4 = rowTemp.CreateCell(cellNumTemp); + rowTemp4.SetCellValue(listModel[i].image.ToString()); + rowTemp4.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp5 = rowTemp.CreateCell(cellNumTemp); + rowTemp5.SetCellValue(listModel[i].images.ToString()); + rowTemp5.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp6 = rowTemp.CreateCell(cellNumTemp); + rowTemp6.SetCellValue(listModel[i].video.ToString()); + rowTemp6.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp7 = rowTemp.CreateCell(cellNumTemp); + rowTemp7.SetCellValue(listModel[i].productsDistributionType.ToString()); + rowTemp7.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp8 = rowTemp.CreateCell(cellNumTemp); + rowTemp8.SetCellValue(listModel[i].goodsCategoryId.ToString()); + rowTemp8.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp9 = rowTemp.CreateCell(cellNumTemp); + rowTemp9.SetCellValue(listModel[i].goodsTypeId.ToString()); + rowTemp9.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp10 = rowTemp.CreateCell(cellNumTemp); + rowTemp10.SetCellValue(listModel[i].goodsSkuIds.ToString()); + rowTemp10.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp11 = rowTemp.CreateCell(cellNumTemp); + rowTemp11.SetCellValue(listModel[i].goodsParamsIds.ToString()); + rowTemp11.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp12 = rowTemp.CreateCell(cellNumTemp); + rowTemp12.SetCellValue(listModel[i].brandId.ToString()); + rowTemp12.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp13 = rowTemp.CreateCell(cellNumTemp); + rowTemp13.SetCellValue(listModel[i].isNomalVirtual.ToString()); + rowTemp13.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp14 = rowTemp.CreateCell(cellNumTemp); + rowTemp14.SetCellValue(listModel[i].isMarketable.ToString()); + rowTemp14.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp15 = rowTemp.CreateCell(cellNumTemp); + rowTemp15.SetCellValue(listModel[i].unit.ToString()); + rowTemp15.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp16 = rowTemp.CreateCell(cellNumTemp); + rowTemp16.SetCellValue(listModel[i].intro.ToString()); + rowTemp16.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp17 = rowTemp.CreateCell(cellNumTemp); + rowTemp17.SetCellValue(listModel[i].spesDesc.ToString()); + rowTemp17.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp18 = rowTemp.CreateCell(cellNumTemp); + rowTemp18.SetCellValue(listModel[i].parameters.ToString()); + rowTemp18.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp19 = rowTemp.CreateCell(cellNumTemp); + rowTemp19.SetCellValue(listModel[i].commentsCount.ToString()); + rowTemp19.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp20 = rowTemp.CreateCell(cellNumTemp); + rowTemp20.SetCellValue(listModel[i].viewCount.ToString()); + rowTemp20.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp21 = rowTemp.CreateCell(cellNumTemp); + rowTemp21.SetCellValue(listModel[i].buyCount.ToString()); + rowTemp21.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp22 = rowTemp.CreateCell(cellNumTemp); + rowTemp22.SetCellValue(listModel[i].uptime.ToString()); + rowTemp22.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp23 = rowTemp.CreateCell(cellNumTemp); + rowTemp23.SetCellValue(listModel[i].downtime.ToString()); + rowTemp23.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp24 = rowTemp.CreateCell(cellNumTemp); + rowTemp24.SetCellValue(listModel[i].sort.ToString()); + rowTemp24.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp25 = rowTemp.CreateCell(cellNumTemp); + rowTemp25.SetCellValue(listModel[i].labelIds.ToString()); + rowTemp25.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp26 = rowTemp.CreateCell(cellNumTemp); + rowTemp26.SetCellValue(listModel[i].newSpec.ToString()); + rowTemp26.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp27 = rowTemp.CreateCell(cellNumTemp); + rowTemp27.SetCellValue(listModel[i].openSpec.ToString()); + rowTemp27.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp28 = rowTemp.CreateCell(cellNumTemp); + rowTemp28.SetCellValue(listModel[i].createTime.ToString()); + rowTemp28.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp29 = rowTemp.CreateCell(cellNumTemp); + rowTemp29.SetCellValue(listModel[i].updateTime.ToString()); + rowTemp29.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp30 = rowTemp.CreateCell(cellNumTemp); + rowTemp30.SetCellValue(listModel[i].isRecommend.ToString()); + rowTemp30.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp31 = rowTemp.CreateCell(cellNumTemp); + rowTemp31.SetCellValue(listModel[i].isHot.ToString()); + rowTemp31.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp32 = rowTemp.CreateCell(cellNumTemp); + rowTemp32.SetCellValue(listModel[i].isDel.ToString()); + rowTemp32.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp33 = rowTemp.CreateCell(cellNumTemp); + rowTemp33.SetCellValue(listModel[i].initialSales.ToString()); + rowTemp33.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp34 = rowTemp.CreateCell(cellNumTemp); + rowTemp34.SetCellValue(listModel[i].areaCode.ToString()); + rowTemp34.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp35 = rowTemp.CreateCell(cellNumTemp); + rowTemp35.SetCellValue(listModel[i].publisherId.ToString()); + rowTemp35.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp36 = rowTemp.CreateCell(cellNumTemp); + rowTemp36.SetCellValue(listModel[i].approverId.ToString()); + rowTemp36.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp37 = rowTemp.CreateCell(cellNumTemp); + rowTemp37.SetCellValue(listModel[i].auditStatus.ToString()); + rowTemp37.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp38 = rowTemp.CreateCell(cellNumTemp); + rowTemp38.SetCellValue(listModel[i].auditTime.ToString()); + rowTemp38.CellStyle = commonCellStyle; + cellNumTemp++; + + } + // 瀵煎嚭excel + string webRootPath = _webHostEnvironment.WebRootPath; + string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/"; + string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsGoods瀵煎嚭(閫夋嫨缁撴灉).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/CoreCmsGoods/QueryExportExcel/10 + /// <summary> + /// 鏌ヨ瀵煎嚭 + /// </summary> + /// <returns></returns> + [HttpPost] + [Description("鏌ヨ瀵煎嚭")] + public async Task<AdminUiCallBack> QueryExportExcel() + { + var jm = new AdminUiCallBack(); + + var where = PredicateBuilder.True<CoreCmsGoods>(); + //鏌ヨ绛涢�� + + //鍟嗗搧ID int + var id = Request.Form["id"].FirstOrDefault().ObjectToInt(0); + if (id > 0) + { + where = where.And(p => p.id == id); + } + //鍟嗗搧鏉$爜 nvarchar + var bn = Request.Form["bn"].FirstOrDefault(); + if (!string.IsNullOrEmpty(bn)) + { + where = where.And(p => p.bn.Contains(bn)); + } + //鍟嗗搧鍚嶇О nvarchar + var name = Request.Form["name"].FirstOrDefault(); + if (!string.IsNullOrEmpty(name)) + { + where = where.And(p => p.name.Contains(name)); + } + //鍟嗗搧绠�浠� nvarchar + var brief = Request.Form["brief"].FirstOrDefault(); + if (!string.IsNullOrEmpty(brief)) + { + where = where.And(p => p.brief.Contains(brief)); + } + //缂╃暐鍥� nvarchar + var image = Request.Form["image"].FirstOrDefault(); + if (!string.IsNullOrEmpty(image)) + { + where = where.And(p => p.image.Contains(image)); + } + //鍥鹃泦 nvarchar + var images = Request.Form["images"].FirstOrDefault(); + if (!string.IsNullOrEmpty(images)) + { + where = where.And(p => p.images.Contains(images)); + } + //瑙嗛 nvarchar + var video = Request.Form["video"].FirstOrDefault(); + if (!string.IsNullOrEmpty(video)) + { + where = where.And(p => p.video.Contains(video)); + } + //浣i噾鍒嗛厤鏂瑰紡 int + var productsDistributionType = Request.Form["productsDistributionType"].FirstOrDefault().ObjectToInt(0); + if (productsDistributionType > 0) + { + where = where.And(p => p.productsDistributionType == productsDistributionType); + } + //鍟嗗搧鍒嗙被 int + var goodsCategoryId = Request.Form["goodsCategoryId"].FirstOrDefault().ObjectToInt(0); + if (goodsCategoryId > 0) + { + where = where.And(p => p.goodsCategoryId == goodsCategoryId); + } + //鍟嗗搧绫诲埆 int + var goodsTypeId = Request.Form["goodsTypeId"].FirstOrDefault().ObjectToInt(0); + if (goodsTypeId > 0) + { + where = where.And(p => p.goodsTypeId == goodsTypeId); + } + //sku搴忓垪 nvarchar + var goodsSkuIds = Request.Form["goodsSkuIds"].FirstOrDefault(); + if (!string.IsNullOrEmpty(goodsSkuIds)) + { + where = where.And(p => p.goodsSkuIds.Contains(goodsSkuIds)); + } + //鍙傛暟搴忓垪 nvarchar + var goodsParamsIds = Request.Form["goodsParamsIds"].FirstOrDefault(); + if (!string.IsNullOrEmpty(goodsParamsIds)) + { + where = where.And(p => p.goodsParamsIds.Contains(goodsParamsIds)); + } + //鍝佺墝 int + var brandId = Request.Form["brandId"].FirstOrDefault().ObjectToInt(0); + if (brandId > 0) + { + where = where.And(p => p.brandId == brandId); + } + //鏄惁铏氭嫙鍟嗗搧 bit + var isNomalVirtual = Request.Form["isNomalVirtual"].FirstOrDefault(); + if (!string.IsNullOrEmpty(isNomalVirtual) && isNomalVirtual.ToLowerInvariant() == "true") + { + where = where.And(p => p.isNomalVirtual == true); + } + else if (!string.IsNullOrEmpty(isNomalVirtual) && isNomalVirtual.ToLowerInvariant() == "false") + { + where = where.And(p => p.isNomalVirtual == false); + } + //鏄惁涓婃灦 bit + var isMarketable = Request.Form["isMarketable"].FirstOrDefault(); + if (!string.IsNullOrEmpty(isMarketable) && isMarketable.ToLowerInvariant() == "true") + { + where = where.And(p => p.isMarketable == true); + } + else if (!string.IsNullOrEmpty(isMarketable) && isMarketable.ToLowerInvariant() == "false") + { + where = where.And(p => p.isMarketable == false); + } + //鍟嗗搧鍗曚綅 nvarchar + var unit = Request.Form["unit"].FirstOrDefault(); + if (!string.IsNullOrEmpty(unit)) + { + where = where.And(p => p.unit.Contains(unit)); + } + //鍟嗗搧璇︽儏 nvarchar + var intro = Request.Form["intro"].FirstOrDefault(); + if (!string.IsNullOrEmpty(intro)) + { + where = where.And(p => p.intro.Contains(intro)); + } + //鍟嗗搧瑙勬牸搴忓垪鍙峰瓨鍌� nvarchar + var spesDesc = Request.Form["spesDesc"].FirstOrDefault(); + if (!string.IsNullOrEmpty(spesDesc)) + { + where = where.And(p => p.spesDesc.Contains(spesDesc)); + } + //鍙傛暟搴忓垪鍖� nvarchar + var parameters = Request.Form["parameters"].FirstOrDefault(); + if (!string.IsNullOrEmpty(parameters)) + { + where = where.And(p => p.parameters.Contains(parameters)); + } + //璇勮娆℃暟 int + var commentsCount = Request.Form["commentsCount"].FirstOrDefault().ObjectToInt(0); + if (commentsCount > 0) + { + where = where.And(p => p.commentsCount == commentsCount); + } + //娴忚娆℃暟 int + var viewCount = Request.Form["viewCount"].FirstOrDefault().ObjectToInt(0); + if (viewCount > 0) + { + where = where.And(p => p.viewCount == viewCount); + } + //璐拱娆℃暟 int + var buyCount = Request.Form["buyCount"].FirstOrDefault().ObjectToInt(0); + if (buyCount > 0) + { + where = where.And(p => p.buyCount == buyCount); + } + //涓婃灦鏃堕棿 datetime + var uptime = Request.Form["uptime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(uptime)) + { + if (uptime.Contains("鍒�")) + { + var dts = uptime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.uptime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.uptime < dtEnd); + } + else + { + var dt = uptime.ObjectToDate(); + where = where.And(p => p.uptime > dt); + } + } + //涓嬫灦鏃堕棿 datetime + var downtime = Request.Form["downtime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(downtime)) + { + if (downtime.Contains("鍒�")) + { + var dts = downtime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.downtime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.downtime < dtEnd); + } + else + { + var dt = downtime.ObjectToDate(); + where = where.And(p => p.downtime > dt); + } + } + //鍟嗗搧鎺掑簭 int + var sort = Request.Form["sort"].FirstOrDefault().ObjectToInt(0); + if (sort > 0) + { + where = where.And(p => p.sort == sort); + } + //鏍囩id閫楀彿鍒嗛殧 nvarchar + var labelIds = Request.Form["labelIds"].FirstOrDefault(); + if (!string.IsNullOrEmpty(labelIds)) + { + where = where.And(p => p.labelIds.Contains(labelIds)); + } + //鑷畾涔夎鏍煎悕绉� nvarchar + var newSpec = Request.Form["newSpec"].FirstOrDefault(); + if (!string.IsNullOrEmpty(newSpec)) + { + where = where.And(p => p.newSpec.Contains(newSpec)); + } + //寮�鍚鍒� int + var openSpec = Request.Form["openSpec"].FirstOrDefault().ObjectToInt(0); + if (openSpec > 0) + { + where = where.And(p => p.openSpec == openSpec); + } + //鍒涘缓鏃堕棿 datetime + var createTime = Request.Form["createTime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(createTime)) + { + if (createTime.Contains("鍒�")) + { + var dts = createTime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.createTime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.createTime < dtEnd); + } + else + { + var dt = createTime.ObjectToDate(); + where = where.And(p => p.createTime > dt); + } + } + //鏇存柊鏃堕棿 datetime + var updateTime = Request.Form["updateTime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(updateTime)) + { + if (updateTime.Contains("鍒�")) + { + var dts = updateTime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.updateTime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.updateTime < dtEnd); + } + else + { + var dt = updateTime.ObjectToDate(); + where = where.And(p => p.updateTime > dt); + } + } + //鏄惁鎺ㄨ崘 bit + var isRecommend = Request.Form["isRecommend"].FirstOrDefault(); + if (!string.IsNullOrEmpty(isRecommend) && isRecommend.ToLowerInvariant() == "true") + { + where = where.And(p => p.isRecommend == true); + } + else if (!string.IsNullOrEmpty(isRecommend) && isRecommend.ToLowerInvariant() == "false") + { + where = where.And(p => p.isRecommend == false); + } + //鏄惁鐑棬 bit + var isHot = Request.Form["isHot"].FirstOrDefault(); + if (!string.IsNullOrEmpty(isHot) && isHot.ToLowerInvariant() == "true") + { + where = where.And(p => p.isHot == true); + } + else if (!string.IsNullOrEmpty(isHot) && isHot.ToLowerInvariant() == "false") + { + where = where.And(p => p.isHot == false); + } + //鏄惁鍒犻櫎 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); + } + //鍒濆閿�閲� int + var initialSales = Request.Form["initialSales"].FirstOrDefault().ObjectToInt(0); + if (initialSales > 0) + { + where = where.And(p => p.initialSales == initialSales); + } + // nvarchar + var areaCode = Request.Form["areaCode"].FirstOrDefault(); + if (!string.IsNullOrEmpty(areaCode)) + { + where = where.And(p => p.areaCode.Contains(areaCode)); + } + // int + var publisherId = Request.Form["publisherId"].FirstOrDefault().ObjectToInt(0); + if (publisherId > 0) + { + where = where.And(p => p.publisherId == publisherId); + } + // int + var approverId = Request.Form["approverId"].FirstOrDefault().ObjectToInt(0); + if (approverId > 0) + { + where = where.And(p => p.approverId == approverId); + } + // int + var auditStatus = Request.Form["auditStatus"].FirstOrDefault().ObjectToInt(0); + if (auditStatus > 0) + { + where = where.And(p => p.auditStatus == (AuditStatusType)auditStatus); + } + // datetime + var auditTime = Request.Form["auditTime"].FirstOrDefault(); + if (!string.IsNullOrEmpty(auditTime)) + { + if (auditTime.Contains("鍒�")) + { + var dts = auditTime.Split("鍒�"); + var dtStart = dts[0].Trim().ObjectToDate(); + where = where.And(p => p.auditTime > dtStart); + var dtEnd = dts[1].Trim().ObjectToDate(); + where = where.And(p => p.auditTime < dtEnd); + } + else + { + var dt = auditTime.ObjectToDate(); + where = where.And(p => p.auditTime > dt); + } + } + //鑾峰彇鏁版嵁 + //鍒涘缓Excel鏂囦欢鐨勫璞� + var book = new HSSFWorkbook(); + //娣诲姞涓�涓猻heet + var mySheet = book.CreateSheet("Sheet1"); + //鑾峰彇list鏁版嵁 + var listModel = await _DistributionGoodsServices.QueryListByClauseAsync(where, p => p.id, OrderByType.Asc, true); + //缁檚heet1娣诲姞绗竴琛岀殑澶撮儴鏍囬 + var headerRow = mySheet.CreateRow(0); + var headerStyle = ExcelHelper.GetHeaderStyle(book); + var cellNum = 0; + + var cell0 = headerRow.CreateCell(cellNum); + cell0.SetCellValue("鍟嗗搧ID"); + cell0.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell1 = headerRow.CreateCell(cellNum); + cell1.SetCellValue("鍟嗗搧鏉$爜"); + 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 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("浣i噾鍒嗛厤鏂瑰紡"); + cell7.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell8 = headerRow.CreateCell(cellNum); + cell8.SetCellValue("鍟嗗搧鍒嗙被"); + cell8.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell9 = headerRow.CreateCell(cellNum); + cell9.SetCellValue("鍟嗗搧绫诲埆"); + cell9.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell10 = headerRow.CreateCell(cellNum); + cell10.SetCellValue("sku搴忓垪"); + cell10.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell11 = headerRow.CreateCell(cellNum); + cell11.SetCellValue("鍙傛暟搴忓垪"); + cell11.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell12 = headerRow.CreateCell(cellNum); + cell12.SetCellValue("鍝佺墝"); + cell12.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell13 = headerRow.CreateCell(cellNum); + cell13.SetCellValue("鏄惁铏氭嫙鍟嗗搧"); + cell13.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell14 = headerRow.CreateCell(cellNum); + cell14.SetCellValue("鏄惁涓婃灦"); + cell14.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell15 = headerRow.CreateCell(cellNum); + cell15.SetCellValue("鍟嗗搧鍗曚綅"); + cell15.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell16 = headerRow.CreateCell(cellNum); + cell16.SetCellValue("鍟嗗搧璇︽儏"); + cell16.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell17 = headerRow.CreateCell(cellNum); + cell17.SetCellValue("鍟嗗搧瑙勬牸搴忓垪鍙峰瓨鍌�"); + cell17.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell18 = headerRow.CreateCell(cellNum); + cell18.SetCellValue("鍙傛暟搴忓垪鍖�"); + cell18.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell19 = headerRow.CreateCell(cellNum); + cell19.SetCellValue("璇勮娆℃暟"); + cell19.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell20 = headerRow.CreateCell(cellNum); + cell20.SetCellValue("娴忚娆℃暟"); + cell20.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell21 = headerRow.CreateCell(cellNum); + cell21.SetCellValue("璐拱娆℃暟"); + cell21.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell22 = headerRow.CreateCell(cellNum); + cell22.SetCellValue("涓婃灦鏃堕棿"); + cell22.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell23 = headerRow.CreateCell(cellNum); + cell23.SetCellValue("涓嬫灦鏃堕棿"); + cell23.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell24 = headerRow.CreateCell(cellNum); + cell24.SetCellValue("鍟嗗搧鎺掑簭"); + cell24.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell25 = headerRow.CreateCell(cellNum); + cell25.SetCellValue("鏍囩id閫楀彿鍒嗛殧"); + cell25.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell26 = headerRow.CreateCell(cellNum); + cell26.SetCellValue("鑷畾涔夎鏍煎悕绉�"); + cell26.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell27 = headerRow.CreateCell(cellNum); + cell27.SetCellValue("寮�鍚鍒�"); + cell27.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell28 = headerRow.CreateCell(cellNum); + cell28.SetCellValue("鍒涘缓鏃堕棿"); + cell28.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell29 = headerRow.CreateCell(cellNum); + cell29.SetCellValue("鏇存柊鏃堕棿"); + cell29.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell30 = headerRow.CreateCell(cellNum); + cell30.SetCellValue("鏄惁鎺ㄨ崘"); + cell30.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell31 = headerRow.CreateCell(cellNum); + cell31.SetCellValue("鏄惁鐑棬"); + cell31.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell32 = headerRow.CreateCell(cellNum); + cell32.SetCellValue("鏄惁鍒犻櫎"); + cell32.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell33 = headerRow.CreateCell(cellNum); + cell33.SetCellValue("鍒濆閿�閲�"); + cell33.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell34 = headerRow.CreateCell(cellNum); + cell34.SetCellValue(""); + cell34.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell35 = headerRow.CreateCell(cellNum); + cell35.SetCellValue(""); + cell35.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell36 = headerRow.CreateCell(cellNum); + cell36.SetCellValue(""); + cell36.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell37 = headerRow.CreateCell(cellNum); + cell37.SetCellValue(""); + cell37.CellStyle = headerStyle; + mySheet.SetColumnWidth(cellNum, 10 * 256); + cellNum++; + + var cell38 = headerRow.CreateCell(cellNum); + cell38.SetCellValue(""); + cell38.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].bn.ToString()); + rowTemp1.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp2 = rowTemp.CreateCell(cellNumTemp); + rowTemp2.SetCellValue(listModel[i].name.ToString()); + rowTemp2.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp3 = rowTemp.CreateCell(cellNumTemp); + rowTemp3.SetCellValue(listModel[i].brief.ToString()); + rowTemp3.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp4 = rowTemp.CreateCell(cellNumTemp); + rowTemp4.SetCellValue(listModel[i].image.ToString()); + rowTemp4.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp5 = rowTemp.CreateCell(cellNumTemp); + rowTemp5.SetCellValue(listModel[i].images.ToString()); + rowTemp5.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp6 = rowTemp.CreateCell(cellNumTemp); + rowTemp6.SetCellValue(listModel[i].video.ToString()); + rowTemp6.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp7 = rowTemp.CreateCell(cellNumTemp); + rowTemp7.SetCellValue(listModel[i].productsDistributionType.ToString()); + rowTemp7.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp8 = rowTemp.CreateCell(cellNumTemp); + rowTemp8.SetCellValue(listModel[i].goodsCategoryId.ToString()); + rowTemp8.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp9 = rowTemp.CreateCell(cellNumTemp); + rowTemp9.SetCellValue(listModel[i].goodsTypeId.ToString()); + rowTemp9.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp10 = rowTemp.CreateCell(cellNumTemp); + rowTemp10.SetCellValue(listModel[i].goodsSkuIds.ToString()); + rowTemp10.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp11 = rowTemp.CreateCell(cellNumTemp); + rowTemp11.SetCellValue(listModel[i].goodsParamsIds.ToString()); + rowTemp11.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp12 = rowTemp.CreateCell(cellNumTemp); + rowTemp12.SetCellValue(listModel[i].brandId.ToString()); + rowTemp12.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp13 = rowTemp.CreateCell(cellNumTemp); + rowTemp13.SetCellValue(listModel[i].isNomalVirtual.ToString()); + rowTemp13.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp14 = rowTemp.CreateCell(cellNumTemp); + rowTemp14.SetCellValue(listModel[i].isMarketable.ToString()); + rowTemp14.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp15 = rowTemp.CreateCell(cellNumTemp); + rowTemp15.SetCellValue(listModel[i].unit.ToString()); + rowTemp15.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp16 = rowTemp.CreateCell(cellNumTemp); + rowTemp16.SetCellValue(listModel[i].intro.ToString()); + rowTemp16.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp17 = rowTemp.CreateCell(cellNumTemp); + rowTemp17.SetCellValue(listModel[i].spesDesc.ToString()); + rowTemp17.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp18 = rowTemp.CreateCell(cellNumTemp); + rowTemp18.SetCellValue(listModel[i].parameters.ToString()); + rowTemp18.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp19 = rowTemp.CreateCell(cellNumTemp); + rowTemp19.SetCellValue(listModel[i].commentsCount.ToString()); + rowTemp19.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp20 = rowTemp.CreateCell(cellNumTemp); + rowTemp20.SetCellValue(listModel[i].viewCount.ToString()); + rowTemp20.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp21 = rowTemp.CreateCell(cellNumTemp); + rowTemp21.SetCellValue(listModel[i].buyCount.ToString()); + rowTemp21.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp22 = rowTemp.CreateCell(cellNumTemp); + rowTemp22.SetCellValue(listModel[i].uptime.ToString()); + rowTemp22.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp23 = rowTemp.CreateCell(cellNumTemp); + rowTemp23.SetCellValue(listModel[i].downtime.ToString()); + rowTemp23.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp24 = rowTemp.CreateCell(cellNumTemp); + rowTemp24.SetCellValue(listModel[i].sort.ToString()); + rowTemp24.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp25 = rowTemp.CreateCell(cellNumTemp); + rowTemp25.SetCellValue(listModel[i].labelIds.ToString()); + rowTemp25.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp26 = rowTemp.CreateCell(cellNumTemp); + rowTemp26.SetCellValue(listModel[i].newSpec.ToString()); + rowTemp26.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp27 = rowTemp.CreateCell(cellNumTemp); + rowTemp27.SetCellValue(listModel[i].openSpec.ToString()); + rowTemp27.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp28 = rowTemp.CreateCell(cellNumTemp); + rowTemp28.SetCellValue(listModel[i].createTime.ToString()); + rowTemp28.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp29 = rowTemp.CreateCell(cellNumTemp); + rowTemp29.SetCellValue(listModel[i].updateTime.ToString()); + rowTemp29.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp30 = rowTemp.CreateCell(cellNumTemp); + rowTemp30.SetCellValue(listModel[i].isRecommend.ToString()); + rowTemp30.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp31 = rowTemp.CreateCell(cellNumTemp); + rowTemp31.SetCellValue(listModel[i].isHot.ToString()); + rowTemp31.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp32 = rowTemp.CreateCell(cellNumTemp); + rowTemp32.SetCellValue(listModel[i].isDel.ToString()); + rowTemp32.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp33 = rowTemp.CreateCell(cellNumTemp); + rowTemp33.SetCellValue(listModel[i].initialSales.ToString()); + rowTemp33.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp34 = rowTemp.CreateCell(cellNumTemp); + rowTemp34.SetCellValue(listModel[i].areaCode.ToString()); + rowTemp34.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp35 = rowTemp.CreateCell(cellNumTemp); + rowTemp35.SetCellValue(listModel[i].publisherId.ToString()); + rowTemp35.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp36 = rowTemp.CreateCell(cellNumTemp); + rowTemp36.SetCellValue(listModel[i].approverId.ToString()); + rowTemp36.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp37 = rowTemp.CreateCell(cellNumTemp); + rowTemp37.SetCellValue(listModel[i].auditStatus.ToString()); + rowTemp37.CellStyle = commonCellStyle; + cellNumTemp++; + + var rowTemp38 = rowTemp.CreateCell(cellNumTemp); + rowTemp38.SetCellValue(listModel[i].auditTime.ToString()); + rowTemp38.CellStyle = commonCellStyle; + cellNumTemp++; + + } + // 鍐欏叆鍒癳xcel + string webRootPath = _webHostEnvironment.WebRootPath; + string tpath = "/files/" + DateTime.Now.ToString("yyyy-MM-dd") + "/"; + string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "-CoreCmsGoods瀵煎嚭(鏌ヨ缁撴灉).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/CoreCmsGoods/DoSetisNomalVirtual/10 + /// <summary> + /// 璁剧疆鏄惁铏氭嫙鍟嗗搧 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("璁剧疆鏄惁铏氭嫙鍟嗗搧")] + public async Task<AdminUiCallBack> DoSetisNomalVirtual([FromBody]FMUpdateBoolDataByIntId entity) + { + var jm = new AdminUiCallBack(); + + var oldModel = await _DistributionGoodsServices.QueryByIdAsync(entity.id, false); + if (oldModel == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + return jm; + } + oldModel.isNomalVirtual = (bool)entity.data; + + var bl = await _DistributionGoodsServices.UpdateAsync(p => new CoreCmsGoods() { isNomalVirtual = oldModel.isNomalVirtual }, p => p.id == oldModel.id); + jm.code = bl ? 0 : 1; + jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; + + return jm; + } + #endregion + + #region 璁剧疆鏄惁涓婃灦============================================================ + // POST: Api/CoreCmsGoods/DoSetisMarketable/10 + /// <summary> + /// 璁剧疆鏄惁涓婃灦 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("璁剧疆鏄惁涓婃灦")] + public async Task<AdminUiCallBack> DoSetisMarketable([FromBody]FMUpdateBoolDataByIntId entity) + { + var jm = new AdminUiCallBack(); + + var oldModel = await _DistributionGoodsServices.QueryByIdAsync(entity.id, false); + if (oldModel == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + return jm; + } + oldModel.isMarketable = (bool)entity.data; + + var bl = await _DistributionGoodsServices.UpdateAsync(p => new CoreCmsGoods() { isMarketable = oldModel.isMarketable }, p => p.id == oldModel.id); + jm.code = bl ? 0 : 1; + jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; + + return jm; + } + #endregion + + #region 璁剧疆鏄惁鎺ㄨ崘============================================================ + // POST: Api/CoreCmsGoods/DoSetisRecommend/10 + /// <summary> + /// 璁剧疆鏄惁鎺ㄨ崘 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("璁剧疆鏄惁鎺ㄨ崘")] + public async Task<AdminUiCallBack> DoSetisRecommend([FromBody]FMUpdateBoolDataByIntId entity) + { + var jm = new AdminUiCallBack(); + + var oldModel = await _DistributionGoodsServices.QueryByIdAsync(entity.id, false); + if (oldModel == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + return jm; + } + oldModel.isRecommend = (bool)entity.data; + + var bl = await _DistributionGoodsServices.UpdateAsync(p => new CoreCmsGoods() { isRecommend = oldModel.isRecommend }, p => p.id == oldModel.id); + jm.code = bl ? 0 : 1; + jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; + + return jm; + } + #endregion + + #region 璁剧疆鏄惁鐑棬============================================================ + // POST: Api/CoreCmsGoods/DoSetisHot/10 + /// <summary> + /// 璁剧疆鏄惁鐑棬 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("璁剧疆鏄惁鐑棬")] + public async Task<AdminUiCallBack> DoSetisHot([FromBody]FMUpdateBoolDataByIntId entity) + { + var jm = new AdminUiCallBack(); + + var oldModel = await _DistributionGoodsServices.QueryByIdAsync(entity.id, false); + if (oldModel == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + return jm; + } + oldModel.isHot = (bool)entity.data; + + var bl = await _DistributionGoodsServices.UpdateAsync(p => new CoreCmsGoods() { isHot = oldModel.isHot }, p => p.id == oldModel.id); + jm.code = bl ? 0 : 1; + jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; + + return jm; + } + #endregion + + #region 璁剧疆鏄惁鍒犻櫎============================================================ + // POST: Api/CoreCmsGoods/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 _DistributionGoodsServices.QueryByIdAsync(entity.id, false); + if (oldModel == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + return jm; + } + oldModel.isDel = (bool)entity.data; + + var bl = await _DistributionGoodsServices.UpdateAsync(p => new CoreCmsGoods() { 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/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html index a1cdb74..b50f576 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/corecmsproducts/index.html @@ -236,7 +236,7 @@ function(data) { var field = data.field; searchwhere = field; - debugger + //鎵ц閲嶈浇 table.reloadData('LAY-app-CoreCmsbaifenProducts-tableBox',{ where: field }); }); diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/create.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/create.html new file mode 100644 index 0000000..d86c645 --- /dev/null +++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/create.html @@ -0,0 +1,396 @@ +<script type="text/html" template lay-done="layui.data.done(d);"> +<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsGoods-createForm" id="LAY-app-CoreCmsGoods-createForm"> + + <div class="layui-form-item"> + <label for="id" class="layui-form-label layui-form-required">鍟嗗搧ID</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="id" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ュ晢鍝両D" lay-reqText="璇疯緭鍏ュ晢鍝両D骞朵负鏁板瓧" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="bn" class="layui-form-label layui-form-required">鍟嗗搧鏉$爜</label> + <div class="layui-input-block"> + <input name="bn" lay-verType="tips" lay-verify="required|verifybn" class="layui-input" lay-reqText="璇疯緭鍏ュ晢鍝佹潯鐮�" placeholder="璇疯緭鍏ュ晢鍝佹潯鐮�"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="name" class="layui-form-label layui-form-required">鍟嗗搧鍚嶇О</label> + <div class="layui-input-block"> + <input name="name" lay-verType="tips" lay-verify="required|verifyname" class="layui-input" lay-reqText="璇疯緭鍏ュ晢鍝佸悕绉�" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="brief" class="layui-form-label layui-form-required">鍟嗗搧绠�浠�</label> + <div class="layui-input-block"> + <input name="brief" lay-verType="tips" lay-verify="required|verifybrief" class="layui-input" lay-reqText="璇疯緭鍏ュ晢鍝佺畝浠�" placeholder="璇疯緭鍏ュ晢鍝佺畝浠�"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="image" class="layui-form-label layui-form-required">缂╃暐鍥�</label> + <div class="layui-input-inline"> + <input name="image" id="imageInput" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="璇蜂笂浼犵缉鐣ュ浘" lay-reqText="璇蜂笂浼犵缉鐣ュ浘" /> + </div> + <div class="layui-input-inline"> + <img class="coreshop-upload-img" id="viewImgBoximage" src="{{ layui.setter.noImagePicUrl }}"> + <button type="button" class="layui-btn" id="upBtnimage" lay-active="doCropperImg">涓婁紶鍥剧墖</button> + </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"> + <label for="video" class="layui-form-label layui-form-required">瑙嗛</label> + <div class="layui-input-block"> + <input name="video" lay-verType="tips" lay-verify="required|verifyvideo" class="layui-input" lay-reqText="璇疯緭鍏ヨ棰�" placeholder="璇疯緭鍏ヨ棰�"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="productsDistributionType" class="layui-form-label layui-form-required">浣i噾鍒嗛厤鏂瑰紡</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="productsDistributionType" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ヤ剑閲戝垎閰嶆柟寮�" lay-reqText="璇疯緭鍏ヤ剑閲戝垎閰嶆柟寮忓苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="goodsCategoryId" class="layui-form-label layui-form-required">鍟嗗搧鍒嗙被</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="goodsCategoryId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ュ晢鍝佸垎绫�" lay-reqText="璇疯緭鍏ュ晢鍝佸垎绫诲苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="goodsTypeId" class="layui-form-label layui-form-required">鍟嗗搧绫诲埆</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="goodsTypeId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ュ晢鍝佺被鍒�" lay-reqText="璇疯緭鍏ュ晢鍝佺被鍒苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="goodsSkuIds" class="layui-form-label layui-form-required">sku搴忓垪</label> + <div class="layui-input-block"> + <input name="goodsSkuIds" lay-verType="tips" lay-verify="required|verifygoodsSkuIds" class="layui-input" lay-reqText="璇疯緭鍏ku搴忓垪" placeholder="璇疯緭鍏ku搴忓垪"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="goodsParamsIds" class="layui-form-label layui-form-required">鍙傛暟搴忓垪</label> + <div class="layui-input-block"> + <input name="goodsParamsIds" lay-verType="tips" lay-verify="required|verifygoodsParamsIds" class="layui-input" lay-reqText="璇疯緭鍏ュ弬鏁板簭鍒�" placeholder="璇疯緭鍏ュ弬鏁板簭鍒�"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="brandId" class="layui-form-label layui-form-required">鍝佺墝</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="brandId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ュ搧鐗�" lay-reqText="璇疯緭鍏ュ搧鐗屽苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item" pane> + <label for="isNomalVirtual" class="layui-form-label layui-form-required">鏄惁铏氭嫙鍟嗗搧</label> + <div class="layui-input-block"> + <input type="checkbox" lay-filter="switch" name="isNomalVirtual" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴"> + </div> + </div> + + <div class="layui-form-item" pane> + <label for="isMarketable" class="layui-form-label layui-form-required">鏄惁涓婃灦</label> + <div class="layui-input-block"> + <input type="checkbox" lay-filter="switch" name="isMarketable" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴"> + </div> + </div> + + <div class="layui-form-item"> + <label for="unit" class="layui-form-label layui-form-required">鍟嗗搧鍗曚綅</label> + <div class="layui-input-block"> + <input name="unit" lay-verType="tips" lay-verify="required|verifyunit" class="layui-input" lay-reqText="璇疯緭鍏ュ晢鍝佸崟浣�" placeholder="璇疯緭鍏ュ晢鍝佸崟浣�"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="intro" class="layui-form-label layui-form-required">鍟嗗搧璇︽儏</label> + <div class="layui-input-block"> + <input name="intro" lay-verType="tips" lay-verify="required" class="layui-input" lay-reqText="璇疯緭鍏ュ晢鍝佽鎯�" placeholder="璇疯緭鍏ュ晢鍝佽鎯�" /> + </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"> + <label for="parameters" class="layui-form-label layui-form-required">鍙傛暟搴忓垪鍖�</label> + <div class="layui-input-block"> + <input name="parameters" lay-verType="tips" lay-verify="required" class="layui-input" lay-reqText="璇疯緭鍏ュ弬鏁板簭鍒楀寲" placeholder="璇疯緭鍏ュ弬鏁板簭鍒楀寲" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="commentsCount" class="layui-form-label layui-form-required">璇勮娆℃暟</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="commentsCount" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ヨ瘎璁烘鏁�" lay-reqText="璇疯緭鍏ヨ瘎璁烘鏁板苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="viewCount" class="layui-form-label layui-form-required">娴忚娆℃暟</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="viewCount" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ユ祻瑙堟鏁�" lay-reqText="璇疯緭鍏ユ祻瑙堟鏁板苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="buyCount" class="layui-form-label layui-form-required">璐拱娆℃暟</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="buyCount" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ヨ喘涔版鏁�" lay-reqText="璇疯緭鍏ヨ喘涔版鏁板苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="uptime" class="layui-form-label layui-form-required">涓婃灦鏃堕棿</label> + <div class="layui-input-block"> + <input name="uptime" id="createTime-CoreCmsGoods-uptime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏ヤ笂鏋舵椂闂�" lay-reqText="璇疯緭鍏ヤ笂鏋舵椂闂�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="downtime" class="layui-form-label layui-form-required">涓嬫灦鏃堕棿</label> + <div class="layui-input-block"> + <input name="downtime" id="createTime-CoreCmsGoods-downtime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏ヤ笅鏋舵椂闂�" lay-reqText="璇疯緭鍏ヤ笅鏋舵椂闂�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="sort" class="layui-form-label layui-form-required">鍟嗗搧鎺掑簭</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="sort" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ュ晢鍝佹帓搴�" lay-reqText="璇疯緭鍏ュ晢鍝佹帓搴忓苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="labelIds" class="layui-form-label layui-form-required">鏍囩id閫楀彿鍒嗛殧</label> + <div class="layui-input-block"> + <input name="labelIds" lay-verType="tips" lay-verify="required|verifylabelIds" class="layui-input" lay-reqText="璇疯緭鍏ユ爣绛緄d閫楀彿鍒嗛殧" placeholder="璇疯緭鍏ユ爣绛緄d閫楀彿鍒嗛殧"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="newSpec" class="layui-form-label layui-form-required">鑷畾涔夎鏍煎悕绉�</label> + <div class="layui-input-block"> + <input name="newSpec" lay-verType="tips" lay-verify="required" class="layui-input" lay-reqText="璇疯緭鍏ヨ嚜瀹氫箟瑙勬牸鍚嶇О" placeholder="璇疯緭鍏ヨ嚜瀹氫箟瑙勬牸鍚嶇О" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="openSpec" class="layui-form-label layui-form-required">寮�鍚鍒�</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="openSpec" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ュ紑鍚鍒�" lay-reqText="璇疯緭鍏ュ紑鍚鍒欏苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="createTime" class="layui-form-label layui-form-required">鍒涘缓鏃堕棿</label> + <div class="layui-input-block"> + <input name="createTime" id="createTime-CoreCmsGoods-createTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" lay-reqText="璇疯緭鍏ュ垱寤烘椂闂�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="updateTime" class="layui-form-label layui-form-required">鏇存柊鏃堕棿</label> + <div class="layui-input-block"> + <input name="updateTime" id="createTime-CoreCmsGoods-updateTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" lay-reqText="璇疯緭鍏ユ洿鏂版椂闂�" /> + </div> + </div> + + <div class="layui-form-item" pane> + <label for="isRecommend" class="layui-form-label layui-form-required">鏄惁鎺ㄨ崘</label> + <div class="layui-input-block"> + <input type="checkbox" lay-filter="switch" name="isRecommend" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴"> + </div> + </div> + + <div class="layui-form-item" pane> + <label for="isHot" class="layui-form-label layui-form-required">鏄惁鐑棬</label> + <div class="layui-input-block"> + <input type="checkbox" lay-filter="switch" name="isHot" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴"> + </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="initialSales" class="layui-form-label layui-form-required">鍒濆閿�閲�</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="initialSales" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏ュ垵濮嬮攢閲�" lay-reqText="璇疯緭鍏ュ垵濮嬮攢閲忓苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="areaCode" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input name="areaCode" lay-verType="tips" lay-verify="required|verifyareaCode" class="layui-input" lay-reqText="璇疯緭鍏�" placeholder="璇疯緭鍏�"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="publisherId" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="publisherId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏�" lay-reqText="璇疯緭鍏ュ苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="approverId" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="approverId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏�" lay-reqText="璇疯緭鍏ュ苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="auditStatus" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="auditStatus" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="璇疯緭鍏�" lay-reqText="璇疯緭鍏ュ苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="auditTime" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input name="auditTime" id="createTime-CoreCmsGoods-auditTime" type="text" lay-verType="tips" lay-verify="required|datetime" 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-CoreCmsGoods-createForm-submit" id="LAY-app-CoreCmsGoods-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; + + //缂╃暐鍥惧浘鐗囪鍓笂浼� + $('#upBtnimage').click(function () { + cropperImg.cropImg({ + aspectRatio: 1 / 1, + imgSrc: $('#viewImgBoximage').attr('src'), + onCrop: function (data) { + var loadIndex = layer.load(2); + coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) { + if (0 === res.code) { + $('#viewImgBoximage').attr('src', res.data.fileUrl); + $("#imageInput").val(res.data.fileUrl); + layer.msg(res.msg); + layer.close(loadIndex); + } else { + layer.close(loadIndex); + layer.msg(res.msg, { icon: 2, anim: 6 }); + } + }); + } + }); + }); + + //鍥鹃泦鍥剧墖瑁佸壀涓婁紶 + $('#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 }); + } + }); + } + }); + }); + + laydate.render({ + elem: '#createTime-CoreCmsGoods-uptime', + type: 'datetime', + value: new Date(), + fullPanel: true + }); + laydate.render({ + elem: '#createTime-CoreCmsGoods-downtime', + type: 'datetime', + value: new Date(), + fullPanel: true + }); + laydate.render({ + elem: '#createTime-CoreCmsGoods-createTime', + type: 'datetime', + value: new Date(), + fullPanel: true + }); + laydate.render({ + elem: '#createTime-CoreCmsGoods-updateTime', + type: 'datetime', + value: new Date(), + fullPanel: true + }); + laydate.render({ + elem: '#createTime-CoreCmsGoods-auditTime', + type: 'datetime', + value: new Date(), + fullPanel: true + }); + form.verify({ + + verifybn: [/^.{0,30}$/,'鍟嗗搧鏉$爜鏈�澶у彧鍏佽杈撳叆30浣嶅瓧绗�'], + verifyname: [/^.{0,200}$/,'鍟嗗搧鍚嶇О鏈�澶у彧鍏佽杈撳叆200浣嶅瓧绗�'], + verifybrief: [/^.{0,255}$/,'鍟嗗搧绠�浠嬫渶澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifyimage: [/^.{0,255}$/,'缂╃暐鍥炬渶澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifyvideo: [/^.{0,255}$/,'瑙嗛鏈�澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifygoodsSkuIds: [/^.{0,255}$/,'sku搴忓垪鏈�澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifygoodsParamsIds: [/^.{0,255}$/,'鍙傛暟搴忓垪鏈�澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifyunit: [/^.{0,20}$/,'鍟嗗搧鍗曚綅鏈�澶у彧鍏佽杈撳叆20浣嶅瓧绗�'], + verifylabelIds: [/^.{0,50}$/,'鏍囩id閫楀彿鍒嗛殧鏈�澶у彧鍏佽杈撳叆50浣嶅瓧绗�'], + verifyareaCode: [/^.{0,200}$/,'鏈�澶у彧鍏佽杈撳叆200浣嶅瓧绗�'], + }); + //閲嶈浇form + form.render(null, 'LAY-app-CoreCmsGoods-createForm'); + }) + }; +</script> diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/details.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/details.html new file mode 100644 index 0000000..6cfb173 --- /dev/null +++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/details.html @@ -0,0 +1,764 @@ + +<script type="text/html" template lay-done="layui.data.done(d);"> + <div class="layui-fluid addGoods"> + <div class="layui-row layui-col-space15"> + + <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsGoods-editForm" id="LAY-app-CoreCmsGoods-editForm"> + + <div class="layui-tab layui-tab-card" style="margin: 0 0 10px 0"> + <ul class="layui-tab-title"> + <li class="layui-this">鍩虹淇℃伅</li> + <li>鍥鹃泦/瑙嗛</li> + <li>SKU/璐у搧璁剧疆</li> + <li>鍙傛暟璁剧疆</li> + <li>浼氬憳鎶樻墸</li> + <li>鍟嗗搧璇︽儏</li> + </ul> + <div class="layui-tab-content" style="min-height: 500px;"> + <div class="layui-tab-item layui-show"> + <div class="layui-form-item"> + <label class="layui-form-label">鍟嗗搧鍚嶇О</label> + <div class="layui-input-inline layui-inline-100 layui-form-mid">{{d.params.data.model.name }}</div> + </div> + <div class="layui-form-item"> + <label for="goodsCategoryId" class="layui-form-label">鍟嗗搧鍒嗙被</label> + <div class="layui-input-inline layui-inline-6"> + <div id="goodsCategoryId_SelectCreateTree" class="ew-xmselect-tree" lay-verType="tips" lay-reqText="璇烽�夋嫨鍟嗗搧鍒嗙被"></div> + </div> + <label class="layui-form-label">鎵╁睍鍒嗙被锛�</label> + <div class="layui-input-inline layui-inline-10"> + <div id="goodsCategoryIdExtend_SelectCreateTree" class="xm-select-demo"></div> + </div> + </div> + <div class="layui-form-item"> + <label for="brandId" class="layui-form-label">鍝佺墝</label> + <div class="layui-input-inline layui-inline-6" id="brandIdView"> + <select name="goods[brandId]" id="brandId" disabled="disabled"> + <option value="0">鏃�</option> + {{# layui.each(d.params.data.brands, function(index, item){ }} + <option value="{{ item.id }}" {{item.id===d.params.data.model.brandId?'selected="selected"':''}}>{{ item.name }}</option> + {{# }); }} + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">鍟嗗搧缂栫爜</label> + <div class="layui-input-inline layui-inline-100 layui-form-mid">{{d.params.data.model.bn }}</div> + + </div> + <div class="layui-form-item layui-form-text"> + <label class="layui-form-label">鍟嗗搧绠�浠�</label> + <div class="layui-input-inline layui-inline-100 layui-form-mid">{{d.params.data.model.brief }}</div> + </div> + <fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">鍏朵粬鍙傛暟</a></legend></fieldset> + + <div class="layui-form-item"> + + <label class="layui-form-label">鍗曚綅</label> + <div class="layui-input-inline layui-inline-3 layui-form-mid">{{d.params.data.model.unit }}</div> + + <label class="layui-form-label">鍟嗗搧鎺掑簭</label> + <div class="layui-input-inline layui-inline-3 layui-form-mid">{{d.params.data.model.sort }}</div> + + </div> + + + <div class="layui-form-item"> + <label for="isMarketable" class="layui-form-label layui-form-required">鏄惁涓婃灦</label> + <div class="layui-input-inline layui-inline-3"> + <input type="checkbox" lay-filter="switch" name="goods[isMarketable]" {{d.params.data.model.isMarketable ?'checked="checked"':'' }} id="isMarketable" lay-skin="switch" lay-text="涓婃灦|涓嬫灦" disabled="disabled"> + </div> + <label for="isNomalVirtual" class="layui-form-label layui-form-required">铏氭嫙鍟嗗搧</label> + <div class="layui-input-inline layui-inline-3"> + <input type="checkbox" lay-filter="switch" name="goods[isNomalVirtual]" {{d.params.data.model.isNomalVirtual ?'checked="checked"':'' }} id="isNomalVirtual" lay-skin="switch" lay-text="鏄瘄鍚�" disabled="disabled"> + </div> + <label for="isRecommend" class="layui-form-label layui-form-required">鏄惁鎺ㄨ崘</label> + <div class="layui-input-inline layui-inline-3"> + <input type="checkbox" lay-filter="switch" name="goods[isRecommend]" {{d.params.data.model.isRecommend ?'checked="checked"':'' }} id="isRecommend" lay-skin="switch" lay-text="鏄瘄鍚�" disabled="disabled"> + </div> + <label for="isHot" class="layui-form-label layui-form-required">鏄惁鐑棬</label> + <div class="layui-input-inline layui-inline-3"> + <input type="checkbox" lay-filter="switch" name="goods[isHot]" {{d.params.data.model.isHot ?'checked="checked"':'' }} id="isHot" lay-skin="switch" lay-text="鏄瘄鍚�" disabled="disabled"> + </div> + </div> + </div> + <div class="layui-tab-item"> + <fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">灏侀潰鍥�</a></legend></fieldset> + <div class="layui-form-item"> + <label class="layui-form-label" for="avatarImage">灏侀潰鍥撅細</label> + <div class="layui-input-inline layui-inline-12 layui-form-mid">{{d.params.data.model.image}}</div> + <div class="layui-input-inline"> + <div class="layui-upload"> + <img class="layui-upload-img" id="viewImgBox" src="{{d.params.data.model.image || layui.setter.noImagePicUrl }}"> + </div> + </div> + </div> + <fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">鍥鹃泦</a></legend></fieldset> + + <div class="layui-form-item"> + <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> + <div class="layui-upload-list" id="upload-more-list"></div> + </blockquote> + </div> + + <fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">濯掍綋</a></legend></fieldset> + <div class="layui-form-item"> + <label class="layui-form-label" for="video">瑙嗛锛�</label> + <div class="layui-input-inline layui-inline-12 layui-form-mid">{{d.params.data.model.video ||'鏃�'}}</div> + </div> + </div> + + <div class="layui-tab-item"> + <!--<blockquote class="layui-elem-quote"> + 1銆侀�夋嫨瀵瑰簲鐨勩�愬晢鍝佺被鍨嬨�戯紝灏嗚繘鍏ュSKU璐у搧妯″紡銆傚悓鏃跺鏋滅被鍒湁鍙傛暟锛屼篃灏嗚繘琛屾樉绀鸿缃��<br/> + 2銆佽缃SKU鍚庯紝鍟嗗搧鏈韩鐨勪环鏍煎彧鍋氬澶栧睍绀虹敤锛屽疄闄呬互杩涘叆鍟嗗搧璇︽儏閫夋嫨涓嶅悓璐у搧涓哄噯銆�<br/> + 3銆佽揣鍝丼KU缁勫悎灞炴�у�煎彧鏀寔锛氫腑鏂囥�佽嫳鏂囥�佹暟瀛椼�佸ぇ鍐欑鍙凤紝灏忓啓绗﹀彿涓変釜锛�-銆�/銆�.锛夛級<br/> + 4銆佽揣鍙峰繀椤讳负SN瀛楁瘝寮�澶�<br/> + 5銆佸鏋滀笉璁剧疆鍗曡揣鍝侀噸閲忥紝灏嗛粯璁や娇鐢ㄥ晢鍝侀噸閲忎负1涓崟浣嶇殑閲嶉噺銆� + </blockquote>--> + + <div class="layui-form-item"> + <label for="brandId" class="layui-form-label">浣i噾璁剧疆</label> + <div class="layui-input-inline layui-inline-6"> + {{# layui.each(d.params.data.productsDistributionType, function(index, item){ }} + <input type="radio" name="goods[productsDistributionType]" disabled="disabled" value="{{ item.value }}" title="{{ item.description }}" {{item.value===d.params.data.model.productsDistributionType?'checked="checked"':''}}> + {{# }); }} + </div> + </div> + <!--<div class="layui-form-item"> + <label class="layui-form-label">寮�鍚疭KU</label> + <div class="layui-input-inline"> + <button type="button" class="layui-btn layui-btn-danger layui-btn-sm" id="openSpecBtn" lay-active="openSpecBtn" data-id="typeInfo.id" style="margin-top:5px;margin-left: 10px;">鍚敤SKU</button> + </div> + </div>--> + + <div class="layui-form-item" id="goodsTypeIdViewBox" style="display: none;"> + <label for="goodsTypeId" class="layui-form-label">閫夋嫨SKU妯″瀷</label> + <div class="layui-input-inline layui-inline-10"> + <div id="goodsSku_SelectCreateTree" class="xm-select-demo"></div> + </div> + </div> + <div id="product-info"> + </div> + </div> + + <div class="layui-tab-item"> + <div class="layui-form-item"> + <label class="layui-form-label">鍙傛暟妯″瀷閫夋嫨</label> + <div class="layui-input-inline layui-inline-10"> + <div id="goodsParams_SelectCreateTree" class="xm-select-demo"></div> + </div> + </div> + <div id="parametersBox"> + </div> + </div> + + <div class="layui-tab-item"> + <blockquote class="layui-elem-quote"> + 浼氬憳浠蜂负0鏃讹紝浣跨敤榛樿浠锋牸銆傚ぇ浜�0鏃讹紝鍟嗗搧瀹為檯浠锋牸=璐у搧閿�鍞环-浼氬憳浠� + </blockquote> + <div class="layui-form-item"> + {{# layui.each(d.params.data.userGrade, function(index, item){ }} + <label class="layui-form-label layui-form-required">{{ item.title }}</label> + <div class="layui-input-inline layui-inline-3 layui-form-mid">{{getUserGradePrice(d.params.data.goodsGrades, item.id, item.value || 0)}}</div> + {{# }); }} + </div> + </div> + + <div class="layui-tab-item"> + <div class="layui-form-item layui-form-text"> + <div class="layui-input-block"> + {{-d.params.data.model.intro}} + </div> + </div> + </div> + </div> + </div> + + </div> + </div> + </div> +</script> + +<script id="getSpec_tpl" type="text/html"> + <table class="layui-table" lay-size="sm"> + <colgroup> + <col width="150"> + <col width="150"> + <col width="150"> + <col> + <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> + <th>榛樿璐у搧</th> + <th>鍥剧墖</th> + <th>璐у彿</th> + <th>SKU</th> + + <th>閲嶉噺(鍏�)</th> + <!-- <th>璧犻�佺Н鍒�</th> + <th>绉垎鏈�澶�<br />鍙姷閲戦</th> --> + <th>搴撳瓨鏁伴噺</th> + <th>鍐荤粨搴撳瓨</th> + <th style="width: 60px;">寤鸿闆跺敭浠�</th> + <th><i class="required-color">*</i>閿�鍞环</th> + <th>缁忛攢鍟嗕环</th> + <th>鎴愭湰浠�</th> + + <th style="width: 60px;">鎺ㄥ箍缁忛攢鍟嗛噰璐繑鐜�</th> + <th>鎺ㄥ箍鐢ㄦ埛璐拱杩旂幇</th> + <th style="width: 80px;">鏀寔瀹氬埗</th> + <!-- <th>浜岀骇杩旂幇</th> + <!-- <th>涓夌骇杩旂幇</th> --> + --> + </tr> + </thead> + <tbody id="productsTbody"> + {{# layui.each(d, function(index, item){ }} + <tr> + <td> + <input type="hidden" value="{{item.id}}" name="product[id][]" /> + <input type="hidden" value="{{item.goodsId || 0}}" name="product[goodsId][]" /> + <input type="checkbox" id="product[{{item.spesDesc}}][isDefalut]" name="product[isDefalut][]" title="鏄惁榛樿" {{item.isDefalut? 'checked="true"':''}} value="{{item.isDefalut? '1':'0'}}" class="isdefalut" lay-filter="isdefalut" disabled="disabled"> + </td> + <td class="spec-td"> + <div class="spec_image"> + <div class="spec_image_item"> + <!--<div class="del-img"> + x + </div>--> + <img src="{{ item.images && item.images !='null'? item.images : layui.setter.noImagePicUrl }}" id="productImagesSrc" style="width:60px;height:60px"> + </div> + <input type="hidden" id="productImagesInput" name="product[images][]" value="{{item.images}}"> + </div> + </td> + <td> + {{item.sn}} + </td> + <td> + {{item.spesDesc}} + </td> + + <td> + {{item.weight}} + </td> + + <td class="have-add-td"> + {{item.stock}} + </td> + <td> + {{item.freezeStock}} + </td> + <td> + {{item.mktprice}} + </td> + <td> + {{item.price}} + </td> + + <td> + {{item.distributionPrice}} + </td> + <td> + {{item.costprice}} + </td> + <td> + {{item.distributionCutMoney}} + </td> + <td> + {{item.cutMoney}} + </td> + {{#if (item.isCustomizable == true){}} + <td style="color: red;">鏄�</td> + {{#}else{}} + <td>鍚�</td> + {{#}}} + <!-- <td> + {{item.levelOne}} + </td> + <td> + {{item.levelTwo}} + </td> + <td> + {{item.levelThree}} + </td> --> + </tr> + {{# }); }} + </tbody> + </table> +</script> + + +<script id="params_tpl" type="text/html"> + + {{# if(d.goodsParams){ }} + <blockquote class="layui-elem-quote"> + {{# layui.each(d.goodsParams, function(index, item){ }} + <div class="layui-form-item" {{#if(item.type && item.type!='text'){}} pane {{# } }}> + <label class="layui-form-label">{{item.name}}</label> + <div class="layui-input-block"> + {{# if(item.type && item.type==='radio'){ }} + {{# layui.each(layui.coreHelper.stringToArray(item.value), function(indexRadio, itemRadio){ }} + <input type="radio" name="paramsValue[{{index}}]" value="{{itemRadio}}" title="{{itemRadio}}" {{ setRadioParameters(d.arrParameters, item.id , itemRadio) ?'checked':'' }} lay-verType="tips" lay-verify="required" disabled="disabled"> + {{# }); }} + {{# } else if (item.type && item.type==='checkbox'){ }} + {{# layui.each(layui.coreHelper.stringToArray(item.value), function(indexCheckbox, itemCheckbox){ }} + <input type="checkbox" name="paramsValue[{{index}}][]" value="{{itemCheckbox}}" lay-skin="primary" {{ setCheckboxParameters(d.arrParameters, item.id , itemCheckbox) ?'checked':'' }} title="{{itemCheckbox}}" disabled="disabled"> + {{# }); }} + {{# } else if (item.type && item.type==='text'){ }} + <input type="text" name="paramsValue[{{index}}]" value="{{setTextParameters(d.arrParameters, item.id)}}" class="layui-input" disabled="disabled"> + {{# } else { }} + {{# } }} + </div> + </div> + {{# }); }} + </blockquote> + {{# } }} +</script> + +<script id="sku_tpl" type="text/html"> + <form id="spec_form"> + <div id="spec_select" style="display: none"> + <blockquote class="layui-elem-quote"> + {{# if(d.goodsTypeSpec){ }} + {{# layui.each(d.goodsTypeSpec, function(index, item){ }} + <div class="layui-card"> + <div class="layui-card-header">{{item.name}}</div> + <div class="layui-card-body"> + <div class="layui-form-item"> + {{# layui.each(item.specValues, function(indexValue, itemValue){ }} + <div class="spec-item"> + <div class="checkboxBox"> + <input type="checkbox" name="selectSpec&&{{itemValue.id}}&&{{item.name}}" value="{{itemValue.value}}" lay-skin="switch" {{isSelectedTypeSpec(d.model.spesDesc, itemValue.id,item.name)?'checked="checked"':''}} lay-filter="spec_select" class="spec-select" lay-text="鍚敤|鍏抽棴" disabled="disabled"> + </div> + <div class="layui-input-inline layui-inline-3 layui-form-mid">{{getSelectedTypeSpecValue(d.model.newSpec, itemValue.id, itemValue.value)}}</div> + </div> + {{# }); }} + </div> + </div> + </div> + {{# }); }} + {{# } }} + </blockquote> + </div> + <div id="more_spec"></div> + </form> +</script> + +<script id="image_tpl" type="text/html"> + {{# layui.each(d, function(index, item){ }} + <div class="imgdiv"> + <img src="{{ item }}" class="layui-upload-img" onclick='layui.coreHelper.viewImage("{{ item }}")' style="width: 100px;height:100px;"> + </div> + {{# }); }} +</script> + + +<script> + var $; + var debug = layui.setter.debug; + var types; + var imgs = []; + var thumbnailBtn; + var _that = this; + var enptyProducts; + var oldSingleData = {}; + var oldMultitermData = []; + var tempMultitermData = []; + + layui.data.done = function (d) { + types = d.params.data.types; + //寮�鍚皟璇曟儏鍐典笅鑾峰彇鎺ュ彛璧嬪�兼暟鎹� + if (debug) { console.log(d.data); } + layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'dtree', 'view', 'laytpl', 'xmSelect', 'util', 'cropperImg'], + function () { + $ = layui.$; + var form = layui.form + , admin = layui.admin + , laydate = layui.laydate + , upload = layui.upload + , dtree = layui.dtree + , view = layui.view + , laytpl = layui.laytpl + , xmSelect = layui.xmSelect + , util = layui.util + , cropperImg = layui.cropperImg + , coreHelper = layui.coreHelper; + var element = layui.element; + + + + //鍒濆鍖栧浘鐗� + var defaultImg = 'no'; + if (d.params.data.model.images) { + imgs = d.params.data.model.images.split(','); + defaultImg = imgs[0]; + $('#imageIds').val(imgs); + var getTpl = image_tpl.innerHTML, viewBox = document.getElementById('upload-more-list'); + laytpl(getTpl).render(imgs, function (html) { + viewBox.innerHTML = html; + }); + } + + //鍒濆鍖栧凡缁忕‘璁ゅ晢鍝丼KU + if (d.params.data.goodsTypeSpec) { + var tmpData = { goodsTypeSpec: d.params.data.goodsTypeSpec, model: d.params.data.model }; + //璧嬪�煎晢鍝佸弬鏁版暟鎹� + var getTpl = sku_tpl.innerHTML, viewBox = document.getElementById('product-info'); + laytpl(getTpl).render(tmpData, function (html) { + viewBox.innerHTML = html; + }); + } + + var arrParameters = []; + //鍒濆鍖栧凡缁忕‘璁ゅ晢鍝佸弬鏁� + if (d.params.data.goodsParams) { + if (d.params.data.model.parameters) { + var arr = d.params.data.model.parameters.split('|'); + for (var i = 0; i < arr.length; i++) { + var arrChild = arr[i].split(':'); + arrParameters.push(arrChild); + } + } + var tmpData = { goodsParams: d.params.data.goodsParams, arrParameters: arrParameters }; + //璧嬪�煎晢鍝佸弬鏁版暟鎹� + var getTpl = params_tpl.innerHTML, viewBox = document.getElementById('parametersBox'); + laytpl(getTpl).render(tmpData, function (html) { + viewBox.innerHTML = html; + }); + } + + + //鍒濆鍖栨暟鎹� + enptyProducts = { + id: 0, + goodsId: 0, + isDefalut: true, + images: layui.setter.noImagePicUrl, + sn: layui.coreHelper.getSN('SN'), + spesDesc: "", + stock: 1000, + weight: 0, + price: 0, + costprice: 0, + mktprice: 0, + levelOne: 0, + levelTwo: 0, + levelThree: 0, + } + oldMultitermData = d.params.data.products; + if (d.params.data.model.openSpec == 1) { + oldSingleData = enptyProducts; + tempMultitermData = d.params.data.products; + } else { + oldSingleData = d.params.data.products[0]; + } + + //鍒濆鍖栧晢鍝佷俊鎭� + var getTpl = getSpec_tpl.innerHTML, viewBox = document.getElementById('more_spec'); + var tmpData = oldMultitermData; + laytpl(getTpl).render(tmpData, function (html) { + viewBox.innerHTML = html; + }); + $('#productsCount').val(oldMultitermData.length); + + if (d.params.data.model.openSpec == 1) { + $("#spec_select").show(); + $("#parametersBox").show(); + $("#goodsTypeIdViewBox").show(); + var btn = $('#openSpecBtn'); + $(btn).html("鍙栨秷SKU"); + } + + // 娓叉煋鍟嗗搧鍒嗙被 + var insXmSelGoodsCategoryId = xmSelect.render({ + el: '#goodsCategoryId_SelectCreateTree', + height: '250px', + data: d.params.data.categories.data, + initValue: d.params.data.model ? [d.params.data.model.goodsCategoryId] : [], + //model: { label: { type: 'text' } }, + name: 'goodsCategoryId', + prop: { + name: 'title', + value: 'id' + }, + layVerify: 'required', + layVerType: 'msg', + radio: true, + clickClose: true, + disabled: true, + tree: { + show: true, + indent: 15, + strict: false, + expandedKeys: true + } + }); + //娓叉煋鍟嗗搧鎵╁睍鍒嗙被 + + var arr = []; + if (d.params.data.categoryExtend.length > 0) { + for (var i = 0; i < d.params.data.categoryExtend.length; i++) { + arr.push(d.params.data.categoryExtend[i].goodsCategroyId); + } + } + var insXmSelGoodsCategoryIdExtend = xmSelect.render({ + el: '#goodsCategoryIdExtend_SelectCreateTree', + height: '250px', + data: d.params.data.categories.data, + //initValue: mData ? [mData.parentId] : [], + //model: { label: { type: 'text' } }, + name: 'goodsCategoryIdExtend', + prop: { + name: 'title', + value: 'id' + }, + disabled: true, + initValue: arr, + //layVerify: 'required', + //layVerType: 'msg', + //radio: false, + //clickClose: true, + autoRow: true, + + tree: { + //鏄惁鏄剧ず鏍戠姸缁撴瀯 + show: true, + //鏄惁灞曠ず涓夎鍥炬爣 + showFolderIcon: true, + //鏄惁鏄剧ず铏氱嚎 + showLine: true, + //闂磋窛 + indent: 20, + //榛樿灞曞紑鑺傜偣鐨勬暟缁�, 涓� true 鏃�, 灞曞紑鎵�鏈夎妭鐐� + expandedKeys: true, + //鏄惁涓ユ牸閬靛畧鐖跺瓙妯″紡 + strict: false, + //鏄惁寮�鍚瀬绠�妯″紡 + simple: false, + } + }); + + var arrParams = []; + if (d.params.data.model.goodsParamsIds) { + arrParams = d.params.data.model.goodsParamsIds.split(','); + } + + //娓叉煋鍟嗗搧鎵╁睍鍒嗙被 + var insGoodsParams = xmSelect.render({ + el: '#goodsParams_SelectCreateTree', + height: '250px', + data: d.params.data.paramsList, + //model: { label: { type: 'text' } }, + name: 'goodsParamsIds', + prop: { + name: 'name', + value: 'id' + }, + disabled: true, + initValue: arrParams, + tree: { + //鏄惁鏄剧ず鏍戠姸缁撴瀯 + show: true, + //鏄惁灞曠ず涓夎鍥炬爣 + showFolderIcon: true, + //鏄惁鏄剧ず铏氱嚎 + showLine: true, + //闂磋窛 + indent: 20, + //榛樿灞曞紑鑺傜偣鐨勬暟缁�, 涓� true 鏃�, 灞曞紑鎵�鏈夎妭鐐� + expandedKeys: true, + //鏄惁涓ユ牸閬靛畧鐖跺瓙妯″紡 + strict: false, + //鏄惁寮�鍚瀬绠�妯″紡 + simple: false, + } + }); + + var arrSku = []; + if (d.params.data.model.goodsSkuIds) { + arrSku = d.params.data.model.goodsSkuIds.split(','); + } + + //娓叉煋鍟嗗搧鎵╁睍鍒嗙被 + var insgoodsSKU = xmSelect.render({ + el: '#goodsSku_SelectCreateTree', + height: '250px', + data: d.params.data.skuList, + //model: { label: { type: 'text' } }, + name: 'goodsSkuIds', + prop: { + name: 'name', + value: 'id' + }, + disabled: true, + initValue: arrSku, + tree: { + //鏄惁鏄剧ず鏍戠姸缁撴瀯 + show: true, + //鏄惁灞曠ず涓夎鍥炬爣 + showFolderIcon: true, + //鏄惁鏄剧ず铏氱嚎 + showLine: true, + //闂磋窛 + indent: 20, + //榛樿灞曞紑鑺傜偣鐨勬暟缁�, 涓� true 鏃�, 灞曞紑鎵�鏈夎妭鐐� + expandedKeys: true, + //鏄惁涓ユ牸閬靛畧鐖跺瓙妯″紡 + strict: false, + //鏄惁寮�鍚瀬绠�妯″紡 + simple: false, + } + }); + + function openSpecBox(is_open) { + if (is_open == '0') { + $("input[name=openSpec]").val("1"); + $("#spec_select").show(); + $("#goodsTypeIdViewBox").show(); + $("#openSpecBtn").html("鍙栨秷SKU"); + console.log("鍙栨秷SKU"); + + if (_that.tempMultitermData.length == 0) { + $('#more_spec').html(''); + $('#productsCount').val(0); + } else { + var getTpl = getSpec_tpl.innerHTML, viewBox = document.getElementById('more_spec'); + laytpl(getTpl).render(_that.tempMultitermData, function (html) { + viewBox.innerHTML = html; + }); + $('#productsCount').val(_that.tempMultitermData.length); + } + + } else { + $("input[name=openSpec]").val("0"); + $("#spec_select").hide(); + $("#goodsTypeIdViewBox").hide(); + $("#openSpecBtn").html("鍚敤SKU"); + console.log("鍚敤SKU"); + + var arr = []; + arr.push(_that.oldSingleData); + var getTpl = getSpec_tpl.innerHTML, viewBox = document.getElementById('more_spec'); + laytpl(getTpl).render(arr, function (html) { + viewBox.innerHTML = html; + }); + $('#productsCount').val(1); + } + form.render(); + } + + + form.render(); + + }) + }; + + //鍒犻櫎鍥剧墖 + function delImg(obj, imageUrl) { + var imgDiv = $(obj).parent().parent().parent(); + imgDiv.remove(); + var index = imgs.indexOf(imageUrl); + if (index > -1) { + imgs.splice(index, 1); + } + $('#imageIds').val(imgs); + } + //璁句负榛樿鍥� + function setDefault(obj, imageUrl) { + var imgDiv = $(obj).parent().parent().parent(); + $("#upload-more-list").prepend(imgDiv); + var index = imgs.indexOf(imageUrl); + if (index > -1) { + imgs.unshift(imgs.splice(index, 1)[0]); + } + $('#imageIds').val(imgs); + } + //鑾峰彇璁剧疆鍙傛暟鏂囧瓧鍐呭 + function setTextParameters(parameters, id) { + if (parameters) { + for (var i = 0; i < parameters.length; i++) { + if (parameters[i][0] == id) { + return parameters[i][1]; + } + } + } + return ''; + } + //鑾峰彇璁剧疆鍙傛暟鍗曢�夊唴瀹� + function setRadioParameters(parameters, id, value) { + if (parameters) { + for (var i = 0; i < parameters.length; i++) { + if (parameters[i][0] == id && parameters[i][1] == value) { + return true; + } + } + } + return false; + } + //鑾峰彇璁剧疆鍙傛暟澶嶉�夋鍐呭 + function setCheckboxParameters(parameters, id, value) { + if (parameters) { + for (var i = 0; i < parameters.length; i++) { + if (parameters[i][0] == id) { + var arr = parameters[i][1].split(','); + for (var j = 0; j < arr.length; j++) { + if (value == arr[j]) { + return true; + } + } + } + } + } + return false; + } + //鑾峰彇涓嶅悓浼氬憳绾у埆浠锋牸 + function getUserGradePrice(parameters, id, value) { + if (parameters) { + for (var i = 0; i < parameters.length; i++) { + if (parameters[i].gradeId == id) { + return parameters[i].gradePrice + } + } + return value; + } + return value; + } + //鍒ゆ柇SKU鏄惁閫変腑 + function isSelectedTypeSpec(parameters, id, value) { + if (parameters) { + var arr = parameters.split('|'); + for (var i = 0; i < arr.length; i++) { + var str = id + '&&' + value; + var child = arr[i].split(':'); + if (child[0] === str) { + return true; + } + } + return false; + } + return false; + } + function getSelectedTypeSpecValue(parameters, id, value) { + if (parameters) { + var arr = parameters.split('|'); + for (var i = 0; i < arr.length; i++) { + var child = arr[i].split(':'); + if (child[0] === id.toString()) { + return child[1]; + } + } + return value; + } + return value; + } +</script> \ No newline at end of file diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/edit.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/edit.html new file mode 100644 index 0000000..3bc82cd --- /dev/null +++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/edit.html @@ -0,0 +1,2094 @@ +<script type="text/html" template lay-done="layui.data.sendEditParams(d);"> + <div class="layui-row layui-col-space15"> + + <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsGoods-editForm" id="LAY-app-CoreCmsGoods-editForm"> + + <div class="layui-tab layui-tab-card" style="margin: 0 0 10px 0"> + <ul class="layui-tab-title"> + <li class="layui-this">鍩虹淇℃伅</li> + <li>鍥鹃泦/瑙嗛</li> + <li>璐у搧璁剧疆</li> + <li>鍟嗗搧璇︽儏</li> + </ul> + <div class="layui-tab-content" style="min-height: 500px;"> + + <div class="layui-tab-item layui-show"> + <input type="hidden" name="goods[id]" id="id" value="{{d.params.data.id }}" /> + <input type="hidden" name="goods[newSpec]" id="newSpec" value="{{d.params.data.newSpec }}" /> + <input type="hidden" name="goods[spesDesc]" id="spesDesc" value="{{d.params.data.spesDesc }}" /> + + <div class="layui-form-item"> + <label for="name" class="layui-form-label layui-form-required">鍟嗗搧鍚嶇О</label> + <div class="layui-input-block"> + <input name="goods[name]" id="name" lay-verType="tips" lay-verify="required|verifyname" value="{{d.params.data.name }}" class="layui-input" lay-reqText="璇疯緭鍏ュ晢鍝佸悕绉�,涓嶈秴杩�200涓瓧绗﹀唴瀹�" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�,涓嶈秴杩�200涓瓧绗﹀唴瀹�" /> + </div> + </div> + <div class="layui-form-item"> + <label for="goodsCategoryId" class="layui-form-label layui-form-required">鍟嗗搧鍒嗙被</label> + <div class="layui-input-inline layui-inline-6"> + <div id="goodsCategoryId_SelectCreateTree" class="ew-xmselect-tree" lay-verType="tips" lay-reqText="璇烽�夋嫨鍟嗗搧鍒嗙被"></div> + </div> + <!-- <div class="layui-form-mid layui-word-aux"> + <button href="javascript:void(0);" class="add-class layui-btn layui-btn-normal layui-btn-xs">娣诲姞鍒嗙被</button> + </div> --> + <label class="layui-form-label">鎵╁睍鍒嗙被锛�</label> + <div class="layui-input-inline layui-inline-10"> + <div id="goodsCategoryIdExtend_SelectCreateTree" class="xm-select-demo"></div> + </div> + </div> + <div class="layui-form-item"> + <label for="brandId" class="layui-form-label">鍝佺墝</label> + <div class="layui-input-inline layui-inline-6" id="brandIdView"> + <select name="goods[brandId]" id="brandId"> + <option value="0">璇烽�夋嫨</option> + {{# layui.each(d.params.initdata.brands, function(index, item){ }} + <option value="{{ item.id }}" {{item.id===d.params.data.brandId?'selected="selected"':''}}>{{ item.name }}</option> + {{# }); }} + </select> + </div> + <!-- <div class="layui-form-mid layui-word-aux"> + <button href="javascript:void(0);" class="add-brand layui-btn layui-btn-normal layui-btn-xs">娣诲姞鍝佺墝</button> + </div> --> + </div> + + <div class="layui-form-item"> + <label for="bn" class="layui-form-label layui-form-required">鍟嗗搧缂栫爜</label> + <div class="layui-input-inline layui-inline-6"> + <input name="goods[bn]" id="bn" lay-verType="tips" lay-verify="required|verifybn" value="{{d.params.data.bn }}" class="layui-input" lay-reqText="璇疯緭鍏ュ晢鍝佺紪鐮�" placeholder="璇疯緭鍏ヤ笉瓒呰繃30涓瓧绗﹀唴瀹�" /> + </div> + <div class="layui-form-mid layui-word-aux"> + <button href="javascript:void(0);" class="create-bn layui-btn layui-btn-normal layui-btn-xs" lay-active="createbn">鐢熸垚缂栫爜</button> + </div> + </div> + <div class="layui-form-item layui-form-text"> + <label for="brief" class="layui-form-label layui-form-required">鍟嗗搧绠�浠�</label> + <div class="layui-input-block"> + <textarea name="goods[brief]" id="brief" lay-verType="tips" lay-verify="required" class="layui-textarea" lay-reqText="绠�鍗曠殑浠嬬粛锛屼竴鑸帶鍒跺湪100瀛椾互鍐�,璇疯緭鍏ヤ笉瓒呰繃255涓瓧绗﹀唴瀹�" placeholder="绠�鍗曠殑浠嬬粛锛屼竴鑸帶鍒跺湪100瀛椾互鍐�,璇疯緭鍏ヤ笉瓒呰繃255涓瓧绗﹀唴瀹�">{{d.params.data.brief }}</textarea> + </div> + </div> + <fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">鍏朵粬鍙傛暟</a></legend></fieldset> + + <div class="layui-form-item"> + <label for="unit" class="layui-form-label layui-form-required">鍗曚綅</label> + <div class="layui-input-inline layui-inline-2"> + <input name="goods[unit]" id="unit" lay-verType="tips" lay-verify="required|verifyunit" value="{{d.params.data.unit }}" class="layui-input" lay-reqText="璇疯緭鍏ュ崟浣�" placeholder="璇疯緭鍏ュ崟浣�" /> + </div> + + <label for="sort" class="layui-form-label layui-form-required">鍟嗗搧鎺掑簭</label> + <div class="layui-input-inline layui-inline-2"> + <input type="number" min="0" max="999999" name="goods[sort]" id="sort" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.sort }}" placeholder="璇疯緭鍏ュ晢鍝佹帓搴�" lay-reqText="璇疯緭鍏ュ晢鍝佹帓搴忓苟涓烘暟瀛�" /> + </div> + </div> + <div class="layui-form-item"> + <label for="initialSales" class="layui-form-label layui-form-required">鍒濆閿�閲�</label> + <div class="layui-input-inline layui-inline-2"> + <input type="number" min="0" max="999999" name="goods[initialSales]" id="initialSales" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.initialSales }}" placeholder="璇疯緭鍏ュ垵濮嬮攢閲�" lay-reqText="璇疯緭鍏ュ垵濮嬮攢閲忓苟涓烘暟瀛�" /> + </div> + + <label for="isMarketable" class="layui-form-label layui-form-required">鏄惁涓婃灦</label> + <div class="layui-input-inline layui-inline-2"> + <input type="checkbox" lay-filter="switch" name="goods[isMarketable]" {{d.params.data.isMarketable ?'checked="checked"':'' }} id="isMarketable" lay-skin="switch" lay-text="涓婃灦|涓嬫灦"> + </div> + + <label for="isRecommend" class="layui-form-label layui-form-required">鏄惁鎺ㄨ崘</label> + <div class="layui-input-inline layui-inline-2"> + <input type="checkbox" lay-filter="switch" name="goods[isRecommend]" {{d.params.data.isRecommend ?'checked="checked"':'' }} id="isRecommend" lay-skin="switch" lay-text="鏄瘄鍚�"> + </div> + + + <label for="isHot" class="layui-form-label layui-form-required">鏄惁鐑棬</label> + <div class="layui-input-inline layui-inline-2"> + <input type="checkbox" lay-filter="switch" name="goods[isHot]" {{d.params.data.isHot ?'checked="checked"':'' }} id="isHot" lay-skin="switch" lay-text="鏄瘄鍚�"> + </div> + </div> + <div class="layui-form-item"> + <label for="isHot" class="layui-form-label layui-form-required">瀹℃牳鐘舵��</label> + <div class="layui-input-block"> + <select name="goods[brandId]" id="brandId"> + <option value="0">璇烽�夋嫨瀹℃牳鐘舵��</option> + {{# layui.each(d.params.initdata.auditStatusType, function(index, item){ }} + <option value="{{ item.value }}" {{item.value===d.params.data.auditStatus?'selected="selected"':''}}>{{ item.description }}</option> + {{# }); }} + </select> + </div> + + <blockquote class="layui-elem-quote"> + 瀹℃牳鏃惰娉ㄦ剰璋冩暣璐у搧璁剧疆涓殑缁忛攢鍟嗚繑鐐规暟鎹� + </blockquote> + + <div class="layui-form-item" > + <label for="isHot" class="layui-form-label">淇敼/鎷掔粷寤鸿</label> + <div class="layui-input-block"> + <textarea style="height: 60px;" class="layui-input" name="goods[auditRejectedReason]" value={{d.params.data.auditRejectedReason??''}}/> + + </div> + + + + </div> + </div> + </div> + <div class="layui-tab-item"> + <blockquote class="layui-elem-quote"> + 璇烽�夋嫨灏忎簬5M鐨勫浘鐗囪繘琛岃鍓笂浼� + </blockquote> + + <fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">灏侀潰鍥�</a></legend></fieldset> + <div class="layui-form-item"> + <label class="layui-form-label" for="avatarImage">灏侀潰鍥撅細</label> + <div class="layui-input-inline layui-inline-10"> + <input name="goods[image]" id="goodImage" lay-verify="required" size="15" value="{{d.params.data.image }}" autocomplete="off" class="layui-input" lay-reqText="璇疯緭鍏ャ�愮缉鐣ュ浘銆�" /> + </div> + <div class="layui-input-inline"> + <div class="layui-upload"> + <button type="button" class="layui-btn" id="upBtn">瑁佸壀涓婁紶</button> + <button type="button" class="layui-btn" id="upBtnOriginal">鍘熷浘涓婁紶</button> + <div class="layui-upload-list"> + <img class="layui-upload-img" id="viewImgBox" src="{{d.params.data.image || layui.setter.noImagePicUrl }}"> + <p id="viewTextBox"></p> + </div> + </div> + </div> + </div> + <fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">鍥鹃泦</a></legend></fieldset> + <div class="layui-form-item"> + <div class="layui-input-inline layui-inline-10"> + <input type="hidden" name="goods[images]" id="imageIds" value="{{d.params.data.images }}" class="layui-input" placeholder="璇蜂笂浼犵缉鐣ュ浘" lay-reqText="璇蜂笂浼犵缉鐣ュ浘" /> + <button type="button" class="layui-btn layui-btn-sm" id="upBtnimageIds"><i class="layui-icon">顧�</i>鍗曞浘瑁佸壀涓婁紶</button> + <button type="button" class="layui-btn layui-btn-sm" id="upBtnimageIdsOriginal"><i class="layui-icon">顧�</i>鍗曞浘鍘熷浘涓婁紶</button> + <button type="button" class="layui-btn layui-bg-orange layui-btn-sm" id="upBatchBtn"><i class="layui-icon">顧�</i>澶氬浘鎵归噺涓婁紶锛堟湭瑁佸壀锛�</button> + </div> + <div class="layui-form-mid"> + 鍥鹃泦锛歔寤鸿鏁伴噺鎺у埗鍦�10寮犱互鍐匽锛� + </div> + </div> + <div class="layui-form-item"> + <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;"> + <div class="layui-upload-list" id="upload-more-list"></div> + </blockquote> + </div> + + <fieldset class="layui-elem-field layui-field-title site-title"><legend><a name="compress">濯掍綋</a></legend></fieldset> + <div class="layui-form-item"> + <label class="layui-form-label" for="video">瑙嗛锛�</label> + <div class="layui-input-inline layui-inline-10"> + <input name="goods[video]" size="15" autocomplete="off" class="layui-input" id="videoInput" value="{{d.params.data.video ||'' }}" lay-reqText="璇疯緭鍏ャ�愯棰戝湴鍧�銆�" /> + </div> + <button type="button" class="layui-btn layui-btn-sm" id="upVideoBtn"><i class="layui-icon">顧�</i>涓婁紶瑙嗛</button> + <div class="layui-form-mid">鏀寔甯哥敤瑙嗛鎾斁鏍煎紡銆�</div> + </div> + </div> + + <div class="layui-tab-item"> + <div id="product-info"> + </div> + </div> + <div class="layui-tab-item"> + <div class="layui-form-item layui-form-text"> + <div class="layui-input-block"> + <div class="document-editor" > + <div class="toolbar-container" id="toolbar-container"></div> + <div class="content-container"> + <div id="editor"></div> + </div> + </div> + </div> + </div> + </div> + </div> + </div> + + </div> + </div> +</script> +<!-- 璐у搧妯$増--> +<script id="getSpec_tpl" type="text/html"> + <table class="layui-table" lay-size="sm"> + <colgroup> + <col width="150" /> + <col width="150" /> + <col width="150" /> + <col width="150"/> + <col width="80" /> + <col width="80" /> + <col width="80" /> + <col width="80" /> + <col width="80" /> + <col width="80" /> + <col width="100" /> + <col width="100" /> + + </colgroup> + <thead> + <tr> + <th>榛樿璐у搧</th> + <th>鍥剧墖</th> + <th>璐у搧缂栫爜</th> + + <th>閲嶉噺(鍏�)</th> + <!-- <th>璧犻�佺Н鍒�</th> + <th>绉垎鏈�澶�<br />鍙姷閲戦</th> --> + <th>搴撳瓨鏁伴噺</th> + <th>鍐荤粨搴撳瓨</th> + <th style="width: 60px;">寤鸿闆跺敭浠�</th> + <th><i class="required-color">*</i>閿�鍞环</th> + <th>缁忛攢鍟嗕环</th> + <th>缁撶畻浠�</th> + + <th style="width: 60px;">鎺ㄥ箍缁忛攢鍟嗛噰璐繑鐜�</th> + <th>鎺ㄥ箍鐢ㄦ埛璐拱杩旂幇</th> + + <!-- <th>浜岀骇杩旂幇</th> + <th>涓夌骇杩旂幇</th> --> + + + + </tr> + </thead> + <tbody id="productsTbody"> + {{# layui.each(d.products, function(index, item){ }} + <tr> + <td> + <input type="hidden" value="{{item.id}}" name="product[id][]" /> + <input + type="hidden" + value="{{item.goodsId || 0}}" + name="product[goodsId][]" + /> + <input type="checkbox" id="product[{{item.spesDesc}}][isDefalut]" + name="product[isDefalut][]" title="鏄惁榛樿" {{item.isDefalut? + 'checked="true"':''}} value="{{item.isDefalut? '1':'0'}}" + class="isdefalut" lay-filter="isdefalut" disabled> + </td> + <td class="spec-td"> + <div + class="spec_image" + style="display: inline-block;width: 60px;overflow: hidden;" + > + <div class="spec_image_item"> + <!--<div class="del-img"> + x + </div>--> + <img + src="{{ item.images && item.images !='null'? item.images : layui.setter.noImagePicUrl }}" + id="productImagesSrc" + style="width:60px;height:60px" + /> + </div> + <input + type="hidden" + id="productImagesInput" + name="product[images][]" + value="{{item.images}}" + /> + </div> + <div style="display: inline-block;width: 60px;overflow: hidden;"> + <p> + <a + class="layui-btn layui-btn-xs upSpecImage" + style="margin-bottom: 10px;" + href="javascript:;" + >瑁佸壀涓婁紶</a + > + </p> + <p> + <a + class="layui-btn layui-btn-xs upSpecImageOriginal" + href="javascript:;" + >鍘熷浘涓婁紶</a + > + </p> + </div> + </td> + <td> + <input + type="text" + name="product[sn][]" + value="{{item.sn}}" + placeholder="璐у搧缂栫爜" + class="layui-input layui-inline-3" + /> + </td> + + <td> + <input + type="number" + name="product[weight][]" + value="{{item.weight}}" + placeholder="閲嶉噺" + class="layui-input layui-inline-1" + /> + </td> + + <td class="have-add-td"> + <input + type="number" + name="product[stock][]" + value="{{item.stock}}" + placeholder="搴撳瓨" + class="layui-input layui-inline-1 goods-stock" + /> + </td> + <td>{{item.freezeStock}}</td> + <td> + <input + type="text" + name="product[mktprice][]" + value="{{item.mktprice}}" + placeholder="寤鸿闆跺敭浠�" + class="layui-input layui-inline-1" + /> + </td> + <td> + <input + type="text" + name="product[price][]" + value="{{item.price}}" + placeholder="閿�鍞环" + class="layui-input layui-inline-1" + /> + </td> + <td> + <input + type="text" + name="product[distributionPrice][]" + value="{{item.distributionPrice||'0'}}" + placeholder="缁忛攢鍟嗕环" + class="layui-input layui-inline-1" + /> + </td> + <td> + <input + type="text" + name="product[costprice][]" + value="{{item.costprice}}" + placeholder="缁撶畻浠�" + class="layui-input layui-inline-1" + disabled + /> + </td> + + <td> + <input + type="text" + name="product[distributionCutMoney][]" + value="{{item.distributionCutMoney||'0'}}" + placeholder="鎺ㄥ箍缁忛攢鍟嗛噰璐繑鐜�" + class="layui-input layui-inline-1" + /> + </td> + <td> + <input + type="text" + name="product[cutMoney][]" + value="{{item.cutMoney||'0'}}" + placeholder="鎺ㄥ箍鏅�氱敤鎴疯喘涔拌繑鐜�" + class="layui-input layui-inline-1" + /> + </td> + + <!-- <td> + <input type="text" name="product[levelTwo][]" value="{{item.levelTwo}}" placeholder="浜岀骇杩旂幇" class="layui-input layui-inline-1"> + </td> + <td> + <input type="text" name="product[levelThree][]" value="{{item.levelThree}}" placeholder="涓夌骇杩旂幇" class="layui-input layui-inline-1"> + </td> --> + + + </tr> + {{# }); }} + </tbody> + </table> +</script> + +<script id="params_tpl" type="text/html"> + {{# if(d.goodsParams){ }} + <blockquote class="layui-elem-quote"> + {{# layui.each(d.goodsParams, function(index, item){ }} + <div + class="layui-form-item" + {{#if(item.type + && + item.type!="text" + ){}} + pane + {{# + } + }} + > + <label class="layui-form-label layui-form-required">{{item.name}}</label> + <div class="layui-input-block"> + <input + type="hidden" + name="paramsKey[{{index}}]" + value="{{item.id}}" + class="layui-input" + /> + <input + type="hidden" + name="paramsType[{{index}}]" + value="{{item.type}}" + class="layui-input" + /> + {{# if(item.type && item.type==='radio'){ }} + <input + type="hidden" + name="paramsValueCount[{{index}}]" + value="{{layui.coreHelper.stringToArrayLength(item.value)}}" + class="layui-input" + lay-verify="required" + lay-reqText="璇烽�夋嫨鍙傛暟锛歿{item.name}}" + /> + {{# layui.each(layui.coreHelper.stringToArray(item.value), + function(indexRadio, itemRadio){ }} <input type="radio" + name="paramsValue[{{index}}]" value="{{itemRadio}}" + title="{{itemRadio}}" {{ setRadioParameters(d.arrParameters, item.id , + itemRadio) ?'checked':'' }} lay-verify="required" + lay-reqText="璇疯緭鍏ュ弬鏁帮細{{item.name}}"> {{# }); }} {{# } else if + (item.type && item.type==='checkbox'){ }} + <input + type="hidden" + name="paramsValueCount[{{index}}]" + value="{{layui.coreHelper.stringToArrayLength(item.value)}}" + class="layui-input" + lay-verify="required" + lay-reqText="璇烽�夋嫨鍙傛暟锛歿{item.name}}" + /> + {{# layui.each(layui.coreHelper.stringToArray(item.value), + function(indexCheckbox, itemCheckbox){ }} <input type="checkbox" + name="paramsValue[{{index}}][]" value="{{itemCheckbox}}" + lay-skin="primary" {{ setCheckboxParameters(d.arrParameters, item.id , + itemCheckbox) ?'checked':'' }} title="{{itemCheckbox}}" + value="{{itemCheckbox}}" lay-verify="required" + lay-reqText="璇烽�夋嫨鍙傛暟锛歿{item.name}}"> {{# }); }} {{# } else if + (item.type && item.type==='text'){ }} + <input + type="hidden" + name="paramsValueCount[{{index}}]" + value="1" + class="layui-input" + /> + <input + type="text" + name="paramsValue[{{index}}]" + value="{{setTextParameters(d.arrParameters, item.id)}}" + class="layui-input" + lay-verify="required" + lay-reqText="璇疯緭鍏ュ弬鏁帮細{{item.name}}" + /> + {{# } else { }} {{# } }} + </div> + </div> + {{# }); }} + </blockquote> + {{# } }} +</script> + + + +<script id="image_tpl" type="text/html"> + {{# layui.each(d, function(index, item){ }} + <div class="imgdiv"> + <img + src="{{ item }}" + class="layui-upload-img" + onclick='layui.coreHelper.viewImage("{{ item }}")' + style="width: 100px;height:100px;" + /> + <div id="operate"> + <div> + <a class="del" onclick="delImg(this,'{{ item }}')">鍒犻櫎</a>|<a + class="setmain" + onclick="setDefault(this,'{{ item }}')" + >璁句负涓诲浘</a + > + </div> + </div> + </div> + {{# }); }} +</script> + +<script id="brand_tpl" type="text/html"> + <select name="goods[brand_id]"> + <option value="0">璇烽�夋嫨鍝佺墝</option> + {{# layui.each(d.list, function(index, item){ }} + <option value="{{ item.id }}">{{ item.name }}</option> + {{# }); }} + </select> +</script> +<!--//涓�閿缃甋KU鍥剧墖鏃惰嚜鍔ㄧ敓鎴愰�変腑鐨凷KU--> +<script id="imageSetMoreSku_tpl" type="text/html"> + {{# layui.each(d, function(index, item){ }} + <input + type="checkbox" + name="skuAttrValue" + value="{{item}}" + title="{{item}}" + lay-filter="skuAttrValue-filter" + /> + {{# }); }} +</script> + +<script src="/views/liao.js"></script> + +<script> + var $; + var debug = layui.setter.debug; + var imgs = []; + var thumbnailBtn; + var _that = this; + var enptyProducts; + var oldSingleData = {}; + var oldMultitermData = []; + var tempMultitermData = []; + + layui.data.sendEditParams = function (d) { + //寮�鍚皟璇曟儏鍐典笅鑾峰彇鎺ュ彛璧嬪�兼暟鎹� + if (debug) { + console.log(d); + + } + layui.use( + [ + "admin", + "form", + "laydate", + "upload", + "coreHelper", + "dtree", + "view", + "laytpl", + "xmSelect", + "util", + "cropperImg", + ], + function () { + $ = layui.$; + var form = layui.form, + admin = layui.admin, + laydate = layui.laydate, + upload = layui.upload, + dtree = layui.dtree, + view = layui.view, + laytpl = layui.laytpl, + xmSelect = layui.xmSelect, + util = layui.util, + cropperImg = layui.cropperImg, + coreHelper = layui.coreHelper; + var element = layui.element; + + //鍔犺浇缂栬緫鍣� + var Authorization = layui.data(layui.setter.tableName)[ + layui.setter.request.tokenName + ]; + editor = CKEDITOR.replace("editor", { + fileTools_requestHeaders: { + Authorization: Authorization, + }, + }); + editor.setData(d.params.data.intro); + + //鍒濆鍖栧浘鐗� + var defaultImg = "no"; + if (d.params.data.images) { + imgs = d.params.data.images.split(","); + defaultImg = imgs[0]; + $("#imageIds").val(imgs); + var getTpl = image_tpl.innerHTML, + viewBox = document.getElementById("upload-more-list"); + laytpl(getTpl).render(imgs, function (html) { + viewBox.innerHTML = html; + }); + } + + //鍒濆鍖栧凡缁忕‘璁ゅ晢鍝丼KU + if (1) { + var tmpData = { + products: d.params.data.sku, + }; + + //璧嬪�煎晢鍝佸弬鏁版暟鎹� + var getTpl = getSpec_tpl.innerHTML, + viewBox = document.getElementById("product-info"); + laytpl(getTpl).render(tmpData, function (html) { + viewBox.innerHTML = html; + }); + } + + var arrParameters = []; + //鍒濆鍖栧凡缁忕‘璁ゅ晢鍝佸弬鏁� + if (false) { + if (d.params.data.parameters) { + var arr = d.params.data.parameters.split("|"); + for (var i = 0; i < arr.length; i++) { + var arrChild = arr[i].split(":"); + arrParameters.push(arrChild); + } + } + var tmpData = { + goodsParams: d.data.goodsParams, + arrParameters: arrParameters, + }; + //璧嬪�煎晢鍝佸弬鏁版暟鎹� + var getTpl = params_tpl.innerHTML, + viewBox = document.getElementById("parametersBox"); + laytpl(getTpl).render(tmpData, function (html) { + viewBox.innerHTML = html; + }); + } + + //鍒濆鍖栨暟鎹� + enptyProducts = { + id: 0, + goodsId: 0, + isDefalut: true, + images: layui.setter.noImagePicUrl, + sn: layui.coreHelper.getSN("SN"), + spesDesc: "", + stock: 1000, + pointsDeduction: 0, + points: 0, + weight: 0, + price: 0, + costprice: 0, + mktprice: 0, + levelOne: 0, + levelTwo: 0, + levelThree: 0, + }; + oldMultitermData =d.params.data.sku; + if (d.params.data.openSpec == 1) { + oldSingleData = enptyProducts; + tempMultitermData = d.data.products; + } else { + oldSingleData = d.params.data.sku[0]; + } + + + /*****************************************************************/ + + // 娓叉煋鍟嗗搧鍒嗙被 + var insXmSelGoodsCategoryId = xmSelect.render({ + el: "#goodsCategoryId_SelectCreateTree", + height: "250px", + data: d.params.initdata.categories.data, + initValue: d.params.data ? [d.params.data.goodsCategoryId] : [], + //model: { label: { type: 'text' } }, + name: "goodsCategoryId", + prop: { + name: "title", + value: "id", + }, + layVerify: "required", + layVerType: "msg", + radio: true, + clickClose: true, + tree: { + show: true, + indent: 15, + strict: false, + expandedKeys: true, + }, + }); + //娓叉煋鍟嗗搧鎵╁睍鍒嗙被 + + var arr = []; + if (d.params.data.categoryExtend?.length > 0) { + for (var i = 0; i < d.params.data.categoryExtend.length; i++) { + arr.push(d.params.data.categoryExtend[i].goodsCategroyId); + } + } + var insXmSelGoodsCategoryIdExtend = xmSelect.render({ + el: "#goodsCategoryIdExtend_SelectCreateTree", + height: "250px", + data: d.params.initdata.categories.data, + //initValue: mData ? [mData.parentId] : [], + //model: { label: { type: 'text' } }, + name: "goodsCategoryIdExtend", + prop: { + name: "title", + value: "id", + }, + initValue: arr, + //layVerify: 'required', + //layVerType: 'msg', + //radio: false, + //clickClose: true, + autoRow: true, + + tree: { + //鏄惁鏄剧ず鏍戠姸缁撴瀯 + show: true, + //鏄惁灞曠ず涓夎鍥炬爣 + showFolderIcon: true, + //鏄惁鏄剧ず铏氱嚎 + showLine: true, + //闂磋窛 + indent: 20, + //榛樿灞曞紑鑺傜偣鐨勬暟缁�, 涓� true 鏃�, 灞曞紑鎵�鏈夎妭鐐� + expandedKeys: true, + //鏄惁涓ユ牸閬靛畧鐖跺瓙妯″紡 + strict: false, + //鏄惁寮�鍚瀬绠�妯″紡 + simple: false, + }, + }); + + var arrParams = []; + if (d.params.data.goodsParamsIds) { + arrParams = d.params.data.goodsParamsIds.split(","); + } + + + + + var arrSku = []; + if (d.params.data.goodsSkuIds) { + arrSku = d.params.data.goodsSkuIds.split(","); + } + + + + //灏侀潰鍥惧浘鐗囦笂浼� + $("#upBtn").click(function () { + cropperImg.cropImg({ + aspectRatio: 1 / 1, + imgSrc: $("#viewImgBox").attr("src"), + onCrop: function (data) { + var loadIndex = layer.load(2); + coreHelper.Post( + "api/Tools/UploadFilesFByBase64", + { base64: data }, + function (res) { + if (0 === res.code) { + $("#viewImgBox").attr("src", res.data.fileUrl); + $("#goodImage").val(res.data.fileUrl); + layer.msg(res.msg); + layer.close(loadIndex); + } else { + layer.close(loadIndex); + layer.msg(res.msg, { icon: 2, anim: 6 }); + } + } + ); + }, + }); + form.render(); + }); + //鏅�氬浘鐗囦笂浼� + upload.render({ + elem: "#upBtnOriginal", + url: layui.setter.apiUrl + "Api/Tools/UploadFiles", + before: function (obj) { + obj.preview(function (index, file, result) { + $("#viewImgBox").attr("src", result); + }); + }, + done: function (res) { + if (res.code > 0) { + return layer.msg("涓婁紶澶辫触"); + } + layer.msg("涓婁紶鎴愬姛"); + $("#goodImage").val(res.data.fileUrl); + }, + error: function () { + var viewTextBox = $("#viewTextBox"); + viewTextBox.html( + '<span style="color: #FF5722;">涓婁紶澶辫触</span> <a class="layui-btn layui-btn-xs demo-reload">閲嶈瘯</a>' + ); + viewTextBox.find(".demo-reload").on("click", function () { + uploadInst.upload(); + }); + }, + }); + // 鐩戝惉寮�鍏冲垏鎹簨浠� + form.on("switch(isCustomizable)", function (data) { + var elem = data.elem; // 褰撳墠寮�鍏冲厓绱� + elem.value = true; + }); + //鍥鹃泦涓婁紶 + $("#upBtnimageIds").click(function () { + cropperImg.cropImg({ + aspectRatio: 1 / 1, + imgSrc: defaultImg, + onCrop: function (data) { + var loadIndex = layer.load(2); + coreHelper.Post( + "api/Tools/UploadFilesFByBase64", + { base64: data }, + function (res) { + if (0 === res.code) { + imgs.push(res.data.fileUrl); + $("#imageIds").val(imgs); + var getTpl = image_tpl.innerHTML, + view = document.getElementById("upload-more-list"); + laytpl(getTpl).render(imgs, function (html) { + view.innerHTML = html; + }); + layer.msg(res.msg); + layer.close(loadIndex); + } else { + layer.close(loadIndex); + layer.msg(res.msg, { icon: 2, anim: 6 }); + } + } + ); + }, + }); + form.render(); + }); + + //涓婁紶鍥鹃泦鍥惧浘鐗� + upload.render({ + elem: "#upBatchBtn", + url: "/api/Tools/UploadFiles", //鏀规垚鎮ㄨ嚜宸辩殑涓婁紶鎺ュ彛 + multiple: true, + accept: "images", + exts: "jpg|jpeg|png|gjf|webp|bmp|tif", + drag: true, + allDone: function (obj) { + //var txt = "鍏遍�夋嫨浜� 銆�" + obj.total + "銆� 寮犲浘鐗囷紝鍏朵腑锛屼笂浼犳垚鍔� 銆�" + obj.successful + "銆� 寮狅紝澶辫触 <span style='color:red'>銆�" + obj.aborted + "銆� </span>寮�"; + //$("#tipTxt").html(txt); + }, + before: function (obj) { + //棰勮鏈湴鏂囦欢绀轰緥锛屼笉鏀寔ie8 + obj.preview(function (index, file, result) { + $("#upload-more-list").append( + '<img src="' + + result + + '" alt="' + + file.name + + '" class="layui-upload-img">' + ); + }); + }, + done: function (res) { + var loadIndex = layer.load(2); + //濡傛灉涓婁紶澶辫触 + if (res.code > 0) { + return layer.msg("涓婁紶澶辫触"); + } else { + var url = res.data.src; //缂╃暐鍥惧湴鍧� + var url2 = res.data.fileUrl; //鍘熷鍥惧湴鍧� + + imgs.push(res.data.src); + $("#imageIds").val(imgs); + var getTpl = image_tpl.innerHTML, + view = document.getElementById("upload-more-list"); + laytpl(getTpl).render(imgs, function (html) { + view.innerHTML = html; + }); + layer.msg(res.msg); + layer.close(loadIndex); + } + }, + error: function () { + //婕旂ず澶辫触鐘舵�侊紝骞跺疄鐜伴噸浼� + var demoText = $("#demoText"); + demoText.html( + '<span style="color: #FF5722;">涓婁紶澶辫触</span><a class= "layui-btn layui-btn-xs demo-reload" > 閲嶈瘯</a > ' + ); + demoText.find(".demo-reload").on("click", function () { + uploadInst.upload(); + }); + }, + }); + + upload.render({ + elem: "#upBtnimageIdsOriginal", + url: layui.setter.apiUrl + "Api/Tools/UploadFiles", + before: function (obj) {}, + done: function (res) { + if (res.code > 0) { + return layer.msg("涓婁紶澶辫触"); + } else { + layer.msg("涓婁紶鎴愬姛"); + imgs.push(res.data.fileUrl); + $("#imageIds").val(imgs); + var getTpl = image_tpl.innerHTML, + view = document.getElementById("upload-more-list"); + laytpl(getTpl).render(imgs, function (html) { + view.innerHTML = html; + }); + } + }, + error: function () { + var viewTextBox = $("#viewTextBox"); + viewTextBox.html( + '<span style="color: #FF5722;">涓婁紶澶辫触</span> <a class="layui-btn layui-btn-xs demo-reload">閲嶈瘯</a>' + ); + viewTextBox.find(".demo-reload").on("click", function () { + uploadInst.upload(); + }); + }, + }); + + //SKU缂╃暐鍥句笂浼� + $(".upSpecImage").click(function () { + var _that = this; + cropperImg.cropImg({ + aspectRatio: 1 / 1, + imgSrc: "no", + onCrop: function (data) { + var loadIndex = layer.load(2); + coreHelper.Post( + "api/Tools/UploadFilesFByBase64", + { base64: data }, + function (res) { + if (0 === res.code) { + var item = $(_that); + item + .parent() + .parent() + .prev() + .find("#productImagesInput") + .val(res.data.fileUrl); + item + .parent() + .parent() + .prev() + .find("#productImagesSrc") + .attr("src", res.data.fileUrl); + + layer.msg(res.msg); + layer.close(loadIndex); + } else { + layer.close(loadIndex); + layer.msg(res.msg, { icon: 2, anim: 6 }); + } + } + ); + }, + }); + form.render(); + }); + //SKU鍘熷浘涓婁紶 + $(".upSpecImageOriginal").click(function () { + var _that = this; + admin.popup({ + title: "鍘熷浘涓婁紶", + area: ["800px", "300px"], + id: "LAY-app-CoreCmsCommon-GetNoticeIds", + success: function (layero, indexChild) { + layui + .view(this.id) + .render("common/getUpLoad", null) + .done(function () { + layui.form.on( + "submit(LAY-app-getUpLoad-submit)", + function (data) { + console.log(data); + var item = $(_that); + item + .parent() + .parent() + .prev() + .find("#productImagesInput") + .val(data.field.imagesUrl); + item + .parent() + .parent() + .prev() + .find("#productImagesSrc") + .attr("src", data.field.imagesUrl); + layer.close(indexChild); + } + ); + }); + }, + btn: ["纭畾", "鍙栨秷"], + yes: function (index, layero) { + layero.contents().find("#LAY-app-getUpLoad-submit").click(); + }, + }); + form.render(); + }); + + var skuAttrCheckedValue = []; + // checkbox 浜嬩欢 + form.on("checkbox(skuAttrValue-filter)", function (data) { + var elem = data.elem; // 鑾峰緱 checkbox 鍘熷 DOM 瀵硅薄 + + if (elem.checked && skuAttrCheckedValue.indexOf(elem.value) == -1) { + skuAttrCheckedValue.push(elem.value); + } else if ( + !elem.checked && + skuAttrCheckedValue.indexOf(elem.value) > -1 + ) { + for (var i = 0; i < skuAttrCheckedValue.length; i++) { + if (skuAttrCheckedValue[i] == elem.value) { + skuAttrCheckedValue.splice(i, 1); + } + } + } + console.log("skuAttrCheckedValue", skuAttrCheckedValue); + }); + + //SKU缂╃暐鍥句竴閿笂浼� + var uploadInst4 = upload.render({ + elem: "#uploadImageForMoreSku", + url: "/api/Tools/UploadFiles", //鏀规垚鎮ㄨ嚜宸辩殑涓婁紶鎺ュ彛 + multiple: false, + accept: "images", + exts: "jpg|jpeg|png|gjf|webp|bmp|tif", + drag: true, + before: function (obj) { + if (!skuAttrCheckedValue) { + layer.msg("璇峰厛閫夋嫨涓�涓猄KU灞炴��"); + return false; + } + }, + done: function (res) { + var loadIndex = layer.load(2); + //濡傛灉涓婁紶澶辫触 + if (res.code > 0) { + return layer.msg("涓婁紶澶辫触"); + } else { + var url = res.data.src; //缂╃暐鍥惧湴鍧� + var _that = this.item; + if (!skuAttrCheckedValue) { + layer.msg("璇峰厛閫夋嫨涓�涓猄KU灞炴��"); + return; + } + console.log("skuAttrCheckedValue", skuAttrCheckedValue); + + $.each($("#productsTbody tr"), function (i, item) { + var tdValue = $(item).find("td:eq(3) input").attr("value"); + for (var i = 0; i < skuAttrCheckedValue.length; i++) { + if (tdValue.indexOf(skuAttrCheckedValue[i]) > -1) { + $($(item).find("td:eq(1) .spec_image img")).attr( + "src", + url + ); + $($(item).find("td:eq(1) .spec_image input")).val(url); + } + } + }); + + //var item = $(_that); + layer.msg(res.msg); + layer.close(loadIndex); + } + }, + error: function () {}, + }); + + //琛ㄥ崟楠岃瘉瑙勫垯 + form.verify({ + money: [/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/, "璇疯緭鍏ラ噾棰�"], + verifybn: [ + /^[\S]{0,30}$/, + "鍟嗗搧缂栫爜鏈�澶у彧鍏佽杈撳叆30浣嶅瓧绗︼紝涓斾笉鑳藉嚭鐜扮┖鏍�", + ], + verifysn: [ + /^[\S]{0,30}$/, + "璐у搧缂栫爜鏈�澶у彧鍏佽杈撳叆30浣嶅瓧绗︼紝涓斾笉鑳藉嚭鐜扮┖鏍�", + ], + verifyname: [/^.{0,200}$/, "鍟嗗搧鍚嶇О鏈�澶у彧鍏佽杈撳叆200浣嶅瓧绗�"], + verifybrief: [ + /^.{0,255}$/, + "鍟嗗搧绠�浠嬫渶澶у彧鍏佽杈撳叆255浣嶅瓧绗︼紝涓斾笉鑳藉嚭鐜扮┖鏍�", + ], + verifyimageIds: [ + /^[\S]{0,255}$/, + "榛樿鍥剧墖 鍥剧墖id鏈�澶у彧鍏佽杈撳叆255浣嶅瓧绗︼紝涓斾笉鑳藉嚭鐜扮┖鏍�", + ], + verifyunit: [ + /^[\S]{0,20}$/, + "鍟嗗搧鍗曚綅鏈�澶у彧鍏佽杈撳叆20浣嶅瓧绗︼紝涓斾笉鑳藉嚭鐜扮┖鏍�", + ], + verifylabelIds: [ + /^[\S]{0,50}$/, + "鏍囩id閫楀彿鍒嗛殧鏈�澶у彧鍏佽杈撳叆50浣嶅瓧绗︼紝涓斾笉鑳藉嚭鐜扮┖鏍�", + ], + }); + //娣诲姞鍒嗙被 + $(document).on("click", ".add-class", function () { + coreHelper.Post( + "Api/CoreCmsGoodsCategory/GetCreate", + null, + function (e) { + if (e.code === 0) { + admin.popup({ + shadeClose: false, + title: "娣诲姞鍒嗙被", + area: ["700px", "540px"], + id: "LAY-popup-CoreCmsGoodsCategory-create", + success: function (layero, index) { + view(this.id) + .render("good/goodscategory/create", { data: e.data }) + .done(function () { + //鐩戝惉鎻愪氦 + form.on( + "submit(LAY-app-CoreCmsGoodsCategory-createForm-submit)", + function (data) { + var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈� + field.isShow = field.isShow == "on"; + if (debug) { + console.log(field); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //鎻愪氦 Ajax 鎴愬姛鍚庯紝鍏抽棴褰撳墠寮瑰眰骞堕噸杞借〃鏍� + coreHelper.Post( + "Api/CoreCmsGoodsCategory/DoCreate", + field, + function (e) { + if (e.code === 0) { + //閲嶆柊娓叉煋鍒嗙被涓嬫媺 + insXmSelGoodsCategoryId.update({ + data: e.data.categories.data, + autoRow: true, + }); + insXmSelGoodsCategoryIdExtend.update({ + data: e.data.categories.data, + autoRow: true, + }); + form.render(); + layer.close(index); //鍐嶆墽琛屽叧闂� + layer.msg(e.msg); + } else { + layer.msg(e.msg); + } + } + ); + } + ); + }); + }, + btn: ["纭畾", "鍙栨秷"], + yes: function (index, layero) { + layero + .contents() + .find("#LAY-app-CoreCmsGoodsCategory-createForm-submit") + .click(); + }, + }); + } else { + layer.msg(e.msg); + } + } + ); + }); + //娣诲姞sku + $(document).on("click", ".add-Sku", function () { + coreHelper.Post( + "Api/CoreCmsGoodsTypeSpec/GetCreate", + null, + function (e) { + if (e.code === 0) { + admin.popup({ + shadeClose: false, + title: "鍒涘缓鏁版嵁", + area: ["550px", "90%"], + id: "LAY-popup-CoreCmsGoodsTypeSpec-create", + success: function (layero, index) { + view(this.id) + .render("good/goodstypespec/create", { data: e.data }) + .done(function () { + //鐩戝惉鎻愪氦 + form.on( + "submit(LAY-app-CoreCmsGoodsTypeSpec-createForm-submit)", + function (data) { + var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈� + var keys = Object.keys(field); + field.value = []; + for (var i = 0; i < keys.length; i++) { + if (keys[i].indexOf("value") != -1) { + var keyName = Object.keys(field)[i]; + field.value.push(field[keyName]); + } + } + + if (debug) { + console.log(field); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //鎻愪氦 Ajax 鎴愬姛鍚庯紝鍏抽棴褰撳墠寮瑰眰骞堕噸杞借〃鏍� + coreHelper.Post( + "Api/CoreCmsGoodsTypeSpec/DoCreate", + field, + function (e) { + if (e.code === 0) { + var ids = insgoodsSKU.getValue(); + var arrSku = []; + if (ids.length > 0) { + arrSku = ids; + } + insgoodsSKU.update({ + data: e.data.skuList, + initValue: arrSku, + autoRow: true, + }); + form.render(); + layer.close(index); //鍐嶆墽琛屽叧闂� + layer.msg(e.msg); + } else { + layer.msg(e.msg); + } + } + ); + } + ); + }); + }, + btn: ["纭畾", "鍙栨秷"], + yes: function (index, layero) { + layero + .contents() + .find("#LAY-app-CoreCmsGoodsTypeSpec-createForm-submit") + .click(); + }, + }); + } else { + layer.msg(e.msg); + } + } + ); + return false; + }); + + //娣诲姞鍙傛暟妯″瀷 + $(document).on("click", ".add-goodsParams", function () { + coreHelper.Post( + "Api/CoreCmsGoodsParams/GetCreate", + null, + function (e) { + if (e.code === 0) { + admin.popup({ + shadeClose: false, + title: "鍒涘缓鏁版嵁", + area: ["550px", "400px"], + id: "LAY-popup-CoreCmsGoodsParams-create", + success: function (layero, index) { + view(this.id) + .render("good/goodsparams/create", { data: e.data }) + .done(function () { + //鐩戝惉鎻愪氦 + form.on( + "submit(LAY-app-CoreCmsGoodsParams-createForm-submit)", + function (data) { + var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈� + + if (debug) { + console.log(field); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //鎻愪氦 Ajax 鎴愬姛鍚庯紝鍏抽棴褰撳墠寮瑰眰骞堕噸杞借〃鏍� + coreHelper.Post( + "Api/CoreCmsGoodsParams/DoCreate", + field, + function (e) { + if (e.code === 0) { + var ids = insGoodsParams.getValue(); + var arrSku = []; + if (ids.length > 0) { + arrSku = ids; + } + insGoodsParams.update({ + data: e.data.paramsList, + initValue: arrSku, + autoRow: true, + }); + form.render(); + layer.close(index); //鍐嶆墽琛屽叧闂� + layer.msg(e.msg); + } else { + layer.msg(e.msg); + } + } + ); + } + ); + }); + }, + btn: ["纭畾", "鍙栨秷"], + yes: function (index, layero) { + layero + .contents() + .find("#LAY-app-CoreCmsGoodsParams-createForm-submit") + .click(); + }, + }); + } else { + layer.msg(e.msg); + } + } + ); + return false; + }); + + //娣诲姞鍝佺墝 + $(document).on("click", ".add-brand", function () { + coreHelper.Post("Api/CoreCmsBrand/GetCreate", null, function (e) { + if (e.code === 0) { + admin.popup({ + shadeClose: false, + title: "娣诲姞鍝佺墝", + area: ["600px", "450px"], + id: "LAY-popup-CoreCmsBrand-create", + success: function (layero, index) { + view(this.id) + .render("good/goodsbrand/create", { data: e.data }) + .done(function () { + //鐩戝惉鎻愪氦 + form.on( + "submit(LAY-app-CoreCmsBrand-createForm-submit)", + function (data) { + var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈� + field.isShow = field.isShow == "on"; + if (debug) { + console.log(field); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //鎻愪氦 Ajax 鎴愬姛鍚庯紝鍏抽棴褰撳墠寮瑰眰骞堕噸杞借〃鏍� + coreHelper.Post( + "Api/CoreCmsBrand/DoCreate", + field, + function (e) { + if (e.code === 0) { + //涓嬫媺閲嶆柊璧嬪�� + var getTpl = brand_tpl.innerHTML, + view = document.getElementById("brandIdView"); + var tmpData = {}; + tmpData.list = e.data.brands; + laytpl(getTpl).render(tmpData, function (html) { + view.innerHTML = html; + }); + form.render(); + layer.close(index); //鍐嶆墽琛屽叧闂� + layer.msg(e.msg); + } else { + layer.msg(e.msg); + } + } + ); + } + ); + }); + }, + btn: ["纭畾", "鍙栨秷"], + yes: function (index, layero) { + layero + .contents() + .find("#LAY-app-CoreCmsBrand-createForm-submit") + .click(); + }, + }); + } else { + layer.msg(e.msg); + } + }); + return false; + }); + + //涓�閿缃� + $(document).on("click", ".aKeySetBtn", function () { + layer.open({ + type: 1, + area: ["700px", "500px"], + offset: "50px", + title: "涓�閿缃�", + closeBtn: 1, + shadeClose: true, + content: $("#batchSetting"), + shade: 0, + btn: ["鍏抽棴"], + btn1: function (index, layero) { + $("#batchSetting").css("display", "none"); + layer.closeAll(); + return false; + }, + btn2: function (index, layero) { + $("#batchSetting").css("display", "none"); + layer.closeAll(); + return false; + }, + cancel: function (layero, index) { + $("#batchSetting").css("display", "none"); + layer.closeAll(); + return false; + }, + }); + }); + + //榛樿璐у搧閫夋嫨 + form.on("checkbox(isdefalut)", function (data) { + console.log(data.elem.checked); + if (data.elem.checked) { + var checkedName = $(data.elem).attr("id"); + $(".isdefalut").each(function (i, dom) { + var name = $(dom).attr("id"); + if (name != checkedName) { + $(dom).attr("checked", false); + $(dom).attr("value", "0"); + $("#more_spec_disgoods .layui-form-checkbox").removeClass( + "layui-form-checked" + ); + } else { + $(dom).attr("checked", true); + $(dom).attr("value", "1"); + } + }); + $(data.othis).addClass("layui-form-checked"); + } else { + $("#more_spec_disgoods .layui-form-checkbox") + .first() + .addClass("layui-form-checked"); + $(".isdefalut").first().attr("checked", true); + $(".isdefalut").first().attr("value", "1"); + } + form.render(); + }); + + function openSpecBox(is_open) { + if (is_open == "0") { + $("input[name=openSpec]").val("1"); + $("#spec_select").show(); + $("#goodsTypeIdViewBox").show(); + $("#openSpecBtn").html("鍙栨秷SKU"); + console.log("鍙栨秷SKU"); + + if (_that.tempMultitermData.length == 0) { + $("#more_spec_disgoods").html(""); + $("#productsCount").val(0); + } else { + var getTpl = getSpec_tpl.innerHTML, + viewBox = document.getElementById("more_spec_disgoods"); + laytpl(getTpl).render(_that.tempMultitermData, function (html) { + viewBox.innerHTML = html; + }); + $("#productsCount").val(_that.tempMultitermData.length); + } + } else { + $("input[name=openSpec]").val("0"); + $("#spec_select").hide(); + $("#goodsTypeIdViewBox").hide(); + $("#openSpecBtn").html("鍚敤SKU"); + console.log("鍚敤SKU"); + + var arr = []; + arr.push(_that.oldSingleData); + var getTpl = getSpec_tpl.innerHTML, + viewBox = document.getElementById("more_spec_disgoods"); + laytpl(getTpl).render(arr, function (html) { + viewBox.innerHTML = html; + }); + $("#productsCount").val(1); + } + form.render(); + } + + //澶勭悊灞炴�� 涓� lay-active 鐨勬墍鏈夊厓绱犱簨浠� + util.event("lay-active", { + doSetGoodsSku: function () { + var ids = insgoodsSKU.getValue(); + if (ids.length <= 0) { + layer.msg("璇峰厛閫夋嫨SKU妯″瀷"); + return false; + } + var delidsStr = []; + layui.each(ids, function (index, item) { + delidsStr.push(item.id); + }); + + layer.confirm( + "鏇存崲SKU妯″瀷鍚庯紝璐у搧闇�閲嶆柊鐢熸垚锛岀‘瀹氳鏇存崲鍚楋紵", + { + btn: ["纭畾", "鍙栨秷"], + title: "鎻愮ず", + }, + function (index) { + coreHelper.Post( + "Api/CoreCmsGoods/GetSkuDetail", + { id: delidsStr }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + if (e.data) { + //璧嬪�煎晢鍝佸弬鏁版暟鎹� + var tmpData = { + goodsTypeSpec: e.data.goodsTypeSpec, + model: d.data.model, + }; + + var getTpl = sku_tpl.innerHTML, + view = document.getElementById("product-info"); + laytpl(getTpl).render(tmpData, function (html) { + view.innerHTML = html; + }); + if (e.data.goodsTypeSpec.length > 0) { + openSpecBox("0"); + } + form.render(); + } + } + ); + layer.close(index); + }, + function () {} + ); + form.render(); + }, + doSetGoodsParams: function () { + var ids = insGoodsParams.getValue(); + if (ids.length <= 0) { + layer.msg("璇峰厛閫夋嫨鍙傛暟"); + return false; + } + if (d.params.data.parameters) { + var arr = d.params.data.parameters.split("|"); + for (var i = 0; i < arr.length; i++) { + var arrChild = arr[i].split(":"); + arrParameters.push(arrChild); + } + } + var tmpData = { goodsParams: ids, arrParameters: arrParameters }; + var getTpl = params_tpl.innerHTML, + viewBox = document.getElementById("parametersBox"); + laytpl(getTpl).render(tmpData, function (html) { + viewBox.innerHTML = html; + }); + form.render(); + }, + doClearGoodsParams: function () { + $("#parametersBox").html(""); + layer.msg("宸叉竻绌猴紝璇烽噸鏂伴�夋嫨"); + form.render(); + }, + delTr: function () { + var delSn = $(this) + .parent() + .parent("tr") + .find("input[name='product[sn][]']") + .val(); + for (var i = 0; i < _that.tempMultitermData.length; i++) { + if (_that.tempMultitermData[i].sn == delSn) { + _that.tempMultitermData.splice(i, 1); + break; + } + } + + $(this).parent().parent("tr").remove(); + var productsCount = parseInt($("#productsCount").val()); + $("#productsCount").val(productsCount - 1); + + var is_open = $("#openSpecInput").val(); + if (is_open == "0") { + _that.oldSingleData = _that.enptyProducts; + var arr = []; + arr.push(_that.oldSingleData); + var getTpl = getSpec_tpl.innerHTML, + viewBox = document.getElementById("more_spec_disgoods"); + laytpl(getTpl).render(arr, function (html) { + viewBox.innerHTML = html; + }); + $("#productsCount").val(1); + } + form.render(); + }, + createbn: function () { + var bn = layui.coreHelper.getSN("BN"); + $("#bn").val(bn); + }, + createSn: function () { + var sn = layui.coreHelper.getSN("SN"); + $("#sn").val(sn); + }, + openSpecBtn: function () { + var index = layer.load(); + var is_open = $("#openSpecInput").val(); + openSpecBox(is_open); + layer.close(index); + }, + getGenerateSpecBtn: function () { + var list = $("#spec_select input[type=checkbox]:checked"); + console.log(list); + if (list.length > 0) { + var array = $("#spec_form").serializeArray(); + coreHelper.Post( + "Api/CoreCmsGoods/GetSpecHtml", + { entity: array }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + if (e.code == 0) { + //鎵归噺璁剧疆sku鍥剧墖 + if (e.data.skuArray) { + //鐢熸垚涓�閿甋KU涓婁紶鍥剧墖鐨勫唴瀹� + var tmpData2 = e.data.skuArray; + var getTpl2 = imageSetMoreSku_tpl.innerHTML, + view2 = document.getElementById("skuSetImage"); + laytpl(getTpl2).render(tmpData2, function (html) { + view2.innerHTML = html; + }); + form.render("radio"); + } + + //璧嬪�兼暟鎹� + var getTpl = getSpec_tpl.innerHTML, + view = document.getElementById("more_spec_disgoods"); + var tmpData = []; + + var skuArray = e.data.skuArray; + var oldData = _that.tempMultitermData; + var oldHaveDefault = false; + + if (oldData) { + for (var i = 0; i < oldData.length; i++) { + if (skuArray.indexOf(oldData[i].spesDesc) != -1) { + tmpData.push(oldData[i]); + if (oldData[i].isDefalut) { + oldHaveDefault = true; + } + } + } + } + if (e.data.products) { + for (var i = 0; i < e.data.products.length; i++) { + e.data.products[i].isDefalut = false; + //e.data.products[i].sn = layui.coreHelper.getSN('SN'); + tmpData.push(e.data.products[i]); + } + } + if (tmpData && !oldHaveDefault) { + tmpData[0].isDefalut = true; + } + _that.tempMultitermData = tmpData; + console.log(_that.tempMultitermData); + laytpl(getTpl).render(tmpData, function (html) { + view.innerHTML = html; + }); + $("#spesDesc").val(e.data.selectSpecStr); + $("#newSpec").val(e.data.newSpecStr); + $("#productsCount").val(tmpData.length); + + //SKU缂╃暐鍥句笂浼� + $(".upSpecImage").click(function () { + var _that = this; + cropperImg.cropImg({ + aspectRatio: 1 / 1, + imgSrc: "no", + onCrop: function (data) { + var loadIndex = layer.load(2); + coreHelper.Post( + "api/Tools/UploadFilesFByBase64", + { base64: data }, + function (res) { + if (0 === res.code) { + var item = $(_that); + item + .parent() + .parent() + .prev() + .find("#productImagesInput") + .val(res.data.fileUrl); + item + .parent() + .parent() + .prev() + .find("#productImagesSrc") + .attr("src", res.data.fileUrl); + + layer.msg(res.msg); + layer.close(loadIndex); + } else { + layer.close(loadIndex); + layer.msg(res.msg, { icon: 2, anim: 6 }); + } + } + ); + }, + }); + }); + + //SKU鍘熷浘涓婁紶 + $(".upSpecImageOriginal").click(function () { + var _that = this; + admin.popup({ + title: "鍘熷浘涓婁紶", + area: ["800px", "300px"], + id: "LAY-app-CoreCmsCommon-GetNoticeIds", + success: function (layero, indexChild) { + layui + .view(this.id) + .render("common/getUpLoad", null) + .done(function () { + layui.form.on( + "submit(LAY-app-getUpLoad-submit)", + function (data) { + console.log(data); + var item = $(_that); + item + .parent() + .parent() + .prev() + .find("#productImagesInput") + .val(data.field.imagesUrl); + item + .parent() + .parent() + .prev() + .find("#productImagesSrc") + .attr("src", data.field.imagesUrl); + layer.close(indexChild); + } + ); + }); + }, + btn: ["纭畾", "鍙栨秷"], + yes: function (index, layero) { + layero + .contents() + .find("#LAY-app-getUpLoad-submit") + .click(); + }, + }); + }); + + layer.msg("Sku鍒楄〃鑾峰彇鎴愬姛"); + } else { + layer.msg(e.msg, { icon: 5, anim: 6 }); + } + form.render(); + } + ); + return false; + } else { + layer.msg("璇烽�夋嫨Sku鍏蜂綋鏄庣粏"); + return false; + } + return false; + }, + }); + + //瑙嗛涓婁紶 + var uploadInst = upload.render({ + elem: "#upVideoBtn", + accept: "video", + url: layui.setter.apiUrl + "Api/Tools/UploadFiles", + before: function (obj) { + obj.preview(function (index, file, result) { + layer.msg("涓婁紶涓�", { icon: 16, shade: 0.4 }); + }); + }, + done: function (res) { + layer.closeAll("loading"); //鍏抽棴鍔犺浇灞� + if (res.code > 0) { + return layer.msg("涓婁紶澶辫触"); + } + layer.msg("涓婁紶鎴愬姛"); + $("#videoInput").val(res.data.fileUrl); + }, + error: function () {}, + }); + + form.on( + "submit(LAY-app-CoreCmsGoods-editForm-submit)", + function (data) { + var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈� + + field["goods[isNomalVirtual]"] = + field["goods[isNomalVirtual]"] == "on"; + field["goods[isMarketable]"] = field["goods[isMarketable]"] == "on"; + field["goods[isRecommend]"] = field["goods[isRecommend]"] == "on"; + field["goods[isHot]"] = field["goods[isHot]"] == "on"; + field["goods[isDel]"] = field["goods[isDel]"] == "on"; + field["goods[goodsCategoryId]"] = field.goodsCategoryId; + if (!!!field["goods[goodsCategoryId]"]) { + layer.msg("璇烽�夋嫨鍟嗗搧鏍忕洰"); + return false; + } + field.goodsCategoryExtendIds = field.goodsCategoryIdExtend; + var keys = Object.keys(field); + var keysCount = 0; + for (var i = 0; i < keys.length; i++) { + if (keys[i].indexOf("paramsKey") != -1) { + keysCount++; + } + } + //缁勫悎鍙傛暟 + if (keysCount > 0) { + var str = ""; + for (var i = 0; i < keysCount; i++) { + var keyName = "paramsKey[" + i + "]"; + var keyValue = "paramsValue[" + i + "]"; + var keyType = "paramsType[" + i + "]"; + var keyValueCount = "paramsValueCount[" + i + "]"; + if (field[keyType] === "checkbox") { + var childCount = parseInt(field[keyValueCount]); + var value = ""; + if (childCount > 0) { + for (var j = 0; j < childCount; j++) { + var valueName = "paramsValue[" + i + "][" + j + "]"; + if (field[valueName]) { + value += field[valueName] + ","; + } + } + value = value.substr(0, value.length - 1); + str += field[keyName] + ":" + value + "|"; + } else { + if (field[keyValue]) { + str += field[keyName] + ":" + field[keyValue] + "|"; + } else { + str += field[keyName] + ":|"; + } + } + } else { + if (field[keyValue]) { + str += field[keyName] + ":" + field[keyValue] + "|"; + } else { + str += field[keyName] + ":|"; + } + } + field["goods[parameters]"] = str.substr(0, str.length - 1); + } + } + //缁勫悎json瀹炰綋骞舵彁浜pi + //鍟嗗搧瀹炰綋鏁版嵁 + var goods = {}; + goods.bn = field["goods[bn]"]; + goods.id = field["goods[id]"]; + goods.brandId = field["goods[brandId]"]; + goods.brief = field["goods[brief]"]; + goods.costprice = field["goods[costprice]"]; + goods.goodsCategoryId = field["goods[goodsCategoryId]"]; + goods.goodsTypeId = field["goods[goodsTypeId]"]; + + goods.goodsSkuIds = field.goodsSkuIds; + goods.goodsParamsIds = field.goodsParamsIds; + + goods.images = field["goods[images]"]; + goods.image = field["goods[image]"]; + goods.video = field["goods[video]"]; + + goods.intro = window.editor.getData(); + if (!!!goods.intro) { + layer.msg("鍟嗗搧璇︽儏涓嶈兘涓虹┖", { icon: 5 }); + return false; + } + goods.isDel = field["goods[isDel]"]; + goods.isHot = field["goods[isHot]"]; + goods.isMarketable = field["goods[isMarketable]"]; + goods.isNomalVirtual = field["goods[isNomalVirtual]"]; + goods.isRecommend = field["goods[isRecommend]"]; + goods.mktprice = field["goods[mktprice]"]; + goods.name = field["goods[name]"]; + goods.newSpec = field["goods[newSpec]"]; + goods.parameters = field["goods[parameters]"]; + // goods.productsDistributionType = field['goods[productsDistributionType]']; + goods.price = field["goods[price]"]; + goods.sn = field["goods[sn]"]; + goods.sort = field["goods[sort]"]; + goods.initialSales = field["goods[initialSales]"]; + goods.spesDesc = field["goods[spesDesc]"]; + goods.stock = field["goods[stock]"]; + goods.unit = field["goods[unit]"]; + goods.weight = field["goods[weight]"]; + + goods.openSpec = parseInt(field.openSpec); + //澶氬弬鏁颁骇鍝佸簱鐢熸垚鍒楄〃闆嗗悎 + var products = []; + console.log("鐢熸垚闆嗗悎"); + var productsCount = parseInt(field["productsCount"]); + for (var i = 0; i < productsCount; i++) { + var productModel = {}; + productModel.id = field["product[id][" + i + "]"]; + if (field["product[goodsId][" + i + "]"]) { + productModel.goodsId = field["product[goodsId][" + i + "]"]; + } else { + productModel.goodsId = 0; + } + productModel.costprice = field["product[costprice][" + i + "]"]; + productModel.images = field["product[images][" + i + "]"]; + if (field["product[isDefalut][" + i + "]"] == "1") { + productModel.isDefalut = true; + } else { + productModel.isDefalut = false; + } + productModel.mktprice = field["product[mktprice][" + i + "]"]; + productModel.price = field["product[price][" + i + "]"]; + productModel.sn = field["product[sn][" + i + "]"]; + productModel.spesDesc = field["product[spesDesc][" + i + "]"]; + productModel.stock = field["product[stock][" + i + "]"]; + productModel.weight = field["product[weight][" + i + "]"]; + productModel.levelOne = field["product[levelOne][" + i + "]"]; + productModel.levelTwo = field["product[levelTwo][" + i + "]"]; + productModel.levelThree = field["product[levelThree][" + i + "]"]; + productModel.pointsDeduction = + field["product[pointsDeduction][" + i + "]"]; + productModel.points = field["product[points][" + i + "]"]; + //娣诲姞 鐧惧垎鍏垫硶 + productModel.isCustomizable = + field["product[isCustomizable][" + i + "]"]; + productModel.distributionPrice = + field["product[distributionPrice][" + i + "]"]; + productModel.distributionCutMoney = + field["product[distributionCutMoney][" + i + "]"]; + productModel.cutMoney = field["product[cutMoney][" + i + "]"]; + products.push(productModel); + } + //浼氬憳浠锋牸妯″瀷 + var gradePrice = []; + if (field.gradeCount != "0") { + var gradeCount = parseInt(field["gradeCount"]); + for (var i = 0; i < gradeCount; i++) { + var gradePriceChild = {}; + gradePriceChild.key = field["gradePrice[key][" + i + "]"]; + gradePriceChild.value = field["gradePrice[value][" + i + "]"]; + gradePrice.push(gradePriceChild); + } + } + if (debug) { + console.log(field); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + var postData = { + goods: goods, + products: products, + gradePrice: gradePrice, + goodsCategoryExtendIds: field.goodsCategoryExtendIds, + }; + if (debug) { + console.log(postData); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //return false; + //鎻愪氦 Ajax 鎴愬姛鍚庯紝鍏抽棴褰撳墠寮瑰眰骞堕噸杞借〃鏍� + coreHelper.Post("Api/CoreCmsGoods/DoEdit", postData, function (e) { + console.log(e); + if (e.code === 0) { + layer.msg(e.msg, { time: 1000 }, function () { + location.hash = "/good/goods/"; + }); + } else { + layer.msg(e.msg); + } + }); + } + ); + + form.render(); + } + ); + }; + + //鍒犻櫎鍥剧墖 + function delImg(obj, imageUrl) { + var imgDiv = $(obj).parent().parent().parent(); + imgDiv.remove(); + var index = imgs.indexOf(imageUrl); + if (index > -1) { + imgs.splice(index, 1); + } + $("#imageIds").val(imgs); + } + //璁句负榛樿鍥� + function setDefault(obj, imageUrl) { + var imgDiv = $(obj).parent().parent().parent(); + $("#upload-more-list").prepend(imgDiv); + var index = imgs.indexOf(imageUrl); + if (index > -1) { + imgs.unshift(imgs.splice(index, 1)[0]); + } + $("#imageIds").val(imgs); + } + //鑾峰彇璁剧疆鍙傛暟鏂囧瓧鍐呭 + function setTextParameters(parameters, id) { + if (parameters) { + for (var i = 0; i < parameters.length; i++) { + if (parameters[i][0] == id) { + return parameters[i][1]; + } + } + } + return ""; + } + //鑾峰彇璁剧疆鍙傛暟鍗曢�夊唴瀹� + function setRadioParameters(parameters, id, value) { + if (parameters) { + for (var i = 0; i < parameters.length; i++) { + if (parameters[i][0] == id && parameters[i][1] == value) { + return true; + } + } + } + return false; + } + //鑾峰彇璁剧疆鍙傛暟澶嶉�夋鍐呭 + function setCheckboxParameters(parameters, id, value) { + if (parameters) { + for (var i = 0; i < parameters.length; i++) { + if (parameters[i][0] == id) { + var arr = parameters[i][1].split(","); + for (var j = 0; j < arr.length; j++) { + if (value == arr[j]) { + return true; + } + } + } + } + } + return false; + } + + //鍒ゆ柇SKU鏄惁閫変腑 + function isSelectedTypeSpec(parameters, id, value) { + if (parameters) { + var arr = parameters.split("|"); + for (var i = 0; i < arr.length; i++) { + var str = id + "&&" + value; + var child = arr[i].split(":"); + if (child[0] === str) { + return true; + } + } + return false; + } + return false; + } + function getSelectedTypeSpecValue(parameters, id, value) { + if (parameters) { + var arr = parameters.split("|"); + for (var i = 0; i < arr.length; i++) { + var child = arr[i].split(":"); + if (child[0] === id.toString()) { + return child[1]; + } + } + return value; + } + return value; + } + + function oneKeySet(tag) { + var curValue = 0; + if (tag == 4) { + curValue = $("#oneKeySetWeight").val(); + } else if (tag == 5) { + curValue = $("#oneKeySetPoints").val(); + } else if (tag == 6) { + curValue = $("#oneKeySetPointsDeduction").val(); + } else if (tag == 8) { + curValue = $("#oneKeySetPrice").val(); + } else if (tag == 9) { + curValue = $("#oneKeySetCostPrice").val(); + } else if (tag == 10) { + curValue = $("#oneKeySetMktPrice").val(); + } else if (tag == 7) { + curValue = $("#oneKeySetStock").val(); + } else if (tag == 11) { + curValue = $("#oneKeySetLevelOne").val(); + } else if (tag == 12) { + curValue = $("#oneKeySetLevelTwo").val(); + } else if (tag == 13) { + curValue = $("#oneKeySetLevelThree").val(); + } + + curValue = $.trim(curValue); + + if (isNaN(curValue) || !curValue) { + layer.msg("璇疯緭鍏ユ暟瀛�"); + return; + } + + $.each($("#productsTbody tr"), function (i, item) { + $($(item).find("td:eq(" + tag + ") input")).val(curValue); + }); + } +</script> diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/editShehei.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/editShehei.html new file mode 100644 index 0000000..10d5eb1 --- /dev/null +++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/editShehei.html @@ -0,0 +1,395 @@ +<script type="text/html" template lay-done="layui.data.sendParams(d);"> + <div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-CoreCmsGoods-editForm" id="LAY-app-CoreCmsGoods-editForm"> + <input type="hidden" name="id" value="{{d.params.data.id || '' }}" /> + <div class="layui-form-item"> + <label for="id" class="layui-form-label layui-form-required">鍟嗗搧ID</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="id" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.id || '' }}" placeholder="璇疯緭鍏ュ晢鍝両D" lay-reqText="璇疯緭鍏ュ晢鍝両D骞朵负鏁板瓧" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="bn" class="layui-form-label layui-form-required">鍟嗗搧鏉$爜</label> + <div class="layui-input-block"> + <input name="bn" lay-verType="tips" lay-verify="required|verifybn" class="layui-input" placeholder="璇疯緭鍏ュ晢鍝佹潯鐮�" lay-reqText="璇疯緭鍏ュ晢鍝佹潯鐮�" value="{{d.params.data.bn || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="name" class="layui-form-label layui-form-required">鍟嗗搧鍚嶇О</label> + <div class="layui-input-block"> + <input name="name" lay-verType="tips" lay-verify="required|verifyname" class="layui-input" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" lay-reqText="璇疯緭鍏ュ晢鍝佸悕绉�" value="{{d.params.data.name || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="brief" class="layui-form-label layui-form-required">鍟嗗搧绠�浠�</label> + <div class="layui-input-block"> + <input name="brief" lay-verType="tips" lay-verify="required|verifybrief" class="layui-input" placeholder="璇疯緭鍏ュ晢鍝佺畝浠�" lay-reqText="璇疯緭鍏ュ晢鍝佺畝浠�" value="{{d.params.data.brief || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="image" class="layui-form-label layui-form-required">缂╃暐鍥�</label> + <div class="layui-input-inline"> + <input name="image" id="imageInput" lay-verType="tips" lay-verify="required" class="layui-input" value="{{d.params.data.image || '' }}" placeholder="璇蜂笂浼犵缉鐣ュ浘" lay-reqText="璇蜂笂浼犵缉鐣ュ浘" /> + </div> + <div class="layui-input-inline"> + <button type="button" class="layui-btn" id="upBtnimage" lay-active="doCropperImg">涓婁紶鍥剧墖</button> + <img class="coreshop-upload-img" id="viewImgBoximage" src="{{d.params.data.image || layui.setter.noImagePicUrl }}"> + </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"> + <label for="video" class="layui-form-label layui-form-required">瑙嗛</label> + <div class="layui-input-block"> + <input name="video" lay-verType="tips" lay-verify="required|verifyvideo" class="layui-input" placeholder="璇疯緭鍏ヨ棰�" lay-reqText="璇疯緭鍏ヨ棰�" value="{{d.params.data.video || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="productsDistributionType" class="layui-form-label layui-form-required">浣i噾鍒嗛厤鏂瑰紡</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="productsDistributionType" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.productsDistributionType || '' }}" placeholder="璇疯緭鍏ヤ剑閲戝垎閰嶆柟寮�" lay-reqText="璇疯緭鍏ヤ剑閲戝垎閰嶆柟寮忓苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="goodsCategoryId" class="layui-form-label layui-form-required">鍟嗗搧鍒嗙被</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="goodsCategoryId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.goodsCategoryId || '' }}" placeholder="璇疯緭鍏ュ晢鍝佸垎绫�" lay-reqText="璇疯緭鍏ュ晢鍝佸垎绫诲苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="goodsTypeId" class="layui-form-label layui-form-required">鍟嗗搧绫诲埆</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="goodsTypeId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.goodsTypeId || '' }}" placeholder="璇疯緭鍏ュ晢鍝佺被鍒�" lay-reqText="璇疯緭鍏ュ晢鍝佺被鍒苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="goodsSkuIds" class="layui-form-label layui-form-required">sku搴忓垪</label> + <div class="layui-input-block"> + <input name="goodsSkuIds" lay-verType="tips" lay-verify="required|verifygoodsSkuIds" class="layui-input" placeholder="璇疯緭鍏ku搴忓垪" lay-reqText="璇疯緭鍏ku搴忓垪" value="{{d.params.data.goodsSkuIds || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="goodsParamsIds" class="layui-form-label layui-form-required">鍙傛暟搴忓垪</label> + <div class="layui-input-block"> + <input name="goodsParamsIds" lay-verType="tips" lay-verify="required|verifygoodsParamsIds" class="layui-input" placeholder="璇疯緭鍏ュ弬鏁板簭鍒�" lay-reqText="璇疯緭鍏ュ弬鏁板簭鍒�" value="{{d.params.data.goodsParamsIds || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="brandId" class="layui-form-label layui-form-required">鍝佺墝</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="brandId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.brandId || '' }}" placeholder="璇疯緭鍏ュ搧鐗�" lay-reqText="璇疯緭鍏ュ搧鐗屽苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item" pane> + <label for="isNomalVirtual" class="layui-form-label layui-form-required">鏄惁铏氭嫙鍟嗗搧</label> + <div class="layui-input-block"> + <input type="checkbox" lay-filter="switch" name="isNomalVirtual" {{ d.params.data.isNomalVirtual ? 'checked' : '' }} lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴"> + </div> + </div> + + <div class="layui-form-item" pane> + <label for="isMarketable" class="layui-form-label layui-form-required">鏄惁涓婃灦</label> + <div class="layui-input-block"> + <input type="checkbox" lay-filter="switch" name="isMarketable" {{ d.params.data.isMarketable ? 'checked' : '' }} lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴"> + </div> + </div> + + <div class="layui-form-item"> + <label for="unit" class="layui-form-label layui-form-required">鍟嗗搧鍗曚綅</label> + <div class="layui-input-block"> + <input name="unit" lay-verType="tips" lay-verify="required|verifyunit" class="layui-input" placeholder="璇疯緭鍏ュ晢鍝佸崟浣�" lay-reqText="璇疯緭鍏ュ晢鍝佸崟浣�" value="{{d.params.data.unit || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="intro" class="layui-form-label layui-form-required">鍟嗗搧璇︽儏</label> + <div class="layui-input-block"> + <input name="intro" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="璇疯緭鍏ュ晢鍝佽鎯�" lay-reqText="璇疯緭鍏ュ晢鍝佽鎯�" value="{{d.params.data.intro || '' }}" /> + + </div> + </div> + + <div class="layui-form-item"> + <label for="spesDesc" class="layui-form-label layui-form-required">鍟嗗搧瑙勬牸搴忓垪鍙峰瓨鍌�</label> + <div class="layui-input-block"> + <input name="spesDesc" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="璇疯緭鍏ュ晢鍝佽鏍煎簭鍒楀彿瀛樺偍" lay-reqText="璇疯緭鍏ュ晢鍝佽鏍煎簭鍒楀彿瀛樺偍" value="{{d.params.data.spesDesc || '' }}" /> + + </div> + </div> + + <div class="layui-form-item"> + <label for="parameters" class="layui-form-label layui-form-required">鍙傛暟搴忓垪鍖�</label> + <div class="layui-input-block"> + <input name="parameters" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="璇疯緭鍏ュ弬鏁板簭鍒楀寲" lay-reqText="璇疯緭鍏ュ弬鏁板簭鍒楀寲" value="{{d.params.data.parameters || '' }}" /> + + </div> + </div> + + <div class="layui-form-item"> + <label for="commentsCount" class="layui-form-label layui-form-required">璇勮娆℃暟</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="commentsCount" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.commentsCount || '' }}" placeholder="璇疯緭鍏ヨ瘎璁烘鏁�" lay-reqText="璇疯緭鍏ヨ瘎璁烘鏁板苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="viewCount" class="layui-form-label layui-form-required">娴忚娆℃暟</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="viewCount" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.viewCount || '' }}" placeholder="璇疯緭鍏ユ祻瑙堟鏁�" lay-reqText="璇疯緭鍏ユ祻瑙堟鏁板苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="buyCount" class="layui-form-label layui-form-required">璐拱娆℃暟</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="buyCount" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.buyCount || '' }}" placeholder="璇疯緭鍏ヨ喘涔版鏁�" lay-reqText="璇疯緭鍏ヨ喘涔版鏁板苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="uptime" class="layui-form-label layui-form-required">涓婃灦鏃堕棿</label> + <div class="layui-input-block"> + <input name="uptime" id="editTime-CoreCmsGoods-uptime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏ヤ笂鏋舵椂闂�" lay-reqText="璇疯緭鍏ヤ笂鏋舵椂闂�" value="{{d.params.data.uptime || '' }}"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="downtime" class="layui-form-label layui-form-required">涓嬫灦鏃堕棿</label> + <div class="layui-input-block"> + <input name="downtime" id="editTime-CoreCmsGoods-downtime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏ヤ笅鏋舵椂闂�" lay-reqText="璇疯緭鍏ヤ笅鏋舵椂闂�" value="{{d.params.data.downtime || '' }}"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="sort" class="layui-form-label layui-form-required">鍟嗗搧鎺掑簭</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="sort" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.sort || '' }}" placeholder="璇疯緭鍏ュ晢鍝佹帓搴�" lay-reqText="璇疯緭鍏ュ晢鍝佹帓搴忓苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="labelIds" class="layui-form-label layui-form-required">鏍囩id閫楀彿鍒嗛殧</label> + <div class="layui-input-block"> + <input name="labelIds" lay-verType="tips" lay-verify="required|verifylabelIds" class="layui-input" placeholder="璇疯緭鍏ユ爣绛緄d閫楀彿鍒嗛殧" lay-reqText="璇疯緭鍏ユ爣绛緄d閫楀彿鍒嗛殧" value="{{d.params.data.labelIds || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="newSpec" class="layui-form-label layui-form-required">鑷畾涔夎鏍煎悕绉�</label> + <div class="layui-input-block"> + <input name="newSpec" lay-verType="tips" lay-verify="required" class="layui-input" placeholder="璇疯緭鍏ヨ嚜瀹氫箟瑙勬牸鍚嶇О" lay-reqText="璇疯緭鍏ヨ嚜瀹氫箟瑙勬牸鍚嶇О" value="{{d.params.data.newSpec || '' }}" /> + + </div> + </div> + + <div class="layui-form-item"> + <label for="openSpec" class="layui-form-label layui-form-required">寮�鍚鍒�</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="openSpec" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.openSpec || '' }}" placeholder="璇疯緭鍏ュ紑鍚鍒�" lay-reqText="璇疯緭鍏ュ紑鍚鍒欏苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="createTime" class="layui-form-label layui-form-required">鍒涘缓鏃堕棿</label> + <div class="layui-input-block"> + <input name="createTime" id="editTime-CoreCmsGoods-createTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" lay-reqText="璇疯緭鍏ュ垱寤烘椂闂�" value="{{d.params.data.createTime || '' }}"/> + </div> + </div> + + <div class="layui-form-item"> + <label for="updateTime" class="layui-form-label layui-form-required">鏇存柊鏃堕棿</label> + <div class="layui-input-block"> + <input name="updateTime" id="editTime-CoreCmsGoods-updateTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" lay-reqText="璇疯緭鍏ユ洿鏂版椂闂�" value="{{d.params.data.updateTime || '' }}"/> + </div> + </div> + + <div class="layui-form-item" pane> + <label for="isRecommend" class="layui-form-label layui-form-required">鏄惁鎺ㄨ崘</label> + <div class="layui-input-block"> + <input type="checkbox" lay-filter="switch" name="isRecommend" {{ d.params.data.isRecommend ? 'checked' : '' }} lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴"> + </div> + </div> + + <div class="layui-form-item" pane> + <label for="isHot" class="layui-form-label layui-form-required">鏄惁鐑棬</label> + <div class="layui-input-block"> + <input type="checkbox" lay-filter="switch" name="isHot" {{ d.params.data.isHot ? 'checked' : '' }} lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴"> + </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="initialSales" class="layui-form-label layui-form-required">鍒濆閿�閲�</label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="initialSales" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.initialSales || '' }}" placeholder="璇疯緭鍏ュ垵濮嬮攢閲�" lay-reqText="璇疯緭鍏ュ垵濮嬮攢閲忓苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="areaCode" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input name="areaCode" lay-verType="tips" lay-verify="required|verifyareaCode" class="layui-input" placeholder="璇疯緭鍏�" lay-reqText="璇疯緭鍏�" value="{{d.params.data.areaCode || '' }}" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="publisherId" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="publisherId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.publisherId || '' }}" placeholder="璇疯緭鍏�" lay-reqText="璇疯緭鍏ュ苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="approverId" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="approverId" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.approverId || '' }}" placeholder="璇疯緭鍏�" lay-reqText="璇疯緭鍏ュ苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="auditStatus" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input type="number" min="0" max="999999" name="auditStatus" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.auditStatus || '' }}" placeholder="璇疯緭鍏�" lay-reqText="璇疯緭鍏ュ苟涓烘暟瀛�" /> + </div> + </div> + + <div class="layui-form-item"> + <label for="auditTime" class="layui-form-label layui-form-required"></label> + <div class="layui-input-block"> + <input name="auditTime" id="editTime-CoreCmsGoods-auditTime" type="text" lay-verType="tips" lay-verify="required|datetime" class="layui-input" placeholder="璇疯緭鍏�" lay-reqText="璇疯緭鍏�" value="{{d.params.data.auditTime || '' }}"/> + </div> + </div> + + <div class="layui-form-item text-right core-hidden"> + <input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-CoreCmsGoods-editForm-submit" id="LAY-app-CoreCmsGoods-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; + + //缂╃暐鍥惧浘鐗囪鍓笂浼� + $('#upBtnimage').click(function () { + cropperImg.cropImg({ + aspectRatio: 1 / 1, + imgSrc: $('#viewImgBoximage').attr('src'), + onCrop: function (data) { + var loadIndex = layer.load(2); + coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) { + if (0 === res.code) { + $('#viewImgBoximage').attr('src', res.data.fileUrl); + $("#imageInput").val(res.data.fileUrl); + layer.msg(res.msg); + layer.close(loadIndex); + } else { + layer.close(loadIndex); + layer.msg(res.msg, { icon: 2, anim: 6 }); + } + }); + } + }); + }); + + //鍥鹃泦鍥剧墖瑁佸壀涓婁紶 + $('#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 }); + } + }); + } + }); + }); + + laydate.render({ + elem: '#editTime-CoreCmsGoods-uptime', + type: 'datetime', + fullPanel: true + }); + laydate.render({ + elem: '#editTime-CoreCmsGoods-downtime', + type: 'datetime', + fullPanel: true + }); + laydate.render({ + elem: '#editTime-CoreCmsGoods-createTime', + type: 'datetime', + fullPanel: true + }); + laydate.render({ + elem: '#editTime-CoreCmsGoods-updateTime', + type: 'datetime', + fullPanel: true + }); + laydate.render({ + elem: '#editTime-CoreCmsGoods-auditTime', + type: 'datetime', + fullPanel: true + }); + form.verify({ + + verifybn: [/^.{0,30}$/,'鍟嗗搧鏉$爜鏈�澶у彧鍏佽杈撳叆30浣嶅瓧绗�'], + verifyname: [/^.{0,200}$/,'鍟嗗搧鍚嶇О鏈�澶у彧鍏佽杈撳叆200浣嶅瓧绗�'], + verifybrief: [/^.{0,255}$/,'鍟嗗搧绠�浠嬫渶澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifyimage: [/^.{0,255}$/,'缂╃暐鍥炬渶澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifyvideo: [/^.{0,255}$/,'瑙嗛鏈�澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifygoodsSkuIds: [/^.{0,255}$/,'sku搴忓垪鏈�澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifygoodsParamsIds: [/^.{0,255}$/,'鍙傛暟搴忓垪鏈�澶у彧鍏佽杈撳叆255浣嶅瓧绗�'], + verifyunit: [/^.{0,20}$/,'鍟嗗搧鍗曚綅鏈�澶у彧鍏佽杈撳叆20浣嶅瓧绗�'], + verifylabelIds: [/^.{0,50}$/,'鏍囩id閫楀彿鍒嗛殧鏈�澶у彧鍏佽杈撳叆50浣嶅瓧绗�'], + verifyareaCode: [/^.{0,200}$/,'鏈�澶у彧鍏佽杈撳叆200浣嶅瓧绗�'], + }); + //閲嶈浇form + form.render(null, 'LAY-app-CoreCmsGoods-editForm'); + }) + }; +</script> diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/index.html new file mode 100644 index 0000000..da8e0fd --- /dev/null +++ b/CoreCms.Net.Web.Admin/wwwroot/views/baifenbingfa/distributiongoods/index.html @@ -0,0 +1,1003 @@ +<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/DistributionGoods/GetIndex" + lay-done="layui.data.done(d);" +></script> +<div class="table-body"> + <table + id="LAY-app-DistributionGoods-tableBox" + lay-filter="LAY-app-DistributionGoods-tableBox" + ></table> +</div> + +<script type="text/html" id="LAY-app-DistributionGoods-toolbar"> + <div class="layui-form coreshop-toolbar-search-form"> + <div class="layui-form-item"> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="id">鍟嗗搧ID</label> + <div class="layui-input-inline"> + <input type="text" name="id" placeholder="璇疯緭鍏ュ晢鍝両D" class="layui-input"> + </div> + </div> --> + <div class="layui-inline"> + <!-- <label class="layui-form-label" for="bn">鍟嗗搧鏉$爜</label> --> + <div class="layui-input-inline"> + <input + type="text" + name="bn" + 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="brief">鍟嗗搧绠�浠�</label> --> + <div class="layui-input-inline"> + <input + type="text" + name="brief" + placeholder="璇疯緭鍏ュ晢鍝佺畝浠�" + class="layui-input" + /> + </div> + </div> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="image">缂╃暐鍥�</label> + <div class="layui-input-inline"> + <input type="text" name="image" placeholder="璇疯緭鍏ョ缉鐣ュ浘" class="layui-input"> + </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="video">瑙嗛</label> + <div class="layui-input-inline"> + <input type="text" name="video" placeholder="璇疯緭鍏ヨ棰�" class="layui-input"> + </div> + </div> --> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="productsDistributionType">浣i噾鍒嗛厤鏂瑰紡</label> + <div class="layui-input-inline"> + <input type="text" name="productsDistributionType" placeholder="璇疯緭鍏ヤ剑閲戝垎閰嶆柟寮�" class="layui-input"> + </div> + </div> --> + <div class="layui-inline"> + <!-- <label class="layui-form-label" for="goodsCategoryId">鍟嗗搧鍒嗙被</label> --> + <div class="layui-input-inline"> + <div id="goodsSelectCategorytTreeDis" class="ew-xmselect-tree"></div> + </div> + </div> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="goodsTypeId">鍟嗗搧绫诲埆</label> + <div class="layui-input-inline"> + <input type="text" name="goodsTypeId" placeholder="璇疯緭鍏ュ晢鍝佺被鍒�" class="layui-input"> + </div> + </div> --> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="goodsSkuIds">sku搴忓垪</label> + <div class="layui-input-inline"> + <input type="text" name="goodsSkuIds" placeholder="璇疯緭鍏ku搴忓垪" class="layui-input"> + </div> + </div> --> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="goodsParamsIds">鍙傛暟搴忓垪</label> + <div class="layui-input-inline"> + <input type="text" name="goodsParamsIds" placeholder="璇疯緭鍏ュ弬鏁板簭鍒�" class="layui-input"> + </div> + </div> --> + <div class="layui-inline"> + <!-- <label class="layui-form-label" for="brandId">鍝佺墝</label> --> + <div class="layui-input-inline"> + <select name="brandId" id="brandId"> + <option value="">璇烽�夋嫨鎵�灞炲搧鐗�</option> + {{# layui.each(indexData.brands, function(index, item){ }} + <option value="{{ item.id }}">{{ item.name }}</option> + {{# }); }} + </select> + </div> + </div> + + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="isNomalVirtual">鏄惁铏氭嫙鍟嗗搧</label> + <div class="layui-input-inline"> + <select name="isNomalVirtual"> + <option value="">璇烽�夋嫨</option> + <option value="True">鏄�</option> + <option value="False">鍚�</option> + </select> + </div> + </div> --> + <div class="layui-inline"> + <!-- <label class="layui-form-label" for="isMarketable">鏄惁涓婃灦</label> --> + <div class="layui-input-inline"> + <select name="isMarketable"> + <option value="">璇烽�夋嫨鏄惁涓婃灦</option> + <option value="True">涓婃灦</option> + <option value="False">涓嬫灦</option> + </select> + </div> + </div> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="unit">鍟嗗搧鍗曚綅</label> + <div class="layui-input-inline"> + <input type="text" name="unit" placeholder="璇疯緭鍏ュ晢鍝佸崟浣�" class="layui-input"> + </div> + </div> --> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="intro">鍟嗗搧璇︽儏</label> + <div class="layui-input-inline"> + <input type="text" name="intro" 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="parameters">鍙傛暟搴忓垪鍖�</label> + <div class="layui-input-inline"> + <input type="text" name="parameters" placeholder="璇疯緭鍏ュ弬鏁板簭鍒楀寲" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="commentsCount">璇勮娆℃暟</label> + <div class="layui-input-inline"> + <input type="text" name="commentsCount" placeholder="璇疯緭鍏ヨ瘎璁烘鏁�" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="viewCount">娴忚娆℃暟</label> + <div class="layui-input-inline"> + <input type="text" name="viewCount" placeholder="璇疯緭鍏ユ祻瑙堟鏁�" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="buyCount">璐拱娆℃暟</label> + <div class="layui-input-inline"> + <input type="text" name="buyCount" placeholder="璇疯緭鍏ヨ喘涔版鏁�" class="layui-input"> + </div> + </div> --> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="uptime">涓婃灦鏃堕棿</label> + <div class="layui-input-inline" style="width: 260px;"> + <input type="text" name="uptime" id="searchTime-DistributionGoods-uptime" placeholder="璇疯緭鍏ヤ笂鏋舵椂闂�" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="downtime">涓嬫灦鏃堕棿</label> + <div class="layui-input-inline" style="width: 260px;"> + <input type="text" name="downtime" id="searchTime-DistributionGoods-downtime" placeholder="璇疯緭鍏ヤ笅鏋舵椂闂�" class="layui-input"> + </div> + </div> --> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="sort">鍟嗗搧鎺掑簭</label> + <div class="layui-input-inline"> + <input type="text" name="sort" placeholder="璇疯緭鍏ュ晢鍝佹帓搴�" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="labelIds">鏍囩id閫楀彿鍒嗛殧</label> + <div class="layui-input-inline"> + <input type="text" name="labelIds" placeholder="璇疯緭鍏ユ爣绛緄d閫楀彿鍒嗛殧" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="newSpec">鑷畾涔夎鏍煎悕绉�</label> + <div class="layui-input-inline"> + <input type="text" name="newSpec" placeholder="璇疯緭鍏ヨ嚜瀹氫箟瑙勬牸鍚嶇О" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="openSpec">寮�鍚鍒�</label> + <div class="layui-input-inline"> + <input type="text" name="openSpec" placeholder="璇疯緭鍏ュ紑鍚鍒�" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="createTime">鍒涘缓鏃堕棿</label> + <div class="layui-input-inline" style="width: 260px;"> + <input type="text" name="createTime" id="searchTime-DistributionGoods-createTime" placeholder="璇疯緭鍏ュ垱寤烘椂闂�" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="updateTime">鏇存柊鏃堕棿</label> + <div class="layui-input-inline" style="width: 260px;"> + <input type="text" name="updateTime" id="searchTime-DistributionGoods-updateTime" placeholder="璇疯緭鍏ユ洿鏂版椂闂�" class="layui-input"> + </div> + </div> --> + <div class="layui-inline"> + <!-- <label class="layui-form-label" for="isRecommend">鏄惁鎺ㄨ崘</label> --> + <div class="layui-input-inline"> + <select name="isRecommend"> + <option value="">璇烽�夋嫨鏄惁鎺ㄨ崘</option> + <option value="True">鎺ㄨ崘</option> + <option value="False">涓嶆帹鑽�</option> + </select> + </div> + </div> + <div class="layui-inline"> + <!-- <label class="layui-form-label" for="isHot">鏄惁鐑棬</label> --> + <div class="layui-input-inline"> + <select name="isHot"> + <option value="">璇烽�夋嫨鏄惁鐑棬</option> + <option value="True">鐑棬</option> + <option value="False">闈炵儹闂�</option> + </select> + </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="initialSales">鍒濆閿�閲�</label> + <div class="layui-input-inline"> + <input type="text" name="initialSales" placeholder="璇疯緭鍏ュ垵濮嬮攢閲�" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label" for="areaCode"></label> + <div class="layui-input-inline"> + <input type="text" name="areaCode" placeholder="璇疯緭鍏�" class="layui-input"> + </div> + </div> --> + <div class="layui-inline"> + <!-- <label class="layui-form-label" for="publisherId"></label> --> + <div class="layui-input-inline"> + <!-- <input type="text" name="publisherId" placeholder="璇疯緭鍏ュ彂甯冭�匢D" class="layui-input"> --> + <select lay-search="" name="publisherId" id="sledispublisherId"> + <option value="">璇烽�夋嫨鍙戝竷鑰�</option> + </select> + </div> + </div> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="approverId"></label> + <div class="layui-input-inline"> + <input type="text" name="approverId" placeholder="璇疯緭鍏ュ鏍歌��" class="layui-input"> + </div> + </div> --> + <div class="layui-inline"> + <!-- <label class="layui-form-label" for="auditStatus"></label> --> + <div class="layui-input-inline"> + <!-- <input type="text" name="auditStatus" placeholder="璇疯緭鍏ュ鏍哥姸鎬�" class="layui-input"> --> + <select name="auditStatus" id="auditStatus"> + <option value="">璇烽�夋嫨瀹℃牳鐘舵��</option> + {{# layui.each(indexData.auditStatusType, function(index, item){ }} + <option value="{{ item.value }}">{{ item.description }}</option> + {{# }); }} + </select> + </div> + </div> + <!-- <div class="layui-inline"> + <label class="layui-form-label" for="auditTime"></label> + <div class="layui-input-inline" style="width: 260px;"> + <input type="text" name="auditTime" id="searchTime-DistributionGoods-auditTime" placeholder="璇疯緭鍏�" class="layui-input"> + </div> + </div> --> + <div class="layui-inline"> + <button + class="layui-btn layui-btn-sm" + lay-submit + lay-filter="LAY-app-DistributionGoods-search" + > + <i class="layui-icon layui-icon-search"></i>绛涢�� + </button> + </div> + </div> + </div> +</script> + +<script type="text/html" id="LAY-app-DistributionGoods-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-DistributionGoods-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="#DistributionGoodsTbDelDrop{{d.LAY_INDEX}}" + no-shade="true" + >鍒犻櫎</a + > + <div + class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" + id="DistributionGoodsTbDelDrop{{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", + "xmSelect", + ], + 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, + xmSelect = layui.xmSelect; + + var searchwhere; + //鐩戝惉鎼滅储 + form.on("submit(LAY-app-DistributionGoods-search)", function (data) { + var field = data.field; + searchwhere = field; + //鎵ц閲嶈浇 + table.reloadData("LAY-app-DistributionGoods-tableBox", { + where: field, + }); + }); + + //鏁版嵁缁戝畾 + table.render({ + elem: "#LAY-app-DistributionGoods-tableBox", + url: layui.setter.apiUrl + "Api/DistributionGoods/GetPageList", + method: "POST", + toolbar: "#LAY-app-DistributionGoods-toolbar", + pagebar: "#LAY-app-DistributionGoods-pagebar", + className: "pagebarbox", + defaultToolbar: ["filter", "print", "exports"], + height: "full-127", //闈㈠寘灞�142px,鎼滅储妗�4琛�172,3琛�137,2琛�102,1琛�67 + page: true, + limit: 30, + limits: [10, 15, 20, 25, 30, 50, 100, 200], + text: { none: "鏆傛棤鐩稿叧鏁版嵁" }, + cols: [ + [ + { type: "checkbox", fixed: "left" }, + { field: "id", title: "鍟嗗搧ID", width: 60, sort: false }, + { field: "bn", title: "鍟嗗搧鏉$爜", sort: false, width: 125 }, + { field: "name", title: "鍟嗗搧鍚嶇О", sort: false, width: 200 }, + { + field: "image", + title: "缂╃暐鍥�", + width: 60, + sort: false, + templet: function (d) { + if (d.image) { + return ( + '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + + d.image + + '")><image style="max-width:28px;max-height:28px;" src="' + + d.image + + '"/></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: "brief", title: "鍟嗗搧绠�浠�", sort: false, width: 300 }, + + { + field: "goodsCategoryId", + title: "鍟嗗搧鍒嗙被", + sort: false, + width: 105, + }, + { field: "brandId", title: "鍝佺墝", sort: false, width: 105 }, + + { field: "unit", title: "鍟嗗搧鍗曚綅", sort: false, width: 105 }, + // { field: 'viewCount', title: '娴忚娆℃暟', sort: false,width: 105 }, + // { field: 'buyCount', title: '璐拱娆℃暟', sort: false,width: 105 }, + { field: "sort", title: "鍟嗗搧鎺掑簭", sort: false, width: 105 }, + { + field: "createTime", + title: "鍒涘缓鏃堕棿", + width: 130, + sort: false, + }, + + // { field: 'initialSales', title: '鍒濆閿�閲�', sort: false,width: 105 }, + { + field: "publisherId", + title: "鍙戝竷缁忛攢鍟�", + sort: false, + width: 105, + }, + { + field: "approverId", + title: "瀹℃牳浜哄憳", + sort: false, + width: 105, + }, + { + field: "auditStatus", + title: "瀹℃牳鐘舵��", + sort: false, + width: 105, + templet: function (f) { + let tem = d.data.auditStatusType?.filter( + (x) => x.value == f.auditStatus + ); + if (tem?.length > 0) + return d.data.auditStatusType?.filter( + (x) => x.value == f.auditStatus + )[0].description; + else return "鏃�"; + }, + }, + { + field: "auditTime", + title: "瀹℃牳鏃堕棿", + width: 130, + sort: false, + }, + { + field: "isMarketable", + title: "鏄惁涓婃灦", + width: 95, + templet: "#switch_isMarketable", + sort: false, + unresize: true, + }, + { + field: "isRecommend", + title: "鏄惁鎺ㄨ崘", + width: 95, + templet: "#switch_isRecommend", + sort: false, + unresize: true, + }, + { + field: "isHot", + title: "鏄惁鐑棬", + width: 95, + templet: "#switch_isHot", + sort: false, + unresize: true, + }, + { + width: 162, + align: "center", + title: "鎿嶄綔", + fixed: "right", + toolbar: "#LAY-app-DistributionGoods-tableBox-bar", + }, + ], + ], + }); + //鐩戝惉鎺掑簭浜嬩欢 + table.on("sort(LAY-app-DistributionGoods-tableBox)", function (obj) { + table.reloadData("LAY-app-DistributionGoods-tableBox", { + initSort: obj, //璁板綍鍒濆鎺掑簭锛屽鏋滀笉璁剧殑璇濓紝灏嗘棤娉曟爣璁拌〃澶寸殑鎺掑簭鐘舵�併�� + where: { + //璇锋眰鍙傛暟锛堟敞鎰忥細杩欓噷闈㈢殑鍙傛暟鍙换鎰忓畾涔夛紝骞堕潪涓嬮潰鍥哄畾鐨勬牸寮忥級 + orderField: obj.field, //鎺掑簭瀛楁 + orderDirection: obj.type, //鎺掑簭鏂瑰紡 + }, + }); + }); + + //澶村伐鍏锋爮浜嬩欢 + table.on("pagebar(LAY-app-DistributionGoods-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-DistributionGoods-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/DistributionGoods/GetCreate", + null, + function (e) { + if (e.code === 0) { + admin.popup({ + shadeClose: false, + title: "鍒涘缓鏁版嵁", + area: ["1200px", "90%"], + id: "LAY-popup-DistributionGoods-create", + success: function (layero, index) { + view(this.id) + .render("baifenbingfa/DistributionGoods/create", { + data: e.data, + }) + .done(function () { + //鐩戝惉鎻愪氦 + form.on( + "submit(LAY-app-DistributionGoods-createForm-submit)", + function (data) { + var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈� + field.isNomalVirtual = field.isNomalVirtual == "on"; + field.isMarketable = field.isMarketable == "on"; + field.isRecommend = field.isRecommend == "on"; + field.isHot = field.isHot == "on"; + field.isDel = field.isDel == "on"; + if (debug) { + console.log(field); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //鎻愪氦 Ajax 鎴愬姛鍚庯紝鍏抽棴褰撳墠寮瑰眰骞堕噸杞借〃鏍� + coreHelper.Post( + "Api/DistributionGoods/DoCreate", + field, + function (e) { + console.log(e); + if (e.code === 0) { + layui.table.reloadData( + "LAY-app-DistributionGoods-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-DistributionGoods-createForm-submit") + .click(); + }, + }); + } else { + layer.msg(e.msg); + } + } + ); + } + //鎵ц缂栬緫鎿嶄綔 + function doEdit(obj) { + coreHelper.Post( + "Api/DistributionGoods/GetEdit", + { id: obj.data.id }, + function (e) { + if (e.code === 0) { + admin.popup({ + shadeClose: false, + title: "缂栬緫鏁版嵁", + area: ["95%", "95%"], + id: "LAY-popup-DistributionGoods-edit", + success: function (layero, index) { + if( e.data.auditStatus==null||e.data.auditStatus==undefined){ + e.data.auditStatus=0; + } + view(this.id) + .render("baifenbingfa/DistributionGoods/edit", { + data: e.data, + initdata:d.data, + + }) + .done(function () { + //鐩戝惉鎻愪氦 + form.on( + "submit(LAY-app-DistributionGoods-editForm-submit)", + function (data) { + var field = data.field; //鑾峰彇鎻愪氦鐨勫瓧娈� + + field.isNomalVirtual = field.isNomalVirtual == "on"; + field.isMarketable = field.isMarketable == "on"; + field.isRecommend = field.isRecommend == "on"; + field.isHot = field.isHot == "on"; + field.isDel = field.isDel == "on"; + + if (debug) { + console.log(field); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //鎻愪氦 Ajax 鎴愬姛鍚庯紝鍏抽棴褰撳墠寮瑰眰骞堕噸杞借〃鏍� + coreHelper.Post( + "Api/DistributionGoods/DoEdit", + field, + function (e) { + if (e.code === 0) { + layui.table.reloadData( + "LAY-app-DistributionGoods-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-DistributionGoods-editForm-submit") + .click(); + }, + }); + } else { + layer.msg(e.msg); + } + } + ); + } + //鎵ц棰勮鎿嶄綔 + function doDetails(obj) { + coreHelper.Post("Api/DistributionGoods/GetDetails", { id: obj.data.id }, function (e) { + if (e.code === 0) { + admin.popup({ + shadeClose: false, + title: '鏌ョ湅璇︽儏', + area: ['95%', '95%'], + id: 'LAY-popup-CoreCmsGoods-details', + success: function (layero, index) { + view(this.id).render('good/goods/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/DistributionGoods/DoDelete", + { id: obj.data.id }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + table.reloadData("LAY-app-DistributionGoods-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/DistributionGoods/DoBatchDelete", + { id: delidsStr }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + table.reloadData("LAY-app-DistributionGoods-tableBox"); + layer.msg(e.msg); + } + ); + }); + } + //鎵ц鏌ヨ鏉′欢瀵煎嚭excel + function doQueryExportexcel() { + layer.confirm("纭畾鏍规嵁褰撳墠鐨勬煡璇㈡潯浠跺鍑烘暟鎹悧锛�", function (index) { + var field = searchwhere; + coreHelper.PostForm( + "Api/DistributionGoods/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/DistributionGoods/SelectExportExcel", + { id: delidsStr }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + if (e.code === 0) { + window.open(e.data); + } else { + layer.msg(e.msg); + } + } + ); + }); + } + //鐢ㄦ埛閫夋嫨妗嗕笅鎷夋鍒濆鍖� + formatUserSelInPut(coreHelper, form, "sledispublisherId", ""); + laydate.render({ + elem: "#searchTime-DistributionGoods-uptime", + type: "datetime", + range: "鍒�", + }); + laydate.render({ + elem: "#searchTime-DistributionGoods-downtime", + type: "datetime", + range: "鍒�", + }); + laydate.render({ + elem: "#searchTime-DistributionGoods-createTime", + type: "datetime", + range: "鍒�", + }); + laydate.render({ + elem: "#searchTime-DistributionGoods-updateTime", + type: "datetime", + range: "鍒�", + }); + laydate.render({ + elem: "#searchTime-DistributionGoods-auditTime", + type: "datetime", + range: "鍒�", + }); + + //鐩戝惉 琛ㄦ牸澶嶉�夋鎿嶄綔 + + layui.form.on("switch(switch_isNomalVirtual)", function (obj) { + coreHelper.Post( + "Api/DistributionGoods/DoSetisNomalVirtual", + { id: this.value, data: obj.elem.checked }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //table.reloadData('LAY-app-DistributionGoods-tableBox'); + layer.msg(e.msg); + } + ); + }); + + layui.form.on("switch(switch_isMarketable)", function (obj) { + coreHelper.Post( + "Api/DistributionGoods/DoSetisMarketable", + { id: this.value, data: obj.elem.checked }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //table.reloadData('LAY-app-DistributionGoods-tableBox'); + layer.msg(e.msg); + } + ); + }); + + layui.form.on("switch(switch_isRecommend)", function (obj) { + coreHelper.Post( + "Api/DistributionGoods/DoSetisRecommend", + { id: this.value, data: obj.elem.checked }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //table.reloadData('LAY-app-DistributionGoods-tableBox'); + layer.msg(e.msg); + } + ); + }); + + layui.form.on("switch(switch_isHot)", function (obj) { + coreHelper.Post( + "Api/DistributionGoods/DoSetisHot", + { id: this.value, data: obj.elem.checked }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //table.reloadData('LAY-app-DistributionGoods-tableBox'); + layer.msg(e.msg); + } + ); + }); + + layui.form.on("switch(switch_isDel)", function (obj) { + coreHelper.Post( + "Api/DistributionGoods/DoSetisDel", + { id: this.value, data: obj.elem.checked }, + function (e) { + if (debug) { + console.log(e); + } //寮�鍚皟璇曡繑鍥炴暟鎹� + //table.reloadData('LAY-app-DistributionGoods-tableBox'); + layer.msg(e.msg); + } + ); + }); + + // 娓叉煋涓嬫媺鏍� 鍟嗗搧鍒嗙被 + var insXmSel = xmSelect.render({ + el: "#goodsSelectCategorytTreeDis", + tips: "璇烽�夋嫨鍟嗗搧鍒嗙被", + height: "250px", + data: d.data.categories.data, + //initValue: mData ? [mData.parentId] : [], + model: { label: { type: "text" } }, + name: "goodsCategoryId", + prop: { + name: "title", + value: "id", + }, + radio: true, + clickClose: true, + tree: { + show: true, + indent: 15, + strict: false, + expandedKeys: true, + }, + }); + //閲嶈浇form + form.render(); + } + ); + }; +</script> +<script src="/views/liao.js"></script> +<!--璁剧疆鏄惁铏氭嫙鍟嗗搧--> +<script type="text/html" id="switch_isNomalVirtual"> + <input type="checkbox" name="switch_isNomalVirtual" value="{{d.id}}" + lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴" lay-filter="switch_isNomalVirtual" {{ + d.isNomalVirtual ? 'checked' : '' }}> +</script> + +<!--璁剧疆鏄惁涓婃灦--> +<script type="text/html" id="switch_isMarketable"> + <input {{d.auditStatus!=1?'disabled':''}} type="checkbox" + name="switch_isMarketable" value="{{d.id}}" lay-skin="switch" + lay-text="寮�鍚瘄鍏抽棴" lay-filter="switch_isMarketable" {{ d.isMarketable ? + 'checked' : '' }}> +</script> + +<!--璁剧疆鏄惁鎺ㄨ崘--> +<script type="text/html" id="switch_isRecommend"> + <input {{d.auditStatus!=1?'disabled':''}} type="checkbox" + name="switch_isRecommend" value="{{d.id}}" lay-skin="switch" + lay-text="寮�鍚瘄鍏抽棴" lay-filter="switch_isRecommend" {{ d.isRecommend ? + 'checked' : '' }}> +</script> + +<!--璁剧疆鏄惁鐑棬--> +<script type="text/html" id="switch_isHot"> + <input {{d.auditStatus!=1?'disabled':''}} type="checkbox" name="switch_isHot" + value="{{d.id}}" lay-skin="switch" lay-text="寮�鍚瘄鍏抽棴" + lay-filter="switch_isHot" {{ d.isHot ? '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/good/goods/create.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/create.html index ded9a9f..e33a034 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/create.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/create.html @@ -1601,6 +1601,7 @@ }, createbn: function () { var bn = layui.coreHelper.getSN('BN'); + $("#bn").val(bn); } , createSn: function () { diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html index 8a920fd..82815bb 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/edit.html @@ -767,7 +767,7 @@ } else { oldSingleData = d.data.products[0]; } - + //鍒濆鍖栧晢鍝佷俊鎭� var getTpl = getSpec_tpl.innerHTML, viewBox = document.getElementById('more_spec'); var tmpData = oldMultitermData; diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html index f86a144..5544bd9 100644 --- a/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html +++ b/CoreCms.Net.Web.Admin/wwwroot/views/good/goods/index.html @@ -437,7 +437,7 @@ //鎵ц棰勮鎿嶄綔 function doDetails(obj) { - console.log(obj); + coreHelper.Post("Api/CoreCmsGoods/GetDetails", { id: obj.data.id }, function (e) { if (e.code === 0) { admin.popup({ diff --git a/CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs b/CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs index f46e905..be3b566 100644 --- a/CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs +++ b/CoreCms.Net.Web.WebApi/Controllers/baifenbingfa/DistributorGoodsController.cs @@ -1,8 +1,32 @@ -锘縰sing CoreCms.Net.Model.Entities.baifenbingfa.jon; +锘縰sing AutoMapper; +using CoreCms.Net.Auth.HttpContextUser; +using CoreCms.Net.Caching.AutoMate.RedisCache; +using CoreCms.Net.Configuration; +using CoreCms.Net.DTO.ComponentsDTO; +using CoreCms.Net.Filter; +using CoreCms.Net.IRepository.UnitOfWork; +using CoreCms.Net.IServices; +using CoreCms.Net.IServices.baifenbingfa; +using CoreCms.Net.Model.Entities; +using CoreCms.Net.Model.Entities.baifenbingfa.jon; +using CoreCms.Net.Model.Entities.Expression; +using CoreCms.Net.Model.FromBody; using CoreCms.Net.Model.ViewModels.UI; +using CoreCms.Net.Services; +using CoreCms.Net.Services.Basic; +using CoreCms.Net.Utility.Extensions; +using CoreCms.Net.Utility.Helper; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; +using Nest; +using Newtonsoft.Json; +using SqlSugar; using Swashbuckle.AspNetCore.Annotations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; using System.Threading.Tasks; namespace CoreCms.Net.Web.WebApi.Controllers.baifenbingfa @@ -13,23 +37,468 @@ [Route("api/[controller]/[action]")] [ApiController] [Authorize] + [DPremisssionFilter]//缁忛攢鍟嗚闂帶鍒� + public class DistributorGoodsController : ControllerBase { + private readonly IHttpContextUser _user; + private readonly IUnitOfWork _worke; + + private readonly ICoreCmsBrandServices _brandServices; + private readonly ICoreCmsGoodsCategoryExtendServices _categoryExtendServices; + private readonly ICoreCmsGoodsCategoryServices _coreCmsGoodsCategoryServices; + private readonly ICoreCmsGoodsServices _coreCmsGoodsServices; + private readonly ICoreCmsGoodsGradeServices _goodsGradeServices; + private readonly ICoreCmsGoodsParamsServices _goodsParamsServices; + private readonly ICoreCmsGoodsTypeSpecServices _goodsTypeSpecServices; + private readonly ICoreCmsLabelServices _labelServices; + private readonly ICoreCmsProductsServices _productsServices; + private readonly ICoreCmsSettingServices _settingServices; + private readonly ICoreCmsGoodsTypeSpecValueServices _typeSpecValueServices; + private readonly ICoreCmsUserGradeServices _userGradeServices; + private readonly ICoreCmsProductsDistributionServices _productsDistributionServices; + private readonly IWebHostEnvironment _webHostEnvironment; + private readonly IRedisOperationRepository _redisOperationRepository; + private readonly ICoreCmsGoodsCategoryExtendServices _goodsCategoryExtendServices; + + /// <summary> - /// + /// 鏋勯�犲嚱鏁� + /// </summary> + public DistributorGoodsController(IWebHostEnvironment webHostEnvironment + , ICoreCmsGoodsServices coreCmsGoodsServices + , ICoreCmsSettingServices settingServices + , ICoreCmsBrandServices brandServices + , ICoreCmsGoodsCategoryServices coreCmsGoodsCategoryServices + , ICoreCmsUserGradeServices userGradeServices + , ICoreCmsGoodsParamsServices goodsParamsServices + , ICoreCmsGoodsTypeSpecValueServices typeSpecValueServices + , ICoreCmsGoodsGradeServices goodsGradeServices + , ICoreCmsProductsServices productsServices + , ICoreCmsGoodsCategoryExtendServices categoryExtendServices + , ICoreCmsLabelServices labelServices + , ICoreCmsProductsDistributionServices productsDistributionServices + , ICoreCmsGoodsTypeSpecServices goodsTypeSpecServices, + IRedisOperationRepository redisOperationRepository, + ICoreCmsGoodsCategoryExtendServices goodsCategoryExtendServices + ,IHttpContextUser user) + { + _webHostEnvironment = webHostEnvironment; + _coreCmsGoodsServices = coreCmsGoodsServices; + _settingServices = settingServices; + _brandServices = brandServices; + _coreCmsGoodsCategoryServices = coreCmsGoodsCategoryServices; + _userGradeServices = userGradeServices; + _goodsParamsServices = goodsParamsServices; + _typeSpecValueServices = typeSpecValueServices; + _goodsGradeServices = goodsGradeServices; + _productsServices = productsServices; + _categoryExtendServices = categoryExtendServices; + _labelServices = labelServices; + _productsDistributionServices = productsDistributionServices; + _goodsTypeSpecServices = goodsTypeSpecServices; + _redisOperationRepository = redisOperationRepository; + _goodsCategoryExtendServices = goodsCategoryExtendServices; + _user = user; + } + /// <summary> + /// 鑾峰彇鍟嗗搧鍒濆鍖栧弬鏁� /// </summary> /// <returns></returns> - [HttpPost("GetGoodslist")] - [SwaggerResponse(200, "杩斿洖鏁版嵁", typeof(WebApiCallBack))] - [SwaggerResponse(201, "Data绫诲瀷", typeof(Job_jobSeting))] - public async Task<WebApiCallBack> GetGoodslist() + [HttpPost("GetInitParam")] + public async Task<WebApiCallBack> GetInitParam() { var jm = new WebApiCallBack(); + //鑾峰彇鍟嗗搧鍒嗙被 + var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc, true, true); + //鑾峰彇鍙傛暟鍒楄〃 + var paramsList = await _goodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇SKU鍒楄〃 + var skuList = await _goodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇鍝佺墝 + var brands = await _brandServices.QueryListByClauseAsync(p => p.id > 0 && p.isShow == true, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇鐢ㄦ埛绛夌骇 + var userGrade = await _userGradeServices.QueryAsync(); - + //鑾峰彇鍟嗗搧缁忛攢enum + var productsDistributionType = EnumHelper.EnumToList<GlobalEnumVars.ProductsDistributionType>(); + + jm.data = new + { + categories = GoodsHelper.GetTree(categories, false), + brands, + userGrade, + productsDistributionType, + paramsList, + skuList + }; + + jm.status = true; return jm; } + /// <summary> + /// 鑾峰彇鍟嗗搧鍒楄〃 + /// </summary> + /// <returns></returns> + [HttpPost("GetGoodsList")] + public async Task<WebApiCallBack> GetGoodsList([FromBody] FMPageByWhereOrder entity) + { + var jm = new WebApiCallBack(); + + var where = PredicateBuilder.True<GoodListDTO>(); + + var className = string.Empty; + if (!string.IsNullOrWhiteSpace(entity.where)) + { + var obj = JsonConvert.DeserializeAnonymousType(entity.where, new + { + priceFrom = "", + priceTo = "", + catId = "", + brandId = "", + labelId = "", + searchName = "", + areaCode = "" + + }); + + if (!string.IsNullOrWhiteSpace(obj.priceFrom)) + { + var priceF = obj.priceFrom.ObjectToDouble(0); + if (priceF >= 0) + { + var f = Convert.ToDecimal(priceF); + where = where.And(p => p.price >= f); + } + } + if (!string.IsNullOrWhiteSpace(obj.priceTo)) + { + var priceT = obj.priceTo.ObjectToDouble(0); + if (priceT > 0) + { + var f = Convert.ToDecimal(priceT); + where = where.And(p => p.price <= f); + } + } + if (!string.IsNullOrWhiteSpace(obj.catId)) + { + var catId = obj.catId.ObjectToInt(0); + if (catId > 0) + { + + where = where.And(p => p.goodsCategoryId==catId); + + } + } + if (!string.IsNullOrWhiteSpace(obj.brandId)) + { + if (obj.brandId.Contains(",")) + { + var brandIdsIntArray = CommonHelper.StringToIntArray(obj.brandId); + if (brandIdsIntArray.Any()) + { + where = where.And(p => brandIdsIntArray.Contains(p.brandId)); + } + } + else + { + var brandId = obj.brandId.ObjectToInt(0); + if (brandId > 0) + { + where = where.And(p => p.brandId == brandId); + } + } + + } + if (!string.IsNullOrWhiteSpace(obj.labelId)) + { + where = where.And(p => (',' + p.labelIds.Trim(',') + ',').Contains(',' + obj.labelId.Trim(',') + ',')); + } + if (!string.IsNullOrWhiteSpace(obj.searchName)) + { + where = where.And(p => p.name.Contains(obj.searchName)); + } + if (!string.IsNullOrWhiteSpace(obj.areaCode)) + { + where = where.And(p => p.areaCode.Contains(obj.areaCode)); + } + + } + //鍙幏鍙栧綋鍓嶇敤鎴风殑 + where = where.And(p => p.publisherId == _user.ID); + //鑾峰彇鏁版嵁 + var list = await _coreCmsGoodsServices.QueryPageByDTOAsync(where, entity.page, entity.limit, true); + jm.status = true; + return jm; + + } + /// <summary> + /// 鑾峰彇鍟嗗搧璇︽儏 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + public async Task<WebApiCallBack> GetEdit([FromBody] FMIntId entity) + { + var jm = new WebApiCallBack(); + + var model = await _coreCmsGoodsServices.QueryByClauseAsync(x=>x.id==entity.id&&x.publisherId==_user.ID); + if (model == null) + { + jm.msg = "鏃犳潈淇敼璇ュ晢鍝�"; + jm.status = false; + return jm; + } + + jm.code = 0; + + //鑾峰彇鍟嗗搧鍒嗙被 + var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc, true, true); + //鑾峰彇鐢ㄦ埛绛夌骇 + var userGrade = await _userGradeServices.QueryAsync(); + //鐢ㄦ埛浠锋牸浣撶郴 + var goodsGrades = await _goodsGradeServices.QueryListByClauseAsync(p => p.goodsId == model.id); + //璐у搧淇℃伅 + var products = await _productsServices.QueryListByClauseAsync(p => p.goodsId == model.id && p.isDel == false); + //鎵╁睍淇℃伅 + var categoryExtend = await _categoryExtendServices.QueryListByClauseAsync(p => p.goodsId == model.id); + //鑾峰彇鍟嗗搧缁忛攢enum + var productsDistributionType = EnumHelper.EnumToList<GlobalEnumVars.ProductsDistributionType>(); + + //鑾峰彇鍙傛暟鍒楄〃 + var paramsList = await _goodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇SKU鍒楄〃 + var skuList = await _goodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇鍝佺墝 + var brands = await _brandServices.QueryListByClauseAsync(p => p.id > 0 && p.isShow == true, p => p.id, OrderByType.Desc, true, true); + + + if (products != null && products.Any()) + { + var pIds = products.Select(p => p.id).ToList(); + if (pIds.Any()) + { + // 鑾峰彇鍟嗗搧缁忛攢鏄庣粏 + var pds = await _productsDistributionServices.QueryListByClauseAsync(p => pIds.Contains(p.productsId), p => p.id, OrderByType.Asc); + products.ForEach(p => + { + foreach (var o in pds.Where(o => o.productsId == p.id)) + { + p.levelOne = o.levelOne; + p.levelTwo = o.levelTwo; + p.levelThree = o.levelThree; + } + }); + jm.otherData = pds; + } + + } + + //鑾峰彇鍙傛暟淇℃伅 + var goodsTypeSpec = new List<CoreCmsGoodsTypeSpec>(); + var goodsParams = new List<CoreCmsGoodsParams>(); + + //鑾峰彇鍙傛暟 + if (!string.IsNullOrEmpty(model.goodsParamsIds)) + { + var paramsIds = Utility.Helper.CommonHelper.StringToIntArray(model.goodsParamsIds); + goodsParams = await _goodsParamsServices.QueryListByClauseAsync(p => paramsIds.Contains(p.id)); + } + + //鑾峰彇灞炴�� + if (!string.IsNullOrEmpty(model.goodsSkuIds)) + { + var specIds = Utility.Helper.CommonHelper.StringToIntArray(model.goodsSkuIds); + var typeSpecs = skuList.Where(p => specIds.Contains(p.id)).ToList(); + var typeSpecValues = await _typeSpecValueServices.QueryListByClauseAsync(p => specIds.Contains(p.specId)); + typeSpecs.ForEach(p => + { + p.specValues = typeSpecValues.Where(o => o.specId == p.id).ToList(); + }); + goodsTypeSpec = typeSpecs; + } + + jm.data = new + { + model, + categories = GoodsHelper.GetTree(categories, false), + brands, + userGrade, + goodsGrades, + products, + categoryExtend, + goodsTypeSpec, + goodsParams, + productsDistributionType, + paramsList, + skuList + }; + + jm.status = true; + return jm; + + + } + + + + + // POST: Admins/CoreCmsGoods/Edit + /// <summary> + /// 缂栬緫鎻愪氦 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("缂栬緫鎻愪氦")] + public async Task<WebApiCallBack> DoEdit([FromBody] FMGoodsInsertModel entity) + { + var jm = await _coreCmsGoodsServices.UpdateAsync(entity); + var ret=new WebApiCallBack(); + ret.status = jm.code == 0 ? true : false; + ret.data = jm.data; + ret.msg=jm.msg; + + return ret; + } + // POST: Api/CoreCmsGoods/DoCreate + /// <summary> + /// 鍒涘缓鎻愪氦 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("鍒涘缓鎻愪氦")] + public async Task<WebApiCallBack> DoCreate([FromBody] FMGoodsInsertModel entity) + { + + entity.goods.auditStatus = AuditStatusType.Pending; + entity.goods.publisherId = _user.ID; + + var jm = await _coreCmsGoodsServices.InsertAsync(entity); + var ret = new WebApiCallBack(); + ret.status = jm.code == 0 ? true : false; + ret.data = jm.data; + ret.msg = jm.msg; + + return ret; + } + + + + // POST: Api/CoreCmsGoods/GetDetails/10 + /// <summary> + /// 棰勮鏁版嵁 + /// </summary> + /// <param name="entity"></param> + /// <returns></returns> + [HttpPost] + [Description("棰勮鏁版嵁")] + public async Task<WebApiCallBack> GetDetails([FromBody] FMIntId entity) + { + var jm = new WebApiCallBack(); + + var model = await _coreCmsGoodsServices.QueryByIdAsync(entity.id); + if (model == null) + { + jm.msg = "涓嶅瓨鍦ㄦ淇℃伅"; + jm.data = entity.id; + jm.status = false; + return jm; + } + + jm.code = 0; + + //鑾峰彇鍟嗗搧鍒嗙被 + var categories = await _coreCmsGoodsCategoryServices.QueryListByClauseAsync(p => p.isShow, p => p.sort, OrderByType.Asc, true, true); + + //鑾峰彇鐢ㄦ埛绛夌骇 + var userGrade = await _userGradeServices.QueryAsync(); + //鐢ㄦ埛浠锋牸浣撶郴 + var goodsGrades = await _goodsGradeServices.QueryListByClauseAsync(p => p.goodsId == model.id); + //璐у搧淇℃伅 + var products = + await _productsServices.QueryListByClauseAsync(p => p.goodsId == model.id && p.isDel == false); + //鎵╁睍淇℃伅 + var categoryExtend = await _categoryExtendServices.QueryListByClauseAsync(p => p.goodsId == model.id); + //鑾峰彇鍟嗗搧缁忛攢enum + var productsDistributionType = EnumHelper.EnumToList<GlobalEnumVars.ProductsDistributionType>(); + + + //鑾峰彇鍙傛暟鍒楄〃 + var paramsList = await _goodsParamsServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + //鑾峰彇SKU鍒楄〃 + var skuList = await _goodsTypeSpecServices.QueryListByClauseAsync(p => p.id > 0, p => p.id, OrderByType.Desc, true, true); + + //鑾峰彇鍝佺墝 + var brands = await _brandServices.QueryListByClauseAsync(p => p.id > 0 && p.isShow == true, p => p.id, OrderByType.Desc, true, true); + + + if (products != null && products.Any()) + { + var pIds = products.Select(p => p.id).ToList(); + if (pIds.Any()) + { + // 鑾峰彇鍟嗗搧缁忛攢鏄庣粏 + var pds = await _productsDistributionServices.QueryListByClauseAsync(p => pIds.Contains(p.productsId), p => p.id, OrderByType.Asc); + products.ForEach(p => + { + foreach (var o in pds.Where(o => o.productsId == p.id)) + { + p.levelOne = o.levelOne; + p.levelTwo = o.levelTwo; + p.levelThree = o.levelThree; + } + }); + jm.otherData = pds; + } + + } + + //鑾峰彇鍙傛暟淇℃伅 + var goodsTypeSpec = new List<CoreCmsGoodsTypeSpec>(); + var goodsParams = new List<CoreCmsGoodsParams>(); + + //鑾峰彇鍙傛暟 + if (!string.IsNullOrEmpty(model.goodsParamsIds)) + { + var paramsIds = Utility.Helper.CommonHelper.StringToIntArray(model.goodsParamsIds); + goodsParams = await _goodsParamsServices.QueryListByClauseAsync(p => paramsIds.Contains(p.id)); + } + + //鑾峰彇灞炴�� + if (!string.IsNullOrEmpty(model.goodsSkuIds)) + { + var specIds = Utility.Helper.CommonHelper.StringToIntArray(model.goodsSkuIds); + var typeSpecs = await _goodsTypeSpecServices.QueryListByClauseAsync(p => specIds.Contains(p.id)); + var typeSpecValues = await _typeSpecValueServices.QueryListByClauseAsync(p => specIds.Contains(p.specId)); + typeSpecs.ForEach(p => + { + p.specValues = typeSpecValues.Where(o => o.specId == p.id).ToList(); + }); + goodsTypeSpec = typeSpecs; + } + + jm.data = new + { + model, + categories = GoodsHelper.GetTree(categories, false), + brands, + userGrade, + goodsGrades, + products, + categoryExtend, + goodsTypeSpec, + goodsParams, + productsDistributionType, + paramsList, + skuList + }; + + jm.status = true; + return jm; + } } } diff --git a/CoreCms.Net.Web.WebApi/Program.cs b/CoreCms.Net.Web.WebApi/Program.cs index 217d89e..c9b1b4c 100644 --- a/CoreCms.Net.Web.WebApi/Program.cs +++ b/CoreCms.Net.Web.WebApi/Program.cs @@ -94,6 +94,8 @@ //娉ㄥ唽mvc锛屾敞鍐宺azor寮曟搸瑙嗗浘 builder.Services.AddMvc(options => { + //缁忛攢鍟嗚繃婊� + //options.Filters.Add<DPremisssionFilter>(); //瀹炰綋楠岃瘉 options.Filters.Add<RequiredErrorForClient>(); //寮傚父澶勭悊 diff --git a/CoreCms.Net.Web.WebApi/Properties/launchSettings.json b/CoreCms.Net.Web.WebApi/Properties/launchSettings.json index dfceaa6..9976e68 100644 --- a/CoreCms.Net.Web.WebApi/Properties/launchSettings.json +++ b/CoreCms.Net.Web.WebApi/Properties/launchSettings.json @@ -9,7 +9,7 @@ }, "CoreCms.Net.Web.WebApi": { "commandName": "Project", - "launchBrowser": false, + "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, -- Gitblit v1.9.1