114 lines
3.6 KiB
C#
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}");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|