106 lines
3.3 KiB
Plaintext
106 lines
3.3 KiB
Plaintext
@page "/Signature"
|
|
@using Ril.BlazorSignatureCanvas
|
|
@using SkiaSharp
|
|
@inject IDIS_Service service
|
|
|
|
<MudText Typo="Typo.h3" GutterBottom="true">在线签名</MudText>
|
|
<MudText>我们把签名写入标识中,用于其他应用通过解析标识,获取来自边缘终端的签名</MudText>
|
|
|
|
<SignatureCanvas
|
|
@ref="signatureCanvas"
|
|
width="256" height="512"
|
|
style="background-color: white; border: 1px solid black;"
|
|
MinLineWidth="0.5f"
|
|
MaxLineWidth="1"/>
|
|
<MudGrid>
|
|
<MudItem xs="3">
|
|
<MudPaper Class="pa-2">
|
|
<MudStack Spacing="2">
|
|
<MudTextField T="string" @bind-Value="@handle" Label="标识码"></MudTextField>
|
|
<MudTextField T="string" @bind-Value="@type" Label="值类型"></MudTextField>
|
|
<MudStack >
|
|
<MudStack Row="true">
|
|
<MudButton Variant="Variant.Outlined" @onclick=HandleClear>清除签名</MudButton>
|
|
<MudSpacer/>
|
|
<MudButton Variant="Variant.Outlined" Color="Color.Info" @onclick=HandleSave>保存签名</MudButton>
|
|
</MudStack>
|
|
</MudStack>
|
|
</MudStack>
|
|
<MudAlert Severity="@severity">@message</MudAlert>
|
|
</MudPaper>
|
|
</MudItem>
|
|
</MudGrid>
|
|
|
|
|
|
|
|
@code {
|
|
private string handle { get; set; } = string.Empty;
|
|
string type { get; set; } = "signature";
|
|
|
|
SignatureCanvas signatureCanvas { get; set; }
|
|
|
|
private string message { get; set; } = "等待注册中";
|
|
private Severity severity { get; set; } = Severity.Normal;
|
|
|
|
protected override void OnAfterRender(bool firstRender)
|
|
{
|
|
if(!firstRender)return;
|
|
{
|
|
if(BITKit.Data.TryGetValue<string>("Signature.DefaultHandle",out var value))
|
|
{
|
|
handle = value;
|
|
}
|
|
}
|
|
{
|
|
if(BITKit.Data.TryGetValue<string>("Signature.DefaultType",out var value))
|
|
{
|
|
type = value;
|
|
}
|
|
}
|
|
StateHasChanged();
|
|
}
|
|
|
|
async Task HandleClear()
|
|
{
|
|
await signatureCanvas.Clear();
|
|
}
|
|
|
|
async Task HandleSave()
|
|
{
|
|
message = "正在更新标识";
|
|
severity = Severity.Normal;
|
|
await InvokeAsync(StateHasChanged);
|
|
|
|
using var bitmap = SKBitmap.Decode(await signatureCanvas.ToByteArray());
|
|
using var signBitMap = SKBitmap.Decode(await signatureCanvas.ToByteArray());
|
|
using var canvas = new SKCanvas(bitmap);
|
|
canvas.Clear(SKColors.White);
|
|
canvas.DrawBitmap(signBitMap, new SKPoint());
|
|
|
|
using var rotatedData = bitmap.Encode(SKEncodedImageFormat.Png, 40);
|
|
|
|
using var newMs = new MemoryStream();
|
|
rotatedData.SaveTo(newMs);
|
|
|
|
var data = Convert.ToBase64String(newMs.ToArray());
|
|
|
|
data = "data:image/png;base64," + data;
|
|
|
|
try
|
|
{
|
|
await service.UpdateAsync(handle,new Dictionary<string, object>()
|
|
{
|
|
{type,data},
|
|
});
|
|
message = "更新成功";
|
|
severity = Severity.Success;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
message = e.Message;
|
|
severity = Severity.Error;
|
|
}
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
}
|