67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								@page "/signature/{user}"
							 | 
						|||
| 
								 | 
							
								@layout EmptyLayout
							 | 
						|||
| 
								 | 
							
								<RadzenStack AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Center">
							 | 
						|||
| 
								 | 
							
								    @if (user.Sign != null)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        <RadzenImage Path="@($"data:image/png;base64,{Convert.ToBase64String(user.Sign)}")" Style="width:160px;height:80px;" />
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    <div class="border">
							 | 
						|||
| 
								 | 
							
								        <canvas />
							 | 
						|||
| 
								 | 
							
								    </div>
							 | 
						|||
| 
								 | 
							
								    <RadzenStack Orientation="Orientation.Horizontal" AlignItems="AlignItems.Center" JustifyContent="JustifyContent.Center">
							 | 
						|||
| 
								 | 
							
								        <RadzenButton Text="清除" Click="@(() => handleClear())" />
							 | 
						|||
| 
								 | 
							
								        <RadzenButton Text="撤销" Click="@(() => handleUndo())" />
							 | 
						|||
| 
								 | 
							
								        <RadzenButton Text="保存" Click="@(() => handlePreview())" />
							 | 
						|||
| 
								 | 
							
								    </RadzenStack>
							 | 
						|||
| 
								 | 
							
								</RadzenStack>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<div>
							 | 
						|||
| 
								 | 
							
								</div>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								@code {
							 | 
						|||
| 
								 | 
							
								    @inject IJSRuntime JsRuntime;
							 | 
						|||
| 
								 | 
							
								    @inject NotificationService _message;
							 | 
						|||
| 
								 | 
							
								    @inject IUserDao userDao;
							 | 
						|||
| 
								 | 
							
								    private IJSObjectReference module;
							 | 
						|||
| 
								 | 
							
								    @inject DialogService dialogService;
							 | 
						|||
| 
								 | 
							
								    [Parameter] public Pojo.User user { get; set; }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    protected override async Task OnAfterRenderAsync(bool firstRender)
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        if (firstRender)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            // 导入。路径是相对wwwroot写的,其他位置参考顶部链接
							 | 
						|||
| 
								 | 
							
								            module = await JsRuntime.InvokeAsync<IJSObjectReference>("import", "./signatureInit.js");
							 | 
						|||
| 
								 | 
							
								            await module.InvokeVoidAsync("createSignatrue");
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    async Task handleClear()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        await module.InvokeVoidAsync("clear");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    async Task handleUndo()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        await module.InvokeVoidAsync("undo");
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    async Task handlePreview()
							 | 
						|||
| 
								 | 
							
								    {
							 | 
						|||
| 
								 | 
							
								        bool flag = await module.InvokeAsync<bool>("isEmpty");
							 | 
						|||
| 
								 | 
							
								        if (flag)
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        else
							 | 
						|||
| 
								 | 
							
								        {
							 | 
						|||
| 
								 | 
							
								            string base64 = await module.InvokeAsync<string>("getPNG");
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            await userDao.UpdateSign(user.Id, base64.Split(",")[1]);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								            dialogService.Close(true);
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								}
							 |