Files
qhmes/yy-admin-master/YY.Admin/ViewModels/WarehouseArea/WarehouseAreaEditDialogViewModel.cs

114 lines
3.6 KiB
C#

using HandyControl.Controls;
using HandyControl.Tools.Extension;
using YY.Admin.Core;
using YY.Admin.Core.Entity;
using YY.Admin.Core.Services;
namespace YY.Admin.ViewModels.WarehouseArea;
public class WarehouseAreaEditDialogViewModel : BaseViewModel, IDialogResultable<bool>
{
private readonly IWarehouseAreaService _warehouseAreaService;
private MesXslWarehouseArea? _area;
public MesXslWarehouseArea? Area
{
get => _area;
set => SetProperty(ref _area, value);
}
public bool IsAddMode => string.IsNullOrWhiteSpace(Area?.Id);
public string DialogTitle => IsAddMode ? "新增库区" : "编辑库区";
private bool _result;
public bool Result { get => _result; set => SetProperty(ref _result, value); }
public Action? CloseAction { get; set; }
public DelegateCommand SaveCommand { get; }
public DelegateCommand CancelCommand { get; }
public WarehouseAreaEditDialogViewModel(
IWarehouseAreaService warehouseAreaService,
IContainerExtension container,
IRegionManager regionManager) : base(container, regionManager)
{
_warehouseAreaService = warehouseAreaService;
SaveCommand = new DelegateCommand(async () => await SaveAsync());
CancelCommand = new DelegateCommand(() => CloseAction?.Invoke());
}
public void InitializeForAdd()
{
Area = new MesXslWarehouseArea { Status = "0" };
RaisePropertyChanged(nameof(IsAddMode));
RaisePropertyChanged(nameof(DialogTitle));
}
public void InitializeForEdit(MesXslWarehouseArea area)
{
Area = new MesXslWarehouseArea
{
Id = area.Id,
AreaCode = area.AreaCode,
AreaName = area.AreaName,
WarehouseId = area.WarehouseId,
WarehouseName = area.WarehouseName,
WarehouseCategory = area.WarehouseCategory,
WarehouseCategoryName = area.WarehouseCategoryName,
MaxCapacity = area.MaxCapacity,
ActualCapacity = area.ActualCapacity,
Remark = area.Remark,
Status = area.Status,
TenantId = area.TenantId,
};
RaisePropertyChanged(nameof(IsAddMode));
RaisePropertyChanged(nameof(DialogTitle));
}
private async Task SaveAsync()
{
if (Area == null) return;
if (string.IsNullOrWhiteSpace(Area.AreaCode))
{
MessageBox.Warning("库区编码不能为空!");
return;
}
var codeAvailable = await _warehouseAreaService.CheckAreaCodeAsync(Area.AreaCode.Trim(), Area.Id);
if (!codeAvailable)
{
MessageBox.Warning("该库区编码已存在,请更换!");
return;
}
Area.AreaCode = Area.AreaCode.Trim();
if (string.IsNullOrWhiteSpace(Area.AreaName))
Area.AreaName = Area.AreaCode;
try
{
bool ok;
if (IsAddMode)
{
ok = await _warehouseAreaService.AddAsync(Area);
if (ok) Growl.Success("新增库区成功!");
else { Growl.Error("新增失败,请重试!"); return; }
}
else
{
ok = await _warehouseAreaService.EditAsync(Area);
if (ok) Growl.Success("编辑库区成功!");
else { Growl.Error("编辑失败,请重试!"); return; }
}
Result = true;
CloseAction?.Invoke();
}
catch (Exception ex)
{
Growl.Error($"保存失败:{ex.Message}");
}
}
}