Setting.razor.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using EasyTemplate.Tool;
  2. using Microsoft.JSInterop;
  3. using SqlSugar;
  4. namespace EasyTemplate.Blazor.Web.Components.Pages.Management.Setting;
  5. public partial class Setting
  6. {
  7. protected override async Task OnAfterRenderAsync(bool firstRender)
  8. {
  9. if (firstRender)
  10. {
  11. try
  12. {
  13. await NavigationManager.RedirectLogin(IJSRuntime);
  14. await Query();
  15. var area = await Area.AsQueryable().OrderBy(x => x.Sort).ToTreeAsync(x => x.Children, x => x.ParentCode, 0, x => x.AreaCode);
  16. Areas = area.Select(ConvertToAreaItem).ToList();
  17. StateHasChanged();
  18. }
  19. catch (Exception ex)
  20. {
  21. // 添加详细的错误日志
  22. Console.WriteLine($"系统设置页面加载错误: {ex.Message}");
  23. Console.WriteLine($"堆栈跟踪: {ex.StackTrace}");
  24. // 可以考虑显示友好的错误提示给用户
  25. }
  26. }
  27. }
  28. private CascaderNode ConvertToAreaItem(SystemArea area)
  29. {
  30. return new CascaderNode
  31. {
  32. Value = area.Id.ToString(),
  33. Label = area.AreaName,
  34. Children = area.Children?.Select(ConvertToAreaItem).ToArray()
  35. };
  36. }
  37. private void OnChange(CascaderNode[] selectedNodes)
  38. {
  39. AreadIds = string.Join(",", selectedNodes.Select(x => x.Value));
  40. }
  41. /// <summary>
  42. /// 查
  43. /// </summary>
  44. /// <returns></returns>
  45. private async Task Query()
  46. {
  47. Loading = true;
  48. var data = await Repository.AsQueryable().FirstAsync();
  49. if (!string.IsNullOrWhiteSpace(data?.AreaIds))
  50. {
  51. var ids = data.AreaIds?.Split(',');
  52. data.LastAreadId = ids[^1].Trim();
  53. var area = Area.AsQueryable()
  54. .Where(item => SqlFunc.SplitIn(data.AreaIds, item.Id.ToString()))
  55. .Select(item => item.AreaName)
  56. .ToArray();
  57. data.Area = $"{string.Join(" ", area)} {data.Address}";
  58. }
  59. DataSource = data;
  60. Loading = false;
  61. }
  62. private async Task Update()
  63. {
  64. var data = DataSource;
  65. var flag = await Repository.AsUpdateable()
  66. .SetColumns(x => x.CompanyName == data.CompanyName)
  67. .SetColumns(x => x.CompanyNo == data.CompanyNo)
  68. .SetColumns(x => x.CopyRight == data.CopyRight)
  69. .SetColumns(x => x.RegisterDate == data.RegisterDate)
  70. .SetColumns(x => x.AreaIds == AreadIds)
  71. .SetColumns(x => x.Address == data.Address)
  72. .SetColumns(x => x.ContactPhone == data.ContactPhone)
  73. .SetColumns(x => x.ContactEmail == data.ContactEmail)
  74. .SetColumns(x => x.WebsiteUrl == data.WebsiteUrl)
  75. .Where(x=>x.Id == data.Id)
  76. .ExecuteCommandAsync() > 0;
  77. if (flag)
  78. {
  79. MessageService.Success("修改成功");
  80. }
  81. else
  82. {
  83. MessageService.Error("修改失败");
  84. }
  85. }
  86. /// <summary>
  87. /// 注入实例
  88. /// </summary>
  89. [Inject] SqlSugarRepository<SystemSetting> Repository { get; set; }
  90. /// <summary>
  91. ///
  92. /// </summary>
  93. [Inject] private SqlSugarRepository<SystemArea> Area { get; set; }
  94. /// <summary>
  95. ///
  96. /// </summary>
  97. [Inject] NavigationManager NavigationManager { get; set; }
  98. /// <summary>
  99. ///
  100. /// </summary>
  101. [Inject] IJSRuntime IJSRuntime { get; set; }
  102. /// <summary>
  103. ///
  104. /// </summary>
  105. private string AreadIds { get; set; }
  106. /// <summary>
  107. ///
  108. /// </summary>
  109. private List<CascaderNode> Areas { get; set; } = new List<CascaderNode>();
  110. /// <summary>
  111. ///
  112. /// </summary>
  113. [Inject] IMessageService MessageService { get; set; }
  114. /// <summary>
  115. ///
  116. /// </summary>
  117. private IForm Form;
  118. /// <summary>
  119. ///
  120. /// </summary>
  121. private SystemSetting DataSource;
  122. /// <summary>
  123. ///
  124. /// </summary>
  125. private bool Loading = false;
  126. }