async void Default_ZXing_Clicked(object sender, System.EventArgs e) { if (!await CheckCameraPermisstions()) { return; } var overLay = new ZXingOverlay(); var options = new ZXingOptions(); scanPage = new ScannerPage(options, overLay); scanPage.OnScanResult += (result) => { if (result is ZXingResult zResult) { Logger.Log($"Found bar code {zResult.Text}"); } }; await Navigation.PushAsync(scanPage); }
/// <summary> /// /// </summary> /// <param name="mode">1为扫描备货单号,2为扫描二维码,3为扫描物流单号,4为扫描k3备货单二维码查看图片,5为扫描二维码上传图片</param> public ScanPage(int mode) { InitializeComponent(); ZXing.Mobile.MobileBarcodeScanningOptions scanningOptions = new ZXing.Mobile.MobileBarcodeScanningOptions { DelayBetweenContinuousScans = 2000, PossibleFormats = new List <ZXing.BarcodeFormat> { ZXing.BarcodeFormat.CODE_128, ZXing.BarcodeFormat.CODE_39, ZXing.BarcodeFormat.CODE_93, ZXing.BarcodeFormat.EAN_13, ZXing.BarcodeFormat.EAN_8, ZXing.BarcodeFormat.QR_CODE }, TryHarder = App.Context.ScanHardMode }; zxing = new ZXingScannerView { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.FillAndExpand, Options = scanningOptions, }; zxing.OnScanResult += (result) => Device.BeginInvokeOnMainThread(async() => { Vibration.Vibrate(); var duration = TimeSpan.FromMilliseconds(100); Vibration.Vibrate(duration); if (mode == 1) { StockUpBillModel stockUpBillModel = (StockUpBillModel)BindingContext; Loadinganimation.IsVisible = true; //BackgroundWorker worker = new BackgroundWorker(); await Task.Run(() => { List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(result.ToString()); string json = apiHelper.InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.StockUpExecuteService", Parameters); if (json == "err" || string.IsNullOrWhiteSpace(json)) { return; } else { var jsonobject = JsonConvert.DeserializeObject <StockUpBillModel>(json); stockUpBillModel.Id = jsonobject.Id; stockUpBillModel.FBillNo = jsonobject.FBillNo; stockUpBillModel.F_XAY_Custom = jsonobject.F_XAY_Custom; stockUpBillModel.F_XAY_Phone = jsonobject.F_XAY_Phone; stockUpBillModel.F_XAY_Logistics = jsonobject.F_XAY_Logistics; stockUpBillModel.XAY_StockUpOrderEntry = jsonobject.XAY_StockUpOrderEntry; } }); await Navigation.PopAsync(); //worker.DoWork += delegate //{}; //worker.RunWorkerAsync(); //worker.RunWorkerCompleted += async delegate { await Navigation.PopAsync(); }; } else if (mode == 2) { string qrstring = BaseToString(result.ToString()); StockUpBillModel stockUpBillModel = (StockUpBillModel)BindingContext; if (qrstring.Substring(0, 2) != "#%") { label.Text = "二维码数据格式有误"; return; } string jsonstring = qrstring.Substring(2); string[] stringarray = jsonstring.Split(','); if (stringarray.Count() >= 3) { string ID = stringarray[0]; if (Convert.ToBoolean(stringarray[2])) { var MaterialInfo = stringarray[3].Split('&'); for (int i = 0; i < MaterialInfo.Count(); i++) { string subID = MaterialInfo[i]; List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(2); Parameters.Add(subID); string apiresult = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters); if (apiresult == "1") { var sd = stockUpBillModel.XAY_StockUpOrderEntry.Single(o => o.Id == ID); var s = sd.XAY_t_StockUpOrderSubEntry.Single(o => o.id == subID); s.F_XAY_IsCScan = true; var scancount = (from q in sd.XAY_t_StockUpOrderSubEntry where q.F_XAY_IsCScan == false select new { q.F_XAY_IsCScan }).Count(); if (scancount == 0) { await UpdateScanStateAsync(stockUpBillModel, ID, 1); } } else { label.Text = "err"; } } } else { await UpdateScanStateAsync(stockUpBillModel, ID, 1); label.Text = "扫描成功"; } } } else if (mode == 3) { StockUpPageModel Model = (StockUpPageModel)BindingContext; Model.LogisticsNum = result.ToString(); List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(mode); Parameters.Add(Model.Id); Parameters.Add(Model.LogisticsNum); string backresult = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters); if (backresult == "1") { Model.isscan = true; await Navigation.PopAsync(); } else { label.Text = "err"; } } else if (mode == 4) { zxing.IsScanning = false; StringBuilder stringBuilder = (StringBuilder)BindingContext; stringBuilder.Append(result.ToString()); await Navigation.PopAsync(); } else if (mode == 5) { string qrresult = BaseToString(result.ToString()); string billno = string.Empty; if (qrresult.Substring(0, 2) != "#%") { billno = result.ToString(); } else { Loadinganimation.IsVisible = true; string jsonstring = qrresult.Substring(2); string[] stringarray = jsonstring.Split(','); if (stringarray.Count() >= 3) { string ID = stringarray[0]; string json = "{\"FormId\":\"9d0a72f2a1104fe1881969ad5a1fc22d\",\"FieldKeys\":\"FBillNO\",\"FilterString\":\"F_XAY_StockUpOrderEntity_FENTRYID=" + ID + "\",\"OrderString\":\"\",\"TopRowCount\":\"0\",\"StartRow\":\"0\",\"Limit\":\"0\"}"; string[] lists = Actions.Jsonhelper.JsonToString(json); if (lists != null) { billno = lists[0]; billno = billno.Replace("[", ""); billno = billno.Replace("]", ""); } } } StockUpPhoto photopage = new StockUpPhoto(); photopage.BindingContext = billno; Navigation.InsertPageBefore(photopage, this); await Navigation.PopAsync(); } }); label = new Label { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, AutomationId = "label", TextColor = Color.White, FontSize = 30 }; button = new Button { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, Text = "hahha" }; Loadinganimation = new AnimationView { Animation = "loading.json", HorizontalOptions = LayoutOptions.Center, WidthRequest = 200, AutoPlay = true, Loop = true, IsVisible = false }; #region button.Clicked += async delegate { //Vibration.Vibrate(); //var duration = TimeSpan.FromMilliseconds(100); //Vibration.Vibrate(duration); if (mode == 1) { StockUpBillModel stockUpBillModel = (StockUpBillModel)BindingContext; Loadinganimation.IsVisible = true; await Task.Run(() => { List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add("WLBHD201806220001"); string result = apiHelper.InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.StockUpExecuteService", Parameters); if (result == "err" || string.IsNullOrWhiteSpace(result)) { return; } else { var json = JsonConvert.DeserializeObject <StockUpBillModel>(result); stockUpBillModel.FBillNo = json.FBillNo; stockUpBillModel.F_XAY_Custom = json.F_XAY_Custom; stockUpBillModel.F_XAY_Phone = json.F_XAY_Phone; stockUpBillModel.F_XAY_Logistics = json.F_XAY_Logistics; stockUpBillModel.XAY_StockUpOrderEntry = json.XAY_StockUpOrderEntry; } }); await Navigation.PopAsync(); } else if (mode == 2) { StockUpBillModel stockUpBillModel = (StockUpBillModel)BindingContext; string a = "#%{'Id':'100049','isSpareParts':false,'isgroup':true,'MaterialInfo':[{'Id':'100040','MaterialId':'4154077','Piece':1,'Qty':7,'Unit':'个'}]}"; if (a.Substring(0, 2) != "#%") { await DisplayAlert("提示", "二维码数据格式有误", "OK"); return; } string jsonstring = a.Substring(2, a.Length - 2); JObject jObject = (JObject)JsonConvert.DeserializeObject(jsonstring); if (jObject.ContainsKey("Id") && jObject.ContainsKey("BillNo")) { if (stockUpBillModel.FBillNo != jObject["BillNo"].ToString()) { return; } string ID = jObject["Id"].ToString(); if ((bool)jObject["isgroup"]) { var MaterialInfo = jObject["MaterialInfo"]; for (int i = 0; i < MaterialInfo.Count(); i++) { string subID = MaterialInfo[i]["Id"].ToString(); List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(2); Parameters.Add(subID); string result = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters);; if (result == "1") { var sd = stockUpBillModel.XAY_StockUpOrderEntry.Single(o => o.Id == ID && o.XAY_t_StockUpOrderSubEntry[i].id == subID); sd.XAY_t_StockUpOrderSubEntry[i].F_XAY_IsCScan = true; var scancount = (from q in sd.XAY_t_StockUpOrderSubEntry where q.F_XAY_IsCScan == false select new { q.F_XAY_IsCScan }).Count(); label.Text = "扫描成功"; if (scancount == 0) { await UpdateScanStateAsync(stockUpBillModel, ID, 1); } } } } else { await UpdateScanStateAsync(stockUpBillModel, ID, 1); } } } else if (mode == 3) { StockUpPageModel Model = (StockUpPageModel)BindingContext; Model.LogisticsNum = "123123123123"; List <object> Parameters = new List <object>(); Parameters.Add(App.Context.DataCenterId); Parameters.Add(mode); Parameters.Add(Model.Id); Parameters.Add(Model.LogisticsNum); string result = InvokeHelper.AbstractWebApiBusinessService("Kingdee.BOS.WebAPI.ServiceExtend.ServicesStub.CustomBusinessService.UpdateStockUpScanState", Parameters); if (result == "1") { Model.isscan = true; await Navigation.PopAsync(); } else { label.Text = "dadad"; } } }; #endregion overlay = new ZXingOverlay { ShowFlashButton = true, }; overlay.FlashButtonClicked += (sender, e) => { try { if (!zxing.IsTorchOn) { sender.Image = "flash_off.png"; // CrossLampState = true; zxing.IsTorchOn = true; } else { sender.Image = "flash_on.png"; zxing.IsTorchOn = false; } } catch (Exception ex) { throw ex; } }; var grid = new Grid { VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, }; grid.Children.Add(zxing); //overlay.Children.Add(button, 0, 0); overlay.Children.Add(Loadinganimation, 0, 1); overlay.Children.Add(label, 0, 0); grid.Children.Add(overlay); Content = grid; }
public CustomScanPage() : base() { listview = new ListView { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.CenterAndExpand, AutomationId = "listview", }; label = new Label { HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, AutomationId = "label", TextColor = Color.White, FontSize = 40 }; ZXing.Mobile.MobileBarcodeScanningOptions scanningOptions = new ZXing.Mobile.MobileBarcodeScanningOptions { DelayBetweenContinuousScans = 2000 }; zxing = new ZXingScannerView { HorizontalOptions = LayoutOptions.FillAndExpand, VerticalOptions = LayoutOptions.Start, Options = scanningOptions }; zxing.OnScanResult += (result) => Device.BeginInvokeOnMainThread(() => { //zxing.IsAnalyzing = false; //await DisplayAlert("扫描条码", result.Text, "OK"); HandleScanResult(result); // Navigate away //await Navigation.PopAsync(); }); overlay = new ZXingOverlay { //TopText = "请对准二维码", BottomText = "阴暗天气建议打开闪光灯", ShowFlashButton = true, ButtonText = "开灯" }; overlay.FlashButtonClicked += (sender, e) => { try { if (!zxing.IsTorchOn) { sender.Text = "关灯"; //CrossLampState = true; zxing.IsTorchOn = true; } else { sender.Text = "开灯"; zxing.IsTorchOn = false; } } catch (Exception) { } }; var grid = new Grid { VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, }; grid.Children.Add(zxing, 0, 0); overlay.Children.Add(label, 0, 2); grid.Children.Add(overlay); // The root page of your application Content = grid; }