| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- using AI.Platform.Core;
- using AI.Platform.Core.Entity.Device;
- using AI.Platform.Core.Entity.Site;
- using AI.Platform.Page.Pages.Site.Model;
- using AntDesign;
- using AntDesign.TableModels;
- using Dm.util;
- using Microsoft.AspNetCore.Components;
- using Microsoft.JSInterop;
- using SqlSugar;
- using System.Data.Common;
- using System.Text.Json;
- using System.Threading.Tasks;
- namespace AI.Platform.Page.Pages.Site;
- public partial class Screen
- {
- /// <summary>
- ///
- /// </summary>
- [Inject] NavigationManager NavigationManager { get; set; }
- /// <summary>
- /// 数据库仓储
- /// </summary>
- [Inject] SqlSugarRepository<ScreentEntity> _Repository { get; set; }
- /// <summary>
- /// 站点
- /// </summary>
- [Inject] SqlSugarRepository<SiteEntity> _SiteRepository { get; set; }
- /// <summary>
- ///
- /// </summary>
- [Inject] IJSRuntime IJSRuntime { get; set; }
- [Inject] IMessageService MessageService { get; set; }
- /// <summary>
- ///
- /// </summary>
- private ITable _Table;
-
- /// <summary>
- /// 站点列表信息
- /// </summary>
- private List<SnInfo> _DataSource;
-
- /// <summary>
- /// 总条数
- /// </summary>
- private int Total = 0;
- /// <summary>
- /// 加载
- /// </summary>
- private bool Loading = false;
- /// <summary>
- /// 查询过滤条件
- /// </summary>
- private FilterData filterData { set; get; } = new();
- /// <summary>
- /// 编辑弹窗
- /// </summary>
- private UpdateScreenDialog updateMediaDialog { set; get; } = new();
- /// <summary>
- /// 标识弹窗是否显示
- /// </summary>
- private bool isOpen { set; get; } = false;
- private ScrrenDialogModel model = new ScrrenDialogModel();
- // <summary>
- /// 站点
- /// </summary>
- private List<SiteInfo> Sites;
- /// <summary>
- /// 打开编辑弹窗
- /// </summary>
- /// <param name="type">类型:1:新增;2:编辑;3:删除</param>
- /// <param name="snInfo">大屏信息</param>
- /// <returns></returns>
- private async Task ShowDialog(int type, SnInfo? snInfo)
- {
- await searchSitesAsync();
- model = new ScrrenDialogModel();
- model.Type = type;
- model.Sites = Sites;
- if(type == 2 || type == 3)
- {
- model.sn = snInfo?.sn?? "";
- model.SiteId = snInfo?.SiteId ?? -1;
- model.siteName = snInfo?.siteName ?? "";
- model.Id = snInfo?.Id;
- model.Remark = snInfo?.Remark ?? "";
- }
- isOpen = true;
- }
-
- /// <summary>
- /// 编辑弹窗信息回调
- /// </summary>
- /// <param name="model"></param>
- private async Task OnDialogCallback(ScrrenDialogModel model)
- {
- switch (model.Type)
- {
- case 1:
- ScreentEntity screentEntity = await _Repository.AsQueryable().Where(it => it.sn == model.sn).FirstAsync();
- if(screentEntity == null)
- {
- await _Repository.InsertAsync(model.ToCompany());
- } else
- {
- MessageService.Error("该设备已存在");
- }
-
- break;
- case 2:
- ScreentEntity siteEntity = model.ToCompany();
- await _Repository.Context.Updateable(siteEntity).
- UpdateColumns(it => new { it.sn,it.SiteId, it.Remark})
- .ExecuteCommandAsync();
- break;
- case 3:
- await _Repository.DeleteByIdAsync(model.Id);
- break;
- }
- await Query();
- }
- /// <summary>
- /// 编辑弹窗是否显示回调
- /// </summary>
- /// <param name="isOpen"></param>
- private void OnDialogVisibleCallback(bool isOpen)
- {
- this.isOpen = isOpen;
- }
- /// <summary>
- /// 表格查询
- /// </summary>
- /// <param name="query"></param>
- /// <returns></returns>
- private async Task OnChange(QueryModel<SnInfo> query)
- => await Query();
- /// <summary>
- /// 查
- /// </summary>
- /// <returns></returns>
- private async Task Query()
- {
- Loading = true;
- var query = _Repository.AsQueryable()
- .LeftJoin<SiteEntity>((screen, site) => screen.SiteId == site.Id);
- query = query
- .WhereIF(filterData.siteName.IsNotNullOrEmpty(),(screen, site) => site.Name.Contains(filterData.siteName))
- .WhereIF(filterData.sn.IsNotNullOrEmpty(), (screen, site) => screen.sn.Contains(filterData.sn));
- Total = await query.CountAsync();
- _DataSource = await query
- .Select((screen,site) => new SnInfo()
- {
- Id = screen.Id,
- sn = screen.sn,
- SiteId = screen.SiteId,
- siteName = site.Name,
- CreateTime = screen.CreateTime,
- EditTime = screen.EditTime,
- Remark = screen.Remark,
- })
- .Skip((filterData.currentPage - 1) * filterData.pageSize)
- .Take(filterData.pageSize)
- .ToListAsync();
- await searchSitesAsync();
- Loading = false;
- }
- Func<PaginationTotalContext, string> showTotal = ctx => $"总数 {ctx.Total} ";
- private async Task OnPageChange(PaginationEventArgs args)
- {
- filterData.pageSize = args.PageSize;
- filterData.currentPage = args.Page;
- await Query();
- }
- /// <summary>
- /// 清空查询条件
- /// </summary>
- private void HandleReset()
- {
- filterData = new();
- }
- private async Task searchSitesAsync()
- {
- if (Global.CurrentUser.Account == "admin")
- {
- Sites = await _SiteRepository.AsQueryable()
- .Select<SiteInfo>()
- .ToListAsync();
- }
- else
- {
- Sites = await _SiteRepository.AsQueryable()
- .Where(it => it.Id == Global.CurrentUser.SiteId || it.ParentId == Global.CurrentUser.SiteId)
- .Select<SiteInfo>()
- .ToListAsync();
- }
- }
- protected override async void OnInitialized()
- {
- }
- protected override async Task OnAfterRenderAsync(bool firstRender)
- {
- if (firstRender)
- {
- await NavigationManager.RedirectLogin(IJSRuntime);
- await Query();
-
- }
- }
- private async Task OnChange(QueryModel<SystemMenu> query)
- => await Query();
- /// <summary>
- /// 查找条件
- /// </summary>
- public class FilterData
- {
- /// <summary>
- /// 页码
- /// </summary>
- public int currentPage { set; get; } = 1;
- /// <summary>
- /// 页数
- /// </summary>
- public int pageSize { set; get; } = 10;
- /// <summary>
- /// 要查找的站名
- /// </summary>
- public string? siteName { set; get; }
- /// <summary>
- /// 要查找的SN
- /// </summary>
- public string? sn{ set; get; }
- }
- }
|