Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 77 additions & 1 deletion src/BootstrapBlazor.Shared/Demos/BaiduOcr/BaiduOcrNormal.razor
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
@inject IBaiduOcr OcrService
@inject ToastService ToastService
@implements IDisposable

<ButtonUpload TValue="string" OnChange="@OnClickToUpload" BrowserButtonText="VATInvoice" ShowUploadFileList="false"></ButtonUpload>
<ButtonUpload TValue="string" OnChange="@OnClickToUploadBlock" BrowserButtonText="VATInvoice" ShowUploadFileList="false" IsDisabled="IsLoading" BrowserButtonIcon="@Icon"></ButtonUpload>

@if (Invoice != null)
{
Expand Down Expand Up @@ -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;

/// <summary>
/// 取消请求令牌
/// </summary>
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();
}
}

/// <summary>
/// 关闭网页时调用
/// </summary>
/// <param name="disposing"></param>
/// <returns></returns>
protected virtual void Dispose(bool disposing)
{
if (disposing && TokenSource != null)
{
TokenSource.Cancel();
TokenSource.Dispose();
}
}

/// <summary>
/// 关闭网页时调用
/// </summary>
/// <returns></returns>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}