diff --git a/src/BootstrapBlazor.Shared/Demos/BaiduOcr/BaiduOcrNormal.razor b/src/BootstrapBlazor.Shared/Demos/BaiduOcr/BaiduOcrNormal.razor index 4922932d4d7..d62ce716fc7 100644 --- a/src/BootstrapBlazor.Shared/Demos/BaiduOcr/BaiduOcrNormal.razor +++ b/src/BootstrapBlazor.Shared/Demos/BaiduOcr/BaiduOcrNormal.razor @@ -1,7 +1,8 @@ @inject IBaiduOcr OcrService @inject ToastService ToastService +@implements IDisposable - + @if (Invoice != null) { @@ -107,4 +108,79 @@ } } } + + /*以下示例为本站特殊处理逻辑可不参考*/ + private bool IsLoading { get; set; } + + private string ButtonIcon { get; } = "fa-solid fa-cloud-arrow-up"; + + private string LoadingIcon { get; } = "fa-solid fa-spinner fa-spin-pulse"; + + private string Icon => IsLoading ? LoadingIcon : ButtonIcon; + + /// + /// 取消请求令牌 + /// + private CancellationTokenSource? TokenSource { get; set; } + + private async Task OnClickToUploadBlock(UploadFile file) + { + if (file.File != null) + { + // 设置 按钮禁用 + IsLoading = true; + StateHasChanged(); + + // 获得上传文件 + var payload = await file.GetBytesAsync(file.File.Size); + if (payload?.Any() ?? false) + { + try + { + TokenSource ??= new(); + var result = await OcrService.CheckVatInvoiceAsync(payload, TokenSource.Token); + Invoice = result.Entity; + if (result.Entity != null) + { + await ToastService.Success("Vat Invoice", "VAT Invoice success!"); + } + else + { + await ToastService.Information("Vat Invoice", $"{result.ErrorCode}: {result.ErrorMessage}"); + } + } + catch (TaskCanceledException) + { + + } + } + + IsLoading = false; + StateHasChanged(); + } + } + + /// + /// 关闭网页时调用 + /// + /// + /// + protected virtual void Dispose(bool disposing) + { + if (disposing && TokenSource != null) + { + TokenSource.Cancel(); + TokenSource.Dispose(); + } + } + + /// + /// 关闭网页时调用 + /// + /// + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } }