Commit b8f69bae authored by gdlcf88's avatar gdlcf88

Improved product creation page

parent bcd2e5ee
......@@ -11,7 +11,7 @@ namespace EasyAbp.EShop.Products.Authorization
{
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.Update, L("Permission:Update"), MultiTenancySides.Host);
productTypes.AddChild(ProductsPermissions.ProductTypes.Delete, L("Permission:Delete"), MultiTenancySides.Host);
......
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
......@@ -13,6 +14,9 @@ namespace EasyAbp.EShop.Products.Products.Dtos
[DisplayName("ProductProductTypeId")]
public Guid ProductTypeId { get; set; }
[DisplayName("ProductCategory")]
public IEnumerable<Guid> CategoryIds { get; set; }
[Required]
[DisplayName("ProductDisplayName")]
public string DisplayName { get; set; }
......
......@@ -10,6 +10,8 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public Guid ProductTypeId { get; set; }
public IEnumerable<Guid> CategoryIds { get; set; }
public string DisplayName { get; set; }
public InventoryStrategy InventoryStrategy { get; set; }
......
......@@ -18,12 +18,14 @@ namespace EasyAbp.EShop.Products
/* You can configure your AutoMapper mapping configuration here.
* Alternatively, you can split your mapping configurations
* into multiple profile classes for a better organization. */
CreateMap<Product, ProductDto>();
CreateMap<Product, ProductDto>()
.Ignore(dto => dto.CategoryIds);
CreateMap<ProductDetail, ProductDetailDto>();
CreateMap<ProductAttribute, ProductAttributeDto>();
CreateMap<ProductAttributeOption, ProductAttributeOptionDto>();
CreateMap<ProductSku, ProductSkuDto>();
CreateMap<CreateUpdateProductDto, Product>(MemberList.Source)
.ForSourceMember(dto => dto.CategoryIds, opt => opt.DoNotValidate())
.Ignore(p => p.ProductDetail)
.Ignore(p => p.ProductAttributes)
.Ignore(p => p.ProductSkus);
......
......@@ -9,6 +9,7 @@
<abp-modal>
<abp-modal-header title="@L["CreateProduct"].Value"></abp-modal-header>
<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-modal-body>
<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 EasyAbp.EShop.Products.Categories;
using EasyAbp.EShop.Products.Categories.Dtos;
using EasyAbp.EShop.Products.Products;
using EasyAbp.EShop.Products.Products.Dtos;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Volo.Abp.Application.Dtos;
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]
public CreateUpdateProductDto Product { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
private readonly ICategoryAppService _categoryAppService;
private readonly IProductAppService _service;
public CreateModalModel(IProductAppService service)
public CreateModalModel(
ICategoryAppService categoryAppService,
IProductAppService service)
{
_categoryAppService = categoryAppService;
_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()
{
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.ProductTypes.Dtos;
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