InboundMaterialSearchViewModel.cs 2.2 KB
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using IndustrialControl.Services;
using System.Collections.ObjectModel;
using System;
using IndustrialControl.Pages;

namespace IndustrialControl.ViewModels;

public partial class InboundMaterialSearchViewModel : ObservableObject
{
    private readonly IWarehouseDataService _dataSvc;
    [ObservableProperty] private string? searchOrderNo;
    [ObservableProperty] private DateTime _createdDate = DateTime.Today;
    [ObservableProperty] private InboundOrderSummary? selectedOrder;

    public InboundMaterialSearchViewModel(IWarehouseDataService dataSvc)
    {
        _dataSvc = dataSvc;
        Orders = new ObservableCollection<InboundOrderSummary>();
    }



    public ObservableCollection<InboundOrderSummary> Orders { get; }

    [RelayCommand]
    private async Task SearchAsync()
    {
        Orders.Clear();
        var list = await _dataSvc.ListInboundOrdersAsync(SearchOrderNo, CreatedDate);
        foreach (var o in list)
            Orders.Add(o);
    }
    // 打开明细(携带 orderNo 导航)
    [RelayCommand]
    private async Task OpenItemAsync(InboundOrderSummary item)
    {
        if (item is null) return;
        await Shell.Current.GoToAsync(
            $"{nameof(InboundMaterialPage)}?orderNo={Uri.EscapeDataString(item.OrderNo)}");
    }

    [RelayCommand(CanExecute = nameof(CanGoInbound))]
    private async Task GoInboundAsync()
    {
        if (SelectedOrder == null) return;
        // 导航到原“入库明细/扫描”页面,并传入 orderNo
        await Shell.Current.GoToAsync($"//InboundMaterial?orderNo={Uri.EscapeDataString(SelectedOrder.OrderNo)}");
    }
    public async Task LoadOrderAsync(string orderNo)
    {
        var order = await _dataSvc.GetInboundOrderAsync(orderNo);
        // TODO: 将 order 映射到页面“基础信息”“待入库明细”等绑定源,保持你现有绑定字段/集合不变
    }
    private bool CanGoInbound() => SelectedOrder != null;
}

/// <summary>用于列表显示的精简 DTO</summary>
public record InboundOrderSummary(
    string OrderNo,
    string InboundType,
    string Supplier,
    DateTime CreatedAt
);