InboundProductionPage.xaml.cs 2.0 KB
using IndustrialControl.Services;
using IndustrialControl.ViewModels;

namespace IndustrialControl.Pages
{
    public partial class InboundProductionPage : ContentPage
    {
        private readonly ScanService _scanSvc;
        private readonly InboundProductionViewModel _vm;

        public InboundProductionPage(InboundProductionViewModel 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("提示", "入库失败,请检查数据", "确定");
            }
        }
    }
}