Commit b8f69bae authored by gdlcf88's avatar gdlcf88

Improved product creation page

parent bcd2e5ee
...@@ -11,7 +11,7 @@ namespace EasyAbp.EShop.Products.Authorization ...@@ -11,7 +11,7 @@ namespace EasyAbp.EShop.Products.Authorization
{ {
var moduleGroup = context.AddGroup(ProductsPermissions.GroupName, L("Permission:Products")); var moduleGroup = context.AddGroup(ProductsPermissions.GroupName, L("Permission:Products"));
var productTypes = moduleGroup.AddPermission(ProductsPermissions.ProductTypes.Default, L("Permission:ProductType"), MultiTenancySides.Host); var productTypes = moduleGroup.AddPermission(ProductsPermissions.ProductTypes.Default, L("Permission:ProductType"));
productTypes.AddChild(ProductsPermissions.ProductTypes.Create, L("Permission:Create"), MultiTenancySides.Host); productTypes.AddChild(ProductsPermissions.ProductTypes.Create, L("Permission:Create"), MultiTenancySides.Host);
productTypes.AddChild(ProductsPermissions.ProductTypes.Update, L("Permission:Update"), MultiTenancySides.Host); productTypes.AddChild(ProductsPermissions.ProductTypes.Update, L("Permission:Update"), MultiTenancySides.Host);
productTypes.AddChild(ProductsPermissions.ProductTypes.Delete, L("Permission:Delete"), MultiTenancySides.Host); productTypes.AddChild(ProductsPermissions.ProductTypes.Delete, L("Permission:Delete"), MultiTenancySides.Host);
......
using System; using System;
using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
...@@ -13,6 +14,9 @@ namespace EasyAbp.EShop.Products.Products.Dtos ...@@ -13,6 +14,9 @@ namespace EasyAbp.EShop.Products.Products.Dtos
[DisplayName("ProductProductTypeId")] [DisplayName("ProductProductTypeId")]
public Guid ProductTypeId { get; set; } public Guid ProductTypeId { get; set; }
[DisplayName("ProductCategory")]
public IEnumerable<Guid> CategoryIds { get; set; }
[Required] [Required]
[DisplayName("ProductDisplayName")] [DisplayName("ProductDisplayName")]
public string DisplayName { get; set; } public string DisplayName { get; set; }
......
...@@ -10,6 +10,8 @@ namespace EasyAbp.EShop.Products.Products.Dtos ...@@ -10,6 +10,8 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public Guid ProductTypeId { get; set; } public Guid ProductTypeId { get; set; }
public IEnumerable<Guid> CategoryIds { get; set; }
public string DisplayName { get; set; } public string DisplayName { get; set; }
public InventoryStrategy InventoryStrategy { get; set; } public InventoryStrategy InventoryStrategy { get; set; }
......
...@@ -18,12 +18,14 @@ namespace EasyAbp.EShop.Products ...@@ -18,12 +18,14 @@ namespace EasyAbp.EShop.Products
/* You can configure your AutoMapper mapping configuration here. /* You can configure your AutoMapper mapping configuration here.
* Alternatively, you can split your mapping configurations * Alternatively, you can split your mapping configurations
* into multiple profile classes for a better organization. */ * into multiple profile classes for a better organization. */
CreateMap<Product, ProductDto>(); CreateMap<Product, ProductDto>()
.Ignore(dto => dto.CategoryIds);
CreateMap<ProductDetail, ProductDetailDto>(); CreateMap<ProductDetail, ProductDetailDto>();
CreateMap<ProductAttribute, ProductAttributeDto>(); CreateMap<ProductAttribute, ProductAttributeDto>();
CreateMap<ProductAttributeOption, ProductAttributeOptionDto>(); CreateMap<ProductAttributeOption, ProductAttributeOptionDto>();
CreateMap<ProductSku, ProductSkuDto>(); CreateMap<ProductSku, ProductSkuDto>();
CreateMap<CreateUpdateProductDto, Product>(MemberList.Source) CreateMap<CreateUpdateProductDto, Product>(MemberList.Source)
.ForSourceMember(dto => dto.CategoryIds, opt => opt.DoNotValidate())
.Ignore(p => p.ProductDetail) .Ignore(p => p.ProductDetail)
.Ignore(p => p.ProductAttributes) .Ignore(p => p.ProductAttributes)
.Ignore(p => p.ProductSkus); .Ignore(p => p.ProductSkus);
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<abp-modal> <abp-modal>
<abp-modal-header title="@L["CreateProduct"].Value"></abp-modal-header> <abp-modal-header title="@L["CreateProduct"].Value"></abp-modal-header>
<abp-modal-body> <abp-modal-body>
<abp-select asp-for="Product.CategoryIds" asp-items="@Model.Categories" class="data-select" data-live-search="true" multiple />
<abp-form-content /> <abp-form-content />
</abp-modal-body> </abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer> <abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using EasyAbp.EShop.Products.Categories;
using EasyAbp.EShop.Products.Categories.Dtos;
using EasyAbp.EShop.Products.Products; using EasyAbp.EShop.Products.Products;
using EasyAbp.EShop.Products.Products.Dtos; using EasyAbp.EShop.Products.Products.Dtos;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Volo.Abp.Application.Dtos;
namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
{ {
...@@ -9,14 +16,33 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product ...@@ -9,14 +16,33 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
{ {
[BindProperty] [BindProperty]
public CreateUpdateProductDto Product { get; set; } public CreateUpdateProductDto Product { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
private readonly ICategoryAppService _categoryAppService;
private readonly IProductAppService _service; private readonly IProductAppService _service;
public CreateModalModel(IProductAppService service) public CreateModalModel(
ICategoryAppService categoryAppService,
IProductAppService service)
{ {
_categoryAppService = categoryAppService;
_service = service; _service = service;
} }
public async Task OnGetAsync(Guid? storeId)
{
Categories =
(await _categoryAppService.GetListAsync(new PagedAndSortedResultRequestDto
{MaxResultCount = LimitedResultRequestDto.MaxMaxResultCount}))?.Items
.Select(dto => new SelectListItem(dto.DisplayName, dto.Id.ToString()));
Product = new CreateUpdateProductDto
{
StoreId = storeId
};
}
public async Task<IActionResult> OnPostAsync() public async Task<IActionResult> OnPostAsync()
{ {
await _service.CreateAsync(Product); await _service.CreateAsync(Product);
......
using EasyAbp.EShop.Products.Products.Dtos; using EasyAbp.EShop.Products.Products.Dtos;
using EasyAbp.EShop.Products.Categories.Dtos; using EasyAbp.EShop.Products.Categories.Dtos;
using EasyAbp.EShop.Products.ProductTypes.Dtos; using EasyAbp.EShop.Products.ProductTypes.Dtos;
using AutoMapper; using AutoMapper;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment