InboundMaterialPage.xaml.cs 1.8 KB
using IndustrialControl.Services;
using IndustrialControl.ViewModels;

namespace IndustrialControl.Pages;

public partial class InboundMaterialPage : ContentPage
{
    private readonly ScanService _scanSvc;
    private readonly InboundMaterialViewModel _vm;

    public InboundMaterialPage(InboundMaterialViewModel vm, ScanService scanSvc)
    {
        InitializeComponent();
        BindingContext = vm;
        _scanSvc = scanSvc;
        _vm = vm;
    }

    protected override void OnAppearing()
    {
        base.OnAppearing();
        _scanSvc.Attach(ScanEntry);
        ScanEntry.Focus();
    }

    /// <summary>
    /// 清空扫描记录
    /// </summary>
    void OnClearClicked(object sender, EventArgs e)
    {
        _vm.ClearScan();
        ScanEntry.Text = string.Empty;
        ScanEntry.Focus();
    }

    /// <summary>
    /// 预留摄像头扫码
    /// </summary>
    async void OnScanClicked(object sender, EventArgs e)
    {
        await DisplayAlert("提示", "此按钮预留摄像头扫码;硬件扫描直接扣扳机。", "确定");
    }

    /// <summary>
    /// 扫描通过按钮点击
    /// </summary>
    void OnPassScanClicked(object sender, EventArgs e)
    {
        _vm.PassSelectedScan();
    }

    /// <summary>
    /// 取消扫描按钮点击
    /// </summary>
    void OnCancelScanClicked(object sender, EventArgs e)
    {
        _vm.CancelSelectedScan();
    }

    /// <summary>
    /// 确认入库按钮点击
    /// </summary>
    async void OnConfirmClicked(object sender, EventArgs e)
    {
        var ok = await _vm.ConfirmInboundAsync();
        if (ok)
        {
            await DisplayAlert("提示", "入库成功", "确定");
            _vm.ClearAll();
        }
        else
        {
            await DisplayAlert("提示", "入库失败,请检查数据", "确定");
        }
    }
}