@@ -202,8 +202,6 @@ public class DeepelephManager : IDeepelephManager, IScoped | |||||
if (json["type"].ToString() == "msg") | if (json["type"].ToString() == "msg") | ||||
{ | { | ||||
//TODO 发送短信 | |||||
//TxySmsUtil.SendSms(new[] { "" }, new[] { "" }); | |||||
var body = json["body"]; | var body = json["body"]; | ||||
if (body != null) | if (body != null) | ||||
{ | { | ||||
@@ -396,10 +394,6 @@ public class DeepelephManager : IDeepelephManager, IScoped | |||||
} | } | ||||
if (dayEnum==AlarmType.lie_on_table) | if (dayEnum==AlarmType.lie_on_table) | ||||
{ | |||||
} | |||||
else | |||||
{ | { | ||||
#region 添加预警 | #region 添加预警 | ||||
@@ -509,58 +503,61 @@ public class DeepelephManager : IDeepelephManager, IScoped | |||||
#endregion | #endregion | ||||
} | } | ||||
#region 添加点名 | |||||
var model = new ClassRoomCallDto | |||||
{ | |||||
TenantCode = body["tenantCode"]?.ToString(), | |||||
PoiId = body["poiId"]?.ToString(), | |||||
TaskId = body["taskId"]?.ToString(), | |||||
AlarmType = body["alarmType"].ToString(), | |||||
AlarmTypeDesc = dayEnum.GetDescription(), | |||||
EventId = body["eventId"]?.ToString(), | |||||
CameraId = body["cameraId"]?.ToString(), | |||||
Tick = TimestampToDateTime(body["tick"]?.ToString()), | |||||
PersonSetId = body["personSetId"]?.ToString(), | |||||
PersonId = body["personId"]?.ToString(), | |||||
Similarity = body["similarity"] != null ? (float)body["similarity"] : 0, | |||||
FaceScore = body["faceScore"] != null ? (float)body["faceScore"] : 0, | |||||
SnapshotUrl = body["snapshotUrl"]?.ToString(), | |||||
SnapshotData = body["snapshotData"]?.ToString(), | |||||
Rects = body["rects"]?.ToString(), | |||||
Extend = body["extend"]?.ToString(), | |||||
CreateTime = DateTime.Now, | |||||
TrackId = body["TrackId"]?.ToString() | |||||
}; | |||||
var signImg = Path.Combine(Directory.GetCurrentDirectory(), "Files", App.Configuration["AppInfo:RoomCallImg"], model.EventId + ".jpg"); | |||||
var steam = await model.SnapshotUrl.GetAsByteArrayAsync(); | |||||
model.SnapshotUrl = $"/Files/{App.Configuration["AppInfo:RoomCallImg"]}/{model.EventId}.jpg"; | |||||
using (MemoryStream ms = new MemoryStream(steam)) | |||||
else | |||||
{ | { | ||||
using (Bitmap bmp = new Bitmap(ms)) | |||||
#region 添加点名 | |||||
var model = new ClassRoomCallDto | |||||
{ | { | ||||
using (Graphics g = Graphics.FromImage(bmp)) | |||||
TenantCode = body["tenantCode"]?.ToString(), | |||||
PoiId = body["poiId"]?.ToString(), | |||||
TaskId = body["taskId"]?.ToString(), | |||||
AlarmType = body["alarmType"].ToString(), | |||||
AlarmTypeDesc = dayEnum.GetDescription(), | |||||
EventId = body["eventId"]?.ToString(), | |||||
CameraId = body["cameraId"]?.ToString(), | |||||
Tick = TimestampToDateTime(body["tick"]?.ToString()), | |||||
PersonSetId = body["personSetId"]?.ToString(), | |||||
PersonId = body["personId"]?.ToString(), | |||||
Similarity = body["similarity"] != null ? (float)body["similarity"] : 0, | |||||
FaceScore = body["faceScore"] != null ? (float)body["faceScore"] : 0, | |||||
SnapshotUrl = body["snapshotUrl"]?.ToString(), | |||||
SnapshotData = body["snapshotData"]?.ToString(), | |||||
Rects = body["rects"]?.ToString(), | |||||
Extend = body["extend"]?.ToString(), | |||||
CreateTime = DateTime.Now, | |||||
TrackId = body["TrackId"]?.ToString() | |||||
}; | |||||
var signImg = Path.Combine(Directory.GetCurrentDirectory(), "Files", App.Configuration["AppInfo:RoomCallImg"], model.EventId + ".jpg"); | |||||
var steam = await model.SnapshotUrl.GetAsByteArrayAsync(); | |||||
model.SnapshotUrl = $"/Files/{App.Configuration["AppInfo:RoomCallImg"]}/{model.EventId}.jpg"; | |||||
using (MemoryStream ms = new MemoryStream(steam)) | |||||
{ | |||||
using (Bitmap bmp = new Bitmap(ms)) | |||||
{ | { | ||||
using (Pen pen = new Pen(Color.Red, 3)) | |||||
using (Graphics g = Graphics.FromImage(bmp)) | |||||
{ | { | ||||
foreach (var item in body["rects"]) | |||||
using (Pen pen = new Pen(Color.Red, 3)) | |||||
{ | { | ||||
Rectangle rect = new Rectangle((int)item["left"], (int)item["top"], (int)item["width"], (int)item["height"]); | |||||
g.DrawRectangle(pen, rect); | |||||
foreach (var item in body["rects"]) | |||||
{ | |||||
Rectangle rect = new Rectangle((int)item["left"], (int)item["top"], (int)item["width"], (int)item["height"]); | |||||
g.DrawRectangle(pen, rect); | |||||
} | |||||
} | } | ||||
} | } | ||||
bmp.Save(signImg, ImageFormat.Jpeg); | |||||
} | } | ||||
bmp.Save(signImg, ImageFormat.Jpeg); | |||||
} | } | ||||
} | |||||
Scoped.Create((_, scope) => | |||||
{ | |||||
var services = scope.ServiceProvider; | |||||
var _repository = services.GetService<IClassRoomCallService>(); | |||||
_repository.Add(model); | |||||
}); | |||||
Scoped.Create((_, scope) => | |||||
{ | |||||
var services = scope.ServiceProvider; | |||||
var _repository = services.GetService<IClassRoomCallService>(); | |||||
_repository.Add(model); | |||||
}); | |||||
#endregion | |||||
#endregion | |||||
} | |||||
} | } | ||||
} | } | ||||
else if (json["type"].ToString() == "cmd") | else if (json["type"].ToString() == "cmd") | ||||
@@ -941,6 +941,21 @@ | |||||
结束时间 | 结束时间 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskDto.PersonSetName"> | |||||
<summary> | |||||
班级名称 | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskDto.DepName"> | |||||
<summary> | |||||
院系名称 | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskDto.MajorName"> | |||||
<summary> | |||||
专业名称 | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskSearch.CameraId"> | <member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskSearch.CameraId"> | ||||
<summary> | <summary> | ||||
摄像头id | 摄像头id | ||||
@@ -956,6 +971,16 @@ | |||||
人员底库id | 人员底库id | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskSearch.DepId"> | |||||
<summary> | |||||
系部id | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskSearch.MajorId"> | |||||
<summary> | |||||
院系id | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskSearch.StartTime"> | <member name="P:SafeCampus.Application.Services.Business.ClassRoomCallTaskService.ClassRoomCallTaskSearch.StartTime"> | ||||
<summary> | <summary> | ||||
开始时间 | 开始时间 | ||||
@@ -1569,6 +1594,16 @@ | |||||
班级id | 班级id | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.Application.Services.Business.PersonInfoService.PersonInfoSearch.DepId"> | |||||
<summary> | |||||
系部id | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.Application.Services.Business.PersonInfoService.PersonInfoSearch.MajorId"> | |||||
<summary> | |||||
院系id | |||||
</summary> | |||||
</member> | |||||
<member name="M:SafeCampus.Application.Services.Business.PersonInfoService.IPersonInfoService.Add(SafeCampus.Application.Services.Business.PersonInfoService.PersonInfoDto)"> | <member name="M:SafeCampus.Application.Services.Business.PersonInfoService.IPersonInfoService.Add(SafeCampus.Application.Services.Business.PersonInfoService.PersonInfoDto)"> | ||||
<summary> | <summary> | ||||
添加信息 | 添加信息 | ||||
@@ -1637,6 +1672,11 @@ | |||||
专业id | 专业id | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.Application.Services.Business.PersonSetInfoService.PersonSetInfoDto.TeacherId"> | |||||
<summary> | |||||
班主任id | |||||
</summary> | |||||
</member> | |||||
<member name="M:SafeCampus.Application.Services.Business.PersonSetInfoService.IPersonSetInfoService.Add(SafeCampus.Application.Services.Business.PersonSetInfoService.PersonSetInfoDto)"> | <member name="M:SafeCampus.Application.Services.Business.PersonSetInfoService.IPersonSetInfoService.Add(SafeCampus.Application.Services.Business.PersonSetInfoService.PersonSetInfoDto)"> | ||||
<summary> | <summary> | ||||
添加班级 | 添加班级 | ||||
@@ -1983,6 +2023,13 @@ | |||||
</summary> | </summary> | ||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:SafeCampus.Application.Services.Business.Warn.Service.IWarnInfoService.DeleteBatch(System.Collections.Generic.List{System.Int64})"> | |||||
<summary> | |||||
批量删除 | |||||
</summary> | |||||
<param name="Id"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:SafeCampus.Application.Services.IApiBaseInterface`3.Add(`0)"> | <member name="M:SafeCampus.Application.Services.IApiBaseInterface`3.Add(`0)"> | ||||
<summary> | <summary> | ||||
添加 | 添加 | ||||
@@ -43,6 +43,12 @@ public class BuildingService:DbRepository<BuildingInfo>,IBuildingService | |||||
{ | { | ||||
throw Oops.Oh("信息不存在"); | throw Oops.Oh("信息不存在"); | ||||
} | } | ||||
var dor = ChangeRepository<DbRepository<DormitoryInfo>>();//切换仓储 | |||||
var build = await dor.GetListAsync(x=>x.BuildId==model.Id); | |||||
if (build.Any()) | |||||
{ | |||||
throw Oops.Oh("宿舍楼下还有寝室不可删除!"); | |||||
} | |||||
await DeleteAsync(model); | await DeleteAsync(model); | ||||
return true; | return true; | ||||
} | } | ||||
@@ -5,6 +5,9 @@ public class CameraGroupService :DbRepository<CameraGroup>, ICameraGroupService | |||||
public async Task<bool> Add(CameraGroupAddInput input) | public async Task<bool> Add(CameraGroupAddInput input) | ||||
{ | { | ||||
var model = input.Adapt<CameraGroup>(); | var model = input.Adapt<CameraGroup>(); | ||||
var sysOrgList = await GetListAsync();//获取全部 | |||||
if (sysOrgList.Any(it =>it.Name==model.Name&&it.ParentId==model.ParentId))//判断同级是否有名称重复的 | |||||
throw Oops.Bah($"存在重复名称:{model.Name}"); | |||||
await InsertAsync(model); | await InsertAsync(model); | ||||
return true; | return true; | ||||
} | } | ||||
@@ -46,6 +49,8 @@ public class CameraGroupService :DbRepository<CameraGroup>, ICameraGroupService | |||||
public async Task<List<CameraGroup>> GetNoPageList() | public async Task<List<CameraGroup>> GetNoPageList() | ||||
{ | { | ||||
var list = await Context.Queryable<CameraGroup>() | var list = await Context.Queryable<CameraGroup>() | ||||
.Includes(x=>x.SysUserItem) | |||||
.OrderByDescending(x=>x.Id) | |||||
.ToTreeAsync(x => x.Children, x => x.ParentId, null); | .ToTreeAsync(x => x.Children, x => x.ParentId, null); | ||||
//var list = await GetListAsync(); | //var list = await GetListAsync(); | ||||
return list; | return list; | ||||
@@ -53,7 +58,7 @@ public class CameraGroupService :DbRepository<CameraGroup>, ICameraGroupService | |||||
public async Task<List<CameraGroup>> GetBIList() | public async Task<List<CameraGroup>> GetBIList() | ||||
{ | { | ||||
var list = await Context.Queryable<CameraGroup>().Includes(x => x.CameraInfos).ToListAsync(); | |||||
var list = await Context.Queryable<CameraGroup>().Includes(x => x.CameraInfos).Where(x=>x.CameraInfos.Any()).ToListAsync(); | |||||
return list; | return list; | ||||
} | } | ||||
} | } |
@@ -8,7 +8,7 @@ using System.Drawing.Imaging; | |||||
namespace SafeCampus.Application.Services.Business.CameraInfoService; | namespace SafeCampus.Application.Services.Business.CameraInfoService; | ||||
public class CameraInfoService:DbRepository<CameraInfo>, ICameraInfoService | |||||
public class CameraInfoService : DbRepository<CameraInfo>, ICameraInfoService | |||||
{ | { | ||||
private readonly IDeepelephManager _deepelephManager; | private readonly IDeepelephManager _deepelephManager; | ||||
private readonly ISimpleCacheService _simpleCacheService; | private readonly ISimpleCacheService _simpleCacheService; | ||||
@@ -60,7 +60,7 @@ public class CameraInfoService:DbRepository<CameraInfo>, ICameraInfoService | |||||
{ | { | ||||
using (Graphics g = Graphics.FromImage(bmp)) | using (Graphics g = Graphics.FromImage(bmp)) | ||||
{ | { | ||||
} | } | ||||
bmp.Save(signImg, ImageFormat.Jpeg); | bmp.Save(signImg, ImageFormat.Jpeg); | ||||
} | } | ||||
@@ -106,15 +106,35 @@ public class CameraInfoService:DbRepository<CameraInfo>, ICameraInfoService | |||||
return false; | return false; | ||||
} | } | ||||
private List<long> GetGroupChildren(List<CameraGroup> node) | |||||
{ | |||||
var list = new List<long>(); | |||||
if (node == null) return list; | |||||
foreach (var cameraGroup in node) | |||||
{ | |||||
list.Add(cameraGroup.Id); | |||||
list.AddRange(GetGroupChildren(cameraGroup.Children)); | |||||
} | |||||
return list; | |||||
} | |||||
public async Task<SqlSugarPagedList<CameraInfoDto>> GetPageList(CameraSearch search) | public async Task<SqlSugarPagedList<CameraInfoDto>> GetPageList(CameraSearch search) | ||||
{ | { | ||||
var groupids = new List<long>(); | |||||
if (search.GroupId.HasValue && search.GroupId.Value != -1) | |||||
{ | |||||
var group = await Context.Queryable<CameraGroup>() | |||||
.ToTreeAsync(x => x.Children, x => x.ParentId, search.GroupId); | |||||
groupids = GetGroupChildren(group); | |||||
groupids.Add(search.GroupId.Value); | |||||
} | |||||
var query = Context.Queryable<CameraInfo>() | var query = Context.Queryable<CameraInfo>() | ||||
.Includes(x=>x.SysUserItem) | |||||
.Includes(x=>x.CameraGroupItem) | |||||
.Includes(x => x.SysUserItem) | |||||
.Includes(x => x.CameraGroupItem) | |||||
.WhereIF(search.DeviceStatus.HasValue, x => x.DeviceStatus == search.DeviceStatus) | .WhereIF(search.DeviceStatus.HasValue, x => x.DeviceStatus == search.DeviceStatus) | ||||
.WhereIF(!string.IsNullOrEmpty(search.SensorId), x => x.SensorId == search.SensorId) | .WhereIF(!string.IsNullOrEmpty(search.SensorId), x => x.SensorId == search.SensorId) | ||||
.WhereIF(!string.IsNullOrEmpty(search.SensorName), x => x.SensorName == search.SensorName) | .WhereIF(!string.IsNullOrEmpty(search.SensorName), x => x.SensorName == search.SensorName) | ||||
.WhereIF(search.GroupId.HasValue, x => (search.GroupId.Value==-1?x.GroupId==null:x.GroupId==search.GroupId.Value)); | |||||
.WhereIF(search.GroupId.HasValue, x => (search.GroupId.Value == -1 ? x.GroupId == null : groupids.Contains(x.GroupId.Value))); | |||||
var list = await query.OrderBy(x => x.LastTime) | var list = await query.OrderBy(x => x.LastTime) | ||||
.ToPagedListAsyncMapster<CameraInfo, CameraInfoDto>(search.PageNum, search.PageSize); | .ToPagedListAsyncMapster<CameraInfo, CameraInfoDto>(search.PageNum, search.PageSize); | ||||
return list; | return list; | ||||
@@ -122,7 +142,7 @@ public class CameraInfoService:DbRepository<CameraInfo>, ICameraInfoService | |||||
public async Task<bool> BatchSetGroup(SetGroupInput input) | public async Task<bool> BatchSetGroup(SetGroupInput input) | ||||
{ | { | ||||
if (input.Id==-1) | |||||
if (input.Id == -1) | |||||
{ | { | ||||
var result = await Context.Updateable<CameraInfo>() | var result = await Context.Updateable<CameraInfo>() | ||||
.SetColumns(x => x.GroupId == null) | .SetColumns(x => x.GroupId == null) | ||||
@@ -144,9 +164,11 @@ public class CameraInfoService:DbRepository<CameraInfo>, ICameraInfoService | |||||
{ | { | ||||
var result = await Context.Updateable<CameraInfo>() | var result = await Context.Updateable<CameraInfo>() | ||||
.SetColumns(x => x.PushUserId == input.UserId) | .SetColumns(x => x.PushUserId == input.UserId) | ||||
.Where(x =>x.GroupId==input.GroupId) | |||||
.Where(x => x.GroupId == input.GroupId) | |||||
.ExecuteCommandAsync(); | .ExecuteCommandAsync(); | ||||
return result >0; | |||||
await Context.Updateable<CameraGroup>().SetColumns(x => x.PushUserId == input.UserId) | |||||
.Where(x => x.Id == input.GroupId).ExecuteCommandAsync(); | |||||
return result > 0; | |||||
} | } | ||||
public async Task<bool> BatchSetPushPerson(SetPushPersonInput input) | public async Task<bool> BatchSetPushPerson(SetPushPersonInput input) | ||||
@@ -169,7 +191,7 @@ public class CameraInfoService:DbRepository<CameraInfo>, ICameraInfoService | |||||
.SetColumns(x => x.PushUserId == input.UserId) | .SetColumns(x => x.PushUserId == input.UserId) | ||||
.Where(x => ids.Contains(x.SensorId)) | .Where(x => ids.Contains(x.SensorId)) | ||||
.ExecuteCommandAsync(); | .ExecuteCommandAsync(); | ||||
return result >0; | |||||
return result > 0; | |||||
} | } | ||||
throw Oops.Oh("分组不存在"); | throw Oops.Oh("分组不存在"); | ||||
@@ -26,10 +26,13 @@ public class ClassRoomCallTaskService : DbRepository<ClassRoomCallTask> ,IClassR | |||||
{ | { | ||||
var query = Context.Queryable<ClassRoomCallTask>() | var query = Context.Queryable<ClassRoomCallTask>() | ||||
.Includes(x => x.CameraInfoItem) | .Includes(x => x.CameraInfoItem) | ||||
.Includes(x=>x.PersonSetInfoItem,x=>x.MajorInfoItem,x=>x.DepartmentInfoItem ) | |||||
.WhereIF(!string.IsNullOrEmpty(search.PersonSetId), x => x.PersonSetId == search.PersonSetId) | .WhereIF(!string.IsNullOrEmpty(search.PersonSetId), x => x.PersonSetId == search.PersonSetId) | ||||
.WhereIF(!string.IsNullOrEmpty(search.TaskId), x => x.TaskId == search.TaskId) | .WhereIF(!string.IsNullOrEmpty(search.TaskId), x => x.TaskId == search.TaskId) | ||||
.WhereIF(!string.IsNullOrEmpty(search.CameraId), x => x.CameraId == search.CameraId) | .WhereIF(!string.IsNullOrEmpty(search.CameraId), x => x.CameraId == search.CameraId) | ||||
.WhereIF(search.StartTime.HasValue, x => x.CreateTime >= search.StartTime) | .WhereIF(search.StartTime.HasValue, x => x.CreateTime >= search.StartTime) | ||||
.WhereIF(search.DepId.HasValue, x => x.PersonSetInfoItem.MajorInfoItem.DepId == search.DepId) | |||||
.WhereIF(search.MajorId.HasValue, x => x.PersonSetInfoItem.MajorId == search.MajorId) | |||||
.WhereIF(search.EndTime.HasValue, x => x.EndTime <= search.EndTime); | .WhereIF(search.EndTime.HasValue, x => x.EndTime <= search.EndTime); | ||||
var list = await query.OrderByDescending(x => x.CreateTime) | var list = await query.OrderByDescending(x => x.CreateTime) | ||||
@@ -42,6 +42,18 @@ public class ClassRoomCallTaskDto | |||||
/// 结束时间 | /// 结束时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime EndTime { get; set; } | public DateTime EndTime { get; set; } | ||||
/// <summary> | |||||
/// 班级名称 | |||||
/// </summary> | |||||
public string PersonSetName { get; set; } | |||||
/// <summary> | |||||
/// 院系名称 | |||||
/// </summary> | |||||
public string DepName { get; set; } | |||||
/// <summary> | |||||
/// 专业名称 | |||||
/// </summary> | |||||
public string MajorName { get; set; } | |||||
} | } | ||||
public class ClassRoomCallTaskDtoMapper : IRegister | public class ClassRoomCallTaskDtoMapper : IRegister | ||||
{ | { | ||||
@@ -49,6 +61,9 @@ public class ClassRoomCallTaskDtoMapper : IRegister | |||||
{ | { | ||||
config.ForType<ClassRoomCallTask, ClassRoomCallTaskDto>() | config.ForType<ClassRoomCallTask, ClassRoomCallTaskDto>() | ||||
//.Map(dest => dest.CameraName, src => src.CameraId.GetDescriptionByEnum<CameraType>()); | //.Map(dest => dest.CameraName, src => src.CameraId.GetDescriptionByEnum<CameraType>()); | ||||
.Map(x=>x.PersonSetName,x=>x.PersonSetInfoItem.PersonSetName) | |||||
.Map(x=>x.MajorName,x=>x.PersonSetInfoItem.MajorInfoItem.Name) | |||||
.Map(x=>x.DepName,x=>x.PersonSetInfoItem.MajorInfoItem.DepartmentInfoItem.Name) | |||||
.Map(dest => dest.CameraName, src => src.CameraInfoItem.SensorName) | .Map(dest => dest.CameraName, src => src.CameraInfoItem.SensorName) | ||||
.Map(dest => dest.CameraGroup, src => src.CameraInfoItem.CameraGroupItem.Name); | .Map(dest => dest.CameraGroup, src => src.CameraInfoItem.CameraGroupItem.Name); | ||||
} | } |
@@ -15,6 +15,14 @@ public class ClassRoomCallTaskSearch:BasePageInput | |||||
/// </summary> | /// </summary> | ||||
public string PersonSetId { get; set; } | public string PersonSetId { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 系部id | |||||
/// </summary> | |||||
public long? DepId { get; set; } | |||||
/// <summary> | |||||
/// 院系id | |||||
/// </summary> | |||||
public long? MajorId { get; set; } | |||||
/// <summary> | |||||
/// 开始时间 | /// 开始时间 | ||||
/// </summary> | /// </summary> | ||||
public DateTime? StartTime { get; set; } | public DateTime? StartTime { get; set; } | ||||
@@ -61,7 +61,7 @@ public class MajorService: DbRepository<MajorInfo>, IMajorService | |||||
.WhereIF(!string.IsNullOrEmpty(search.Code),x=>x.Code.Contains(search.Code)) | .WhereIF(!string.IsNullOrEmpty(search.Code),x=>x.Code.Contains(search.Code)) | ||||
.WhereIF(search.DepId.HasValue,x=>x.DepId==search.DepId); | .WhereIF(search.DepId.HasValue,x=>x.DepId==search.DepId); | ||||
var list = await query.OrderByDescending(x => x.Sort) | |||||
var list = await query.OrderBy(x => x.Sort) | |||||
.ToPagedListAsyncMapster<MajorInfo, MajorDto>(search.PageNum, search.PageSize); | .ToPagedListAsyncMapster<MajorInfo, MajorDto>(search.PageNum, search.PageSize); | ||||
return list; | return list; | ||||
} | } | ||||
@@ -74,7 +74,7 @@ public class MajorService: DbRepository<MajorInfo>, IMajorService | |||||
.WhereIF(!string.IsNullOrEmpty(search.Code), x => x.Code.Contains(search.Code)) | .WhereIF(!string.IsNullOrEmpty(search.Code), x => x.Code.Contains(search.Code)) | ||||
.WhereIF(search.DepId.HasValue, x => x.DepId == search.DepId); | .WhereIF(search.DepId.HasValue, x => x.DepId == search.DepId); | ||||
var list = await query.OrderByDescending(x => x.Sort).ToListAsync(); | |||||
var list = await query.OrderBy(x => x.Sort).ToListAsync(); | |||||
return list.Adapt<List<MajorDto>>(); | return list.Adapt<List<MajorDto>>(); | ||||
} | } | ||||
} | } |
@@ -1,4 +1,6 @@ | |||||
namespace SafeCampus.Application.Services.Business.PersonFacesService; | |||||
using MoYu.RemoteRequest.Extensions; | |||||
namespace SafeCampus.Application.Services.Business.PersonFacesService; | |||||
public class PersonFacesService:DbRepository<PersonFaces>, IPersonFacesService | public class PersonFacesService:DbRepository<PersonFaces>, IPersonFacesService | ||||
{ | { | ||||
@@ -6,7 +8,14 @@ public class PersonFacesService:DbRepository<PersonFaces>, IPersonFacesService | |||||
{ | { | ||||
var oldList = await GetListAsync(x => x.PersonId == list[0].PersonId); | var oldList = await GetListAsync(x => x.PersonId == list[0].PersonId); | ||||
await DeleteAsync(oldList); | await DeleteAsync(oldList); | ||||
await InsertRangeAsync(list); | |||||
foreach (var item in list) | |||||
{ | |||||
var signImg = Path.Combine(Directory.GetCurrentDirectory(), "Files", App.Configuration["AppInfo:PersonImg"], item.FaceId + ".jpg"); | |||||
await item.FaceUrl.GetToSaveAsync(signImg); | |||||
item.FaceUrl = $"/Files/{App.Configuration["AppInfo:PersonImg"]}/{item.FaceId}.jpg"; | |||||
await InsertAsync(item); | |||||
} | |||||
//await InsertRangeAsync(list); | |||||
return true; | return true; | ||||
} | } | ||||
@@ -68,7 +68,9 @@ public class PersonInfoDto | |||||
public DateTime? InsTime { get; set; } | public DateTime? InsTime { get; set; } | ||||
public string DepName { get; set; } | public string DepName { get; set; } | ||||
public long DepId { get; set; } | |||||
public string MajorName { get; set; } | public string MajorName { get; set; } | ||||
public long MajorId { get; set; } | |||||
} | } | ||||
public class PersonInfoDtoMapper : IRegister | public class PersonInfoDtoMapper : IRegister | ||||
{ | { | ||||
@@ -81,6 +83,8 @@ public class PersonInfoDtoMapper : IRegister | |||||
.Map(dest => dest.Faces, src => src.PersonFacesList) | .Map(dest => dest.Faces, src => src.PersonFacesList) | ||||
.Map(dest => dest.DormitoryName, src => src.DormitoryInfoItem.Name) | .Map(dest => dest.DormitoryName, src => src.DormitoryInfoItem.Name) | ||||
.Map(dest => dest.DepName, src => src.PersonSetInfoItem.MajorInfoItem.DepartmentInfoItem.Name) | .Map(dest => dest.DepName, src => src.PersonSetInfoItem.MajorInfoItem.DepartmentInfoItem.Name) | ||||
.Map(x=>x.DepId,x=>x.PersonSetInfoItem.MajorInfoItem.DepId) | |||||
.Map(x=>x.MajorId,x=>x.PersonSetInfoItem.MajorInfoItem.Id) | |||||
.Map(dest => dest.MajorName, src => src.PersonSetInfoItem.MajorInfoItem.Name); | .Map(dest => dest.MajorName, src => src.PersonSetInfoItem.MajorInfoItem.Name); | ||||
} | } | ||||
} | } |
@@ -14,4 +14,12 @@ public class PersonInfoSearch:BasePageInput | |||||
/// 班级id | /// 班级id | ||||
/// </summary> | /// </summary> | ||||
public string PersonSetId { get; set; } | public string PersonSetId { get; set; } | ||||
/// <summary> | |||||
/// 系部id | |||||
/// </summary> | |||||
public long? DepId { get; set; } | |||||
/// <summary> | |||||
/// 院系id | |||||
/// </summary> | |||||
public long? MajorId { get; set; } | |||||
} | } |
@@ -69,6 +69,8 @@ public class PersonInfoService:DbRepository<PersonInfo>, IPersonInfoService | |||||
.Includes(x=>x.DormitoryInfoItem) | .Includes(x=>x.DormitoryInfoItem) | ||||
.WhereIF(!string.IsNullOrEmpty(search.PersonSetId), x => x.PersonSetId == search.PersonSetId) | .WhereIF(!string.IsNullOrEmpty(search.PersonSetId), x => x.PersonSetId == search.PersonSetId) | ||||
.WhereIF(!string.IsNullOrEmpty(search.PersonName), x => x.Name.Contains(search.PersonName)) | .WhereIF(!string.IsNullOrEmpty(search.PersonName), x => x.Name.Contains(search.PersonName)) | ||||
.WhereIF(search.DepId.HasValue, x => x.PersonSetInfoItem.MajorInfoItem.DepId==search.DepId) | |||||
.WhereIF(search.MajorId.HasValue, x => x.PersonSetInfoItem.MajorId==search.MajorId) | |||||
.WhereIF(!string.IsNullOrEmpty(search.Phone), x => x.Phone.Contains(search.Phone)); | .WhereIF(!string.IsNullOrEmpty(search.Phone), x => x.Phone.Contains(search.Phone)); | ||||
var list = await query.OrderByDescending(x => x.CreateTime) | var list = await query.OrderByDescending(x => x.CreateTime) | ||||
@@ -14,11 +14,15 @@ public class PersonSetInfoDto | |||||
/// 专业id | /// 专业id | ||||
/// </summary> | /// </summary> | ||||
public long MajorId { get; set; } | public long MajorId { get; set; } | ||||
public string UserId { get; set; } | |||||
/// <summary> | |||||
/// 班主任id | |||||
/// </summary> | |||||
public long TeacherId { get; set; } | |||||
public string PushUserId { get; set; } | |||||
public string UserName { get; set; } | public string UserName { get; set; } | ||||
public string MajorName { get; set; } | public string MajorName { get; set; } | ||||
public string DepartmentName { get; set; } | public string DepartmentName { get; set; } | ||||
public SysUser SysUserItem { get; set; } | |||||
} | } | ||||
public class PersonSetInfoDtoMapper : IRegister | public class PersonSetInfoDtoMapper : IRegister | ||||
@@ -26,8 +30,10 @@ public class PersonSetInfoDtoMapper : IRegister | |||||
public void Register(TypeAdapterConfig config) | public void Register(TypeAdapterConfig config) | ||||
{ | { | ||||
config.ForType<PersonSetInfo, PersonSetInfoDto>() | config.ForType<PersonSetInfo, PersonSetInfoDto>() | ||||
.Map(x => x.UserId, x => x.ClassTeacherItem.UserId) | |||||
.Map(x=>x.TeacherId,x=>x.ClassTeacherItem.Id) | |||||
.Map(x => x.PushUserId, x => x.ClassTeacherItem.UserId) | |||||
.Map(x => x.UserName, x => x.ClassTeacherItem.SysUserItem.Name) | .Map(x => x.UserName, x => x.ClassTeacherItem.SysUserItem.Name) | ||||
.Map(x => x.SysUserItem, x => x.ClassTeacherItem.SysUserItem) | |||||
.Map(x=>x.DepartmentName,x=>x.MajorInfoItem.DepartmentInfoItem.Name) | .Map(x=>x.DepartmentName,x=>x.MajorInfoItem.DepartmentInfoItem.Name) | ||||
.Map(x=>x.MajorName,x=>x.MajorInfoItem.Name); | .Map(x=>x.MajorName,x=>x.MajorInfoItem.Name); | ||||
} | } |
@@ -42,10 +42,10 @@ public class PersonSetInfoService:DbRepository<PersonSetInfo>, IPersonSetInfoSer | |||||
{ | { | ||||
var list =await Context.Queryable<PersonSetInfo>() | var list =await Context.Queryable<PersonSetInfo>() | ||||
.Includes(x=>x.MajorInfoItem,x=>x.DepartmentInfoItem) | .Includes(x=>x.MajorInfoItem,x=>x.DepartmentInfoItem) | ||||
.Includes(x => x.ClassTeacherItem, st => st.SysUserItem) | |||||
.Where(x=>x.PersonSetId!=SafeCampusConst.ZDRY) | .Where(x=>x.PersonSetId!=SafeCampusConst.ZDRY) | ||||
.WhereIF(majorId.HasValue,x=>x.MajorId==majorId) | .WhereIF(majorId.HasValue,x=>x.MajorId==majorId) | ||||
.WhereIF(!string.IsNullOrEmpty(setName),x=>x.PersonSetName.Contains(setName)) | .WhereIF(!string.IsNullOrEmpty(setName),x=>x.PersonSetName.Contains(setName)) | ||||
.Includes(x => x.ClassTeacherItem, st => st.SysUserItem) | |||||
.ToListAsync(); | .ToListAsync(); | ||||
return list.Adapt<List<PersonSetInfoDto>>(); | return list.Adapt<List<PersonSetInfoDto>>(); | ||||
} | } |
@@ -55,11 +55,11 @@ public class WarnInfoList | |||||
/// <summary> | /// <summary> | ||||
/// 专业名称 | /// 专业名称 | ||||
/// </summary> | /// </summary> | ||||
public long MajorName { get; set; } | |||||
public string MajorName { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// 院系名称 | /// 院系名称 | ||||
/// </summary> | /// </summary> | ||||
public long DepName { get; set; } | |||||
public string DepName { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// 性别 | /// 性别 | ||||
/// </summary> | /// </summary> | ||||
@@ -84,10 +84,11 @@ public class WarnInfoListMapper : IRegister | |||||
config.ForType<WarnInfo, WarnInfoList>() | config.ForType<WarnInfo, WarnInfoList>() | ||||
//.Map(dest => dest.CameraName, src => src.CameraId.GetDescriptionByEnum<CameraType>()); | //.Map(dest => dest.CameraName, src => src.CameraId.GetDescriptionByEnum<CameraType>()); | ||||
.Map(dest => dest.CameraName, src => src.CameraInfoItem.SensorName) | .Map(dest => dest.CameraName, src => src.CameraInfoItem.SensorName) | ||||
.Map(x=>x.PersonName,x=>x.PersonInfoItem.Name) | |||||
.Map(x=>x.PersonSetName,x=>x.PersonSetInfoItem.PersonSetName) | |||||
.Map(x=>x.MajorName,x=>x.PersonSetInfoItem.MajorInfoItem.Name) | |||||
.Map(x=>x.DepName,x=>x.PersonSetInfoItem.MajorInfoItem.DepartmentInfoItem.Name) | |||||
.Map(dest => dest.CameraGroup, src => src.CameraInfoItem.CameraGroupItem.Name); | |||||
.Map(x => x.PersonName, x => x.PersonInfoItem.Name) | |||||
.Map(x => x.PersonSetName, x => x.PersonSetInfoItem.PersonSetName) | |||||
.Map(dest => dest.CameraGroup, src => src.CameraInfoItem.CameraGroupItem.Name) | |||||
.Map(x=>x.MajorName,x=>x.PersonSetInfoItem.MajorInfoItem.Name) | |||||
.Map(x=>x.DepName,x=>x.PersonSetInfoItem.MajorInfoItem.DepartmentInfoItem.Name); | |||||
//; | |||||
} | } | ||||
} | } |
@@ -21,4 +21,10 @@ public interface IWarnInfoService:IApiBaseInterface<WarnInfoDto, WarnInfoList, W | |||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
Task<List<WarnType>> GetWarnType(); | Task<List<WarnType>> GetWarnType(); | ||||
/// <summary> | |||||
/// 批量删除 | |||||
/// </summary> | |||||
/// <param name="Id"></param> | |||||
/// <returns></returns> | |||||
public Task<bool> DeleteBatch(List<long> Ids); | |||||
} | } |
@@ -4,6 +4,7 @@ using MoYu.FriendlyException; | |||||
using SafeCampus.Application.Services.Business; | using SafeCampus.Application.Services.Business; | ||||
using SafeCampus.Application.Services.Business.Warn.Dto; | using SafeCampus.Application.Services.Business.Warn.Dto; | ||||
using SafeCampus.Application.Services.Business.Warn.Service; | using SafeCampus.Application.Services.Business.Warn.Service; | ||||
using SafeCampus.Core.Utils.TXYSMS; | |||||
namespace SafeCampus.Web.Core.Controllers.Application.Business.Warn.Service; | namespace SafeCampus.Web.Core.Controllers.Application.Business.Warn.Service; | ||||
@@ -18,8 +19,11 @@ public class WarnInfoService:DbRepository<WarnInfo>, IWarnInfoService,ITransient | |||||
public async Task<bool> Add(WarnInfoDto vm) | public async Task<bool> Add(WarnInfoDto vm) | ||||
{ | { | ||||
var model = vm.Adapt<WarnInfo>(); | var model = vm.Adapt<WarnInfo>(); | ||||
await InsertAsync(model); | await InsertAsync(model); | ||||
//TODO 发送短信 | |||||
TxySmsUtil.SendSms(new[] { "" }, new[] { "" }); | |||||
return true; | return true; | ||||
} | } | ||||
@@ -98,7 +102,7 @@ public class WarnInfoService:DbRepository<WarnInfo>, IWarnInfoService,ITransient | |||||
var query = Context.Queryable<WarnInfo>() | var query = Context.Queryable<WarnInfo>() | ||||
.Includes(x=>x.CameraInfoItem) | .Includes(x=>x.CameraInfoItem) | ||||
.Includes(x=>x.PersonInfoItem) | .Includes(x=>x.PersonInfoItem) | ||||
.Includes(x=>x.PersonSetInfoItem,x1=>x1.MajorInfoItem,x2=>x2.DepartmentInfoItem) | |||||
.Includes(x=>x.PersonSetInfoItem,x=>x.MajorInfoItem,x=>x.DepartmentInfoItem) | |||||
.WhereIF(search.WarnHand.HasValue, x => x.WarnHand == search.WarnHand) | .WhereIF(search.WarnHand.HasValue, x => x.WarnHand == search.WarnHand) | ||||
.WhereIF(!string.IsNullOrEmpty(search.AlarmType),x => x.AlarmType == search.AlarmType) | .WhereIF(!string.IsNullOrEmpty(search.AlarmType),x => x.AlarmType == search.AlarmType) | ||||
.WhereIF(!string.IsNullOrEmpty(search.CameraId), x => x.CameraId == search.CameraId) | .WhereIF(!string.IsNullOrEmpty(search.CameraId), x => x.CameraId == search.CameraId) | ||||
@@ -158,4 +162,10 @@ public class WarnInfoService:DbRepository<WarnInfo>, IWarnInfoService,ITransient | |||||
}); | }); | ||||
return await query.ToListAsync(); | return await query.ToListAsync(); | ||||
} | } | ||||
public async Task<bool> DeleteBatch(List<long> Ids) | |||||
{ | |||||
await Context.Deleteable<WarnInfo>().In(Ids).ExecuteCommandAsync(); | |||||
return true; | |||||
} | |||||
} | } |
@@ -1,14 +1,4 @@ | |||||
| |||||
// | |||||
using SafeCampus.Core.Utils; | |||||
using SafeCampus.Core.Utils; | |||||
namespace SafeCampus.Core; | namespace SafeCampus.Core; | ||||
@@ -1,14 +1,4 @@ | |||||
| |||||
// | |||||
namespace SafeCampus.Core; | |||||
namespace SafeCampus.Core; | |||||
/// <summary> | /// <summary> | ||||
/// 全局返回结果 | /// 全局返回结果 | ||||
@@ -1,14 +1,4 @@ | |||||
| |||||
// | |||||
namespace SafeCampus.Core; | |||||
namespace SafeCampus.Core; | |||||
/// <summary> | /// <summary> | ||||
/// 规范化RESTful风格返回值 | /// 规范化RESTful风格返回值 | ||||
@@ -98,7 +88,7 @@ public class SafeCampusResultProvider : IUnifyResultProvider | |||||
return new SafeCampusResult<object> | return new SafeCampusResult<object> | ||||
{ | { | ||||
Code = statusCode, | Code = statusCode, | ||||
Msg = statusCode == StatusCodes.Status200OK ? "请求成功" : errors, | |||||
Msg = statusCode == StatusCodes.Status200OK ? "操作成功" : errors, | |||||
Data = data, | Data = data, | ||||
Extras = UnifyContext.Take(), | Extras = UnifyContext.Take(), | ||||
Time = DateTime.Now | Time = DateTime.Now | ||||
@@ -3,7 +3,7 @@ | |||||
[Tenant(SqlSugarConst.DB_DEFAULT)] | [Tenant(SqlSugarConst.DB_DEFAULT)] | ||||
[BatchEdit] | [BatchEdit] | ||||
[CodeGen] | [CodeGen] | ||||
//[IgnoreInitTable] | |||||
[IgnoreInitTable] | |||||
public class Attendance : PrimaryKeyEntity | public class Attendance : PrimaryKeyEntity | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -6,7 +6,7 @@ | |||||
[Tenant(SqlSugarConst.DB_DEFAULT)] | [Tenant(SqlSugarConst.DB_DEFAULT)] | ||||
[BatchEdit] | [BatchEdit] | ||||
[CodeGen] | [CodeGen] | ||||
//[IgnoreInitTable] | |||||
[IgnoreInitTable] | |||||
public class BuildingInfo : PrimaryKeyEntity | public class BuildingInfo : PrimaryKeyEntity | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -17,6 +17,11 @@ public class CameraGroup : PrimaryKeyEntity | |||||
[SugarColumn(ColumnName = "ParentId", ColumnDescription = "父级id", IsNullable = true)] | [SugarColumn(ColumnName = "ParentId", ColumnDescription = "父级id", IsNullable = true)] | ||||
public long ParentId { get; set; } | public long ParentId { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 推送人id | |||||
/// </summary> | |||||
[SugarColumn(ColumnName = "PushUserId", ColumnDescription = "推送人id", IsNullable = true)] | |||||
public long? PushUserId { get; set; } | |||||
/// <summary> | |||||
/// 子级 | /// 子级 | ||||
/// </summary> | /// </summary> | ||||
[SugarColumn(IsIgnore = true)] | [SugarColumn(IsIgnore = true)] | ||||
@@ -26,4 +31,9 @@ public class CameraGroup : PrimaryKeyEntity | |||||
/// </summary> | /// </summary> | ||||
[Navigate(NavigateType.OneToMany, nameof(CameraInfo.GroupId))] | [Navigate(NavigateType.OneToMany, nameof(CameraInfo.GroupId))] | ||||
public List<CameraInfo> CameraInfos { get; set; } | public List<CameraInfo> CameraInfos { get; set; } | ||||
/// <summary> | |||||
/// 推送人信息 | |||||
/// </summary> | |||||
[Navigate(NavigateType.OneToOne, nameof(CameraInfo.PushUserId))] | |||||
public SysUser SysUserItem { get; set; } | |||||
} | } |
@@ -46,4 +46,9 @@ public class ClassRoomCallTask: PrimaryKeyEntity | |||||
///</summary> | ///</summary> | ||||
[Navigate(NavigateType.OneToOne, nameof(CameraId),nameof(CameraInfo.SensorId)),] | [Navigate(NavigateType.OneToOne, nameof(CameraId),nameof(CameraInfo.SensorId)),] | ||||
public CameraInfo CameraInfoItem { get; set; } | public CameraInfo CameraInfoItem { get; set; } | ||||
/// <summary> | |||||
/// 班级信息 | |||||
/// </summary> | |||||
[Navigate(NavigateType.OneToOne, nameof(PersonSetInfo.PersonSetId), nameof(PersonSetId))] | |||||
public PersonSetInfo PersonSetInfoItem { get; set; } | |||||
} | } |
@@ -3,7 +3,7 @@ | |||||
[Tenant(SqlSugarConst.DB_DEFAULT)] | [Tenant(SqlSugarConst.DB_DEFAULT)] | ||||
[BatchEdit] | [BatchEdit] | ||||
[CodeGen] | [CodeGen] | ||||
//[IgnoreInitTable] | |||||
[IgnoreInitTable] | |||||
public class DepartmentInfo : PrimaryKeyEntity | public class DepartmentInfo : PrimaryKeyEntity | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -3,7 +3,7 @@ | |||||
[Tenant(SqlSugarConst.DB_DEFAULT)] | [Tenant(SqlSugarConst.DB_DEFAULT)] | ||||
[BatchEdit] | [BatchEdit] | ||||
[CodeGen] | [CodeGen] | ||||
//[IgnoreInitTable] | |||||
[IgnoreInitTable] | |||||
public class MajorInfo : PrimaryKeyEntity | public class MajorInfo : PrimaryKeyEntity | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -34,7 +34,7 @@ public class PersonInfo | |||||
/// <summary> | /// <summary> | ||||
/// 扩展属性 | /// 扩展属性 | ||||
/// </summary> | /// </summary> | ||||
[SugarColumn(ColumnName = "ExtData", ColumnDescription = "扩展属性", ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = false)] | |||||
[SugarColumn(ColumnName = "ExtData", ColumnDescription = "扩展属性", ColumnDataType = StaticConfig.CodeFirst_BigString, IsNullable = true)] | |||||
public string ExtData { get; set; } | public string ExtData { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 人脸大小阈值 | /// 人脸大小阈值 | ||||
@@ -3,7 +3,7 @@ | |||||
[Tenant(SqlSugarConst.DB_DEFAULT)] | [Tenant(SqlSugarConst.DB_DEFAULT)] | ||||
[BatchEdit] | [BatchEdit] | ||||
[CodeGen] | [CodeGen] | ||||
//[IgnoreInitTable] | |||||
[IgnoreInitTable] | |||||
public class PersonSetInfo | public class PersonSetInfo | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -841,6 +841,11 @@ | |||||
父级id | 父级id | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.System.CameraGroup.PushUserId"> | |||||
<summary> | |||||
推送人id | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.System.CameraGroup.Children"> | <member name="P:SafeCampus.System.CameraGroup.Children"> | ||||
<summary> | <summary> | ||||
子级 | 子级 | ||||
@@ -851,6 +856,11 @@ | |||||
摄像头列表 | 摄像头列表 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.System.CameraGroup.SysUserItem"> | |||||
<summary> | |||||
推送人信息 | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.System.CameraInfo.SensorId"> | <member name="P:SafeCampus.System.CameraInfo.SensorId"> | ||||
<summary> | <summary> | ||||
摄像头编码 | 摄像头编码 | ||||
@@ -1056,6 +1066,11 @@ | |||||
摄像头信息 | 摄像头信息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.System.ClassRoomCallTask.PersonSetInfoItem"> | |||||
<summary> | |||||
班级信息 | |||||
</summary> | |||||
</member> | |||||
<member name="P:SafeCampus.System.ClassTeacher.UserId"> | <member name="P:SafeCampus.System.ClassTeacher.UserId"> | ||||
<summary> | <summary> | ||||
班主任用户id | 班主任用户id | ||||
@@ -20,7 +20,7 @@ | |||||
}, | }, | ||||
//系统层设置 | //系统层设置 | ||||
"SystemSettings": { | "SystemSettings": { | ||||
"InitTable": false, //是否初始化表结构 | |||||
"InitTable": true, //是否初始化表结构 | |||||
"InitSeedData": false, //是否初始化种子数据 | "InitSeedData": false, //是否初始化种子数据 | ||||
"SuperAdminViewAllData": true //是否超级管理员可以查看所有数据 | "SuperAdminViewAllData": true //是否超级管理员可以查看所有数据 | ||||
} | } |
@@ -113,9 +113,15 @@ public class ClassRoomCallApi : IDynamicApiController | |||||
/// </summary> | /// </summary> | ||||
/// <param name="id"></param> | /// <param name="id"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public async Task<bool> Delete(long id) | |||||
[HttpPost] | |||||
public async Task<bool> Delete(BaseIdListInput input) | |||||
{ | { | ||||
return await _classRoomCallTaskService.Remove(id); | |||||
foreach (var inputId in input.Ids) | |||||
{ | |||||
await _classRoomCallTaskService.Remove(inputId); | |||||
} | |||||
return true; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 获取点名任务列表 | /// 获取点名任务列表 | ||||
@@ -7,10 +7,10 @@ using SafeCampus.Application.Services.Business.PersonSetInfoService; | |||||
namespace SafeCampus.Web.Core.Controllers.Application.Business; | namespace SafeCampus.Web.Core.Controllers.Application.Business; | ||||
/// <summary> | /// <summary> | ||||
/// 人员底库管理接口 | |||||
/// 人员班级管理接口 | |||||
/// </summary> | /// </summary> | ||||
[Route("/business/[controller]")] | [Route("/business/[controller]")] | ||||
[ApiDescriptionSettings(ApiGroupConsts.SYSTEM_Business, Order = 99,Tag = "人员底库管理")] | |||||
[ApiDescriptionSettings(ApiGroupConsts.SYSTEM_Business, Order = 99,Tag = "人员班级管理")] | |||||
public class DfieldApi : IDynamicApiController | public class DfieldApi : IDynamicApiController | ||||
{ | { | ||||
private readonly IDeepelephManager _deepelephManager; | private readonly IDeepelephManager _deepelephManager; | ||||
@@ -55,9 +55,9 @@ public class DfieldApi : IDynamicApiController | |||||
/// 查询底库列表 | /// 查询底库列表 | ||||
/// </summary> | /// </summary> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public async Task<dynamic> QueryAll(long? majorId,string setName) | |||||
public async Task<dynamic> QueryAll(long? majorId,string personSetName) | |||||
{ | { | ||||
return await _personSetInfoService.GetPageList(majorId, setName); | |||||
return await _personSetInfoService.GetPageList(majorId, personSetName); | |||||
var appSettings = App.GetOptionsMonitor<AppInfoOptions>(); | var appSettings = App.GetOptionsMonitor<AppInfoOptions>(); | ||||
var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/queryAll" | var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/queryAll" | ||||
.SetBody(new | .SetBody(new | ||||
@@ -99,29 +99,44 @@ public class DfieldApi : IDynamicApiController | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public async Task<dynamic> DeleteDfieldD(string id) | public async Task<dynamic> DeleteDfieldD(string id) | ||||
{ | { | ||||
var appSettings = App.GetOptionsMonitor<AppInfoOptions>(); | |||||
var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/delete" | |||||
.SetBody(new | |||||
{ | |||||
token = _deepelephManager.GetToken(), | |||||
tenantCode = appSettings.TenantCode, | |||||
poiId = appSettings.PoiId, | |||||
personSetId= id | |||||
}) | |||||
.SetContentType("application/json") | |||||
.PostAsAsync<string>(); | |||||
var model = JsonConvert.DeserializeObject<JObject>(str); | |||||
if ((bool)model["success"]) | |||||
var list = new List<string>(); | |||||
if (id.Contains(",")) | |||||
{ | { | ||||
var isOk = model["data"].ToString() == id; | |||||
if (isOk) | |||||
list = id.Split(",").ToList(); | |||||
} | |||||
else | |||||
{ | |||||
list.Add(id); | |||||
} | |||||
foreach (var ids in list) | |||||
{ | |||||
var appSettings = App.GetOptionsMonitor<AppInfoOptions>(); | |||||
var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/set/delete" | |||||
.SetBody(new | |||||
{ | |||||
token = _deepelephManager.GetToken(), | |||||
tenantCode = appSettings.TenantCode, | |||||
poiId = appSettings.PoiId, | |||||
personSetId = ids | |||||
}) | |||||
.SetContentType("application/json") | |||||
.PostAsAsync<string>(); | |||||
var model = JsonConvert.DeserializeObject<JObject>(str); | |||||
if ((bool)model["success"]) | |||||
{ | { | ||||
await _personSetInfoService.Delete(id); | |||||
var isOk = model["data"].ToString() == ids; | |||||
if (isOk) | |||||
{ | |||||
await _personSetInfoService.Delete(ids); | |||||
} | |||||
return isOk; | |||||
} | } | ||||
return isOk; | |||||
throw Oops.Oh(model["message"].ToString()); | |||||
} | } | ||||
throw Oops.Oh(model["message"].ToString()); | |||||
return false; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 更新底库 | /// 更新底库 | ||||
@@ -29,8 +29,8 @@ public class PersonUnBindDfieInput | |||||
[IdNotNull(ErrorMessage = "人员id不能为空")] | [IdNotNull(ErrorMessage = "人员id不能为空")] | ||||
public string PersonId { get; set; } | public string PersonId { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 底库id | |||||
/// 班级id | |||||
/// </summary> | /// </summary> | ||||
[IdNotNull(ErrorMessage = "底库id不能为空")] | |||||
[IdNotNull(ErrorMessage = "班级id不能为空")] | |||||
public string PersonSetId { get; set; } | public string PersonSetId { get; set; } | ||||
} | } |
@@ -153,30 +153,45 @@ public class PersonApi : IDynamicApiController | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public async Task<dynamic> DeletePersonD(string id) | public async Task<dynamic> DeletePersonD(string id) | ||||
{ | { | ||||
var appSettings = App.GetOptionsMonitor<AppInfoOptions>(); | |||||
var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/delete" | |||||
.SetBody(new | |||||
{ | |||||
token = _deepelephManager.GetToken(), | |||||
tenantCode = appSettings.TenantCode, | |||||
poiId = appSettings.PoiId, | |||||
personId = id, | |||||
var list = new List<string>(); | |||||
if (id.Contains(",")) | |||||
{ | |||||
list = id.Split(",").ToList(); | |||||
} | |||||
else | |||||
{ | |||||
list.Add(id); | |||||
} | |||||
}) | |||||
.SetContentType("application/json") | |||||
.PostAsAsync<string>(); | |||||
var model = JsonConvert.DeserializeObject<JObject>(str); | |||||
if ((bool)model["success"]) | |||||
foreach (var ids in list) | |||||
{ | { | ||||
var isOk = model["data"].ToString() == id; | |||||
if (isOk) | |||||
var appSettings = App.GetOptionsMonitor<AppInfoOptions>(); | |||||
var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/delete" | |||||
.SetBody(new | |||||
{ | |||||
token = _deepelephManager.GetToken(), | |||||
tenantCode = appSettings.TenantCode, | |||||
poiId = appSettings.PoiId, | |||||
personId = ids, | |||||
}) | |||||
.SetContentType("application/json") | |||||
.PostAsAsync<string>(); | |||||
var model = JsonConvert.DeserializeObject<JObject>(str); | |||||
if ((bool)model["success"]) | |||||
{ | { | ||||
await _personInfoService.Delete(id); | |||||
var isOk = model["data"].ToString() == ids; | |||||
if (isOk) | |||||
{ | |||||
await _personInfoService.Delete(ids); | |||||
} | |||||
return isOk; | |||||
} | } | ||||
return isOk; | |||||
throw Oops.Oh(model["message"].ToString()); | |||||
} | } | ||||
throw Oops.Oh(model["message"].ToString()); | |||||
return false; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 更新人员信息 | /// 更新人员信息 | ||||
@@ -185,6 +200,7 @@ public class PersonApi : IDynamicApiController | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public async Task<dynamic> UpdatePersionU(PersonModel info) | public async Task<dynamic> UpdatePersionU(PersonModel info) | ||||
{ | { | ||||
info.Faces = info.Faces.Select(x => new Faces { faceId = Guid.NewGuid().ToString("N"), faceUrl = x.faceUrl }).ToList(); | |||||
var appSettings = App.GetOptionsMonitor<AppInfoOptions>(); | var appSettings = App.GetOptionsMonitor<AppInfoOptions>(); | ||||
var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/createOrOverride" | var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/createOrOverride" | ||||
.SetBody(new | .SetBody(new | ||||
@@ -346,7 +362,7 @@ public class PersonApi : IDynamicApiController | |||||
/// <returns></returns> | /// <returns></returns> | ||||
public async Task<dynamic> GetPersionById(ControllersIdInput input) | public async Task<dynamic> GetPersionById(ControllersIdInput input) | ||||
{ | { | ||||
return await _personInfoService.GetInfo(input.Id); | |||||
var perModel= await _personInfoService.GetInfo(input.Id); | |||||
var appSettings = App.GetOptionsMonitor < AppInfoOptions>(); | var appSettings = App.GetOptionsMonitor < AppInfoOptions>(); | ||||
var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/query" | var str = await $"{appSettings.SXAPIURL}/dfield-api/ecology/person/query" | ||||
.SetBody(new | .SetBody(new | ||||
@@ -359,6 +375,7 @@ public class PersonApi : IDynamicApiController | |||||
.SetContentType("application/json") | .SetContentType("application/json") | ||||
.PostAsAsync<string>(); | .PostAsAsync<string>(); | ||||
var model = JsonConvert.DeserializeObject<JObject>(str); | var model = JsonConvert.DeserializeObject<JObject>(str); | ||||
if ((bool)model["success"]) | if ((bool)model["success"]) | ||||
{ | { | ||||
if (model["data"]["personSets"].Count() > 0) | if (model["data"]["personSets"].Count() > 0) | ||||
@@ -371,7 +388,9 @@ public class PersonApi : IDynamicApiController | |||||
model["data"]["personSetId"] = null; | model["data"]["personSetId"] = null; | ||||
model["data"]["personSetName"] = null; | model["data"]["personSetName"] = null; | ||||
} | } | ||||
return model["data"]; | |||||
perModel.Faces = JsonConvert.DeserializeObject<List<PersonFaces>>(model["data"]["faces"].ToString()); | |||||
return perModel; | |||||
} | } | ||||
throw Oops.Oh(model["message"].ToString()); | throw Oops.Oh(model["message"].ToString()); | ||||
@@ -37,9 +37,10 @@ public class WarnInfoController | |||||
/// </summary> | /// </summary> | ||||
/// <param name="Id"></param> | /// <param name="Id"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public async Task<bool> DeleteInfoD(long Id) | |||||
[HttpPost] | |||||
public async Task<bool> DeleteInfoD(BaseIdListInput input) | |||||
{ | { | ||||
return await _warnInfoService.Delete(Id); | |||||
return await _warnInfoService.DeleteBatch(input.Ids); | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 编辑预警信息 | /// 编辑预警信息 | ||||
@@ -61,7 +62,7 @@ public class WarnInfoController | |||||
if (!string.IsNullOrEmpty(model.Extend)) | if (!string.IsNullOrEmpty(model.Extend)) | ||||
{ | { | ||||
var extend = JsonConvert.DeserializeObject<JObject>(model.Extend); | var extend = JsonConvert.DeserializeObject<JObject>(model.Extend); | ||||
model.Extend = extend["age"]!=null?$"年龄:{extend["age"]};年龄置信度:{extend["ageProb"]};":""; | |||||
model.Extend = extend["age"]!=null?$"年龄:{extend["age"]};年龄置信度:{Convert.ToInt32(Convert.ToDecimal(extend["ageProb"])*100)}%;":""; | |||||
} | } | ||||
try | try | ||||
@@ -1,13 +1,15 @@ | |||||
namespace SafeCampus.Web.Core.Controllers.Application.Violation; | |||||
using System.ComponentModel.DataAnnotations; | |||||
namespace SafeCampus.Web.Core.Controllers.Application.Violation; | |||||
public class SummarySeach | public class SummarySeach | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 搜索条件 | /// 搜索条件 | ||||
/// </summary> | /// </summary> | ||||
public SearchType SearchType { get; set; } | |||||
public SearchType? SearchType { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// 人员id | /// 人员id | ||||
/// </summary> | /// </summary> | ||||
public string PersonId { get; set; } | |||||
public string Id { get; set; } | |||||
} | } |
@@ -3,6 +3,7 @@ using NPOI.XWPF.UserModel; | |||||
using SafeCampus.Application.Services.Business.Warn.Dto; | using SafeCampus.Application.Services.Business.Warn.Dto; | ||||
using SafeCampus.Application.Services.Business.Warn.Service; | using SafeCampus.Application.Services.Business.Warn.Service; | ||||
using System.Diagnostics; | using System.Diagnostics; | ||||
using MoYu.FriendlyException; | |||||
using SafeCampus.Core.Extension; | using SafeCampus.Core.Extension; | ||||
namespace SafeCampus.Web.Core.Controllers.Application.Violation; | namespace SafeCampus.Web.Core.Controllers.Application.Violation; | ||||
@@ -191,6 +192,10 @@ public class VioAnalysisController | |||||
await using var fs = new FileStream(templatePath, FileMode.Open, FileAccess.ReadWrite); | await using var fs = new FileStream(templatePath, FileMode.Open, FileAccess.ReadWrite); | ||||
XWPFDocument doc = new XWPFDocument(fs); | XWPFDocument doc = new XWPFDocument(fs); | ||||
var content = warnList.GroupBy(x => x.AlarmTypeDesc).ToList(); | var content = warnList.GroupBy(x => x.AlarmTypeDesc).ToList(); | ||||
if (!content.Any()) | |||||
{ | |||||
throw Oops.Oh("该时间段无数据,无法生成报告!"); | |||||
} | |||||
Dictionary<string, string> replacements = new Dictionary<string, string>() | Dictionary<string, string> replacements = new Dictionary<string, string>() | ||||
{ | { | ||||
//图片 | //图片 | ||||
@@ -120,7 +120,7 @@ public class VioPortraitSummary | |||||
{ | { | ||||
AlarmType = AlarmType.visual_fence.GetDisplay(), | AlarmType = AlarmType.visual_fence.GetDisplay(), | ||||
CameraIds = cameraIds, | CameraIds = cameraIds, | ||||
PersonId = seach.PersonId, | |||||
PersonId = seach.Id, | |||||
StartTick = startOfWeek, | StartTick = startOfWeek, | ||||
EndTick = endWeek | EndTick = endWeek | ||||
}); | }); | ||||
@@ -132,7 +132,7 @@ public class VioPortraitSummary | |||||
{ | { | ||||
AlarmType = AlarmType.visual_fence.GetDisplay(), | AlarmType = AlarmType.visual_fence.GetDisplay(), | ||||
CameraIds = cameraIds, | CameraIds = cameraIds, | ||||
PersonId = seach.PersonId, | |||||
PersonId = seach.Id, | |||||
StartTick = startOfLastWeek, | StartTick = startOfLastWeek, | ||||
EndTick = endOfLastWeek | EndTick = endOfLastWeek | ||||
}); | }); | ||||
@@ -143,7 +143,7 @@ public class VioPortraitSummary | |||||
{ | { | ||||
AlarmType = AlarmType.visual_fence.GetDisplay(), | AlarmType = AlarmType.visual_fence.GetDisplay(), | ||||
CameraIds = cameraIds, | CameraIds = cameraIds, | ||||
PersonId = seach.PersonId, | |||||
PersonId = seach.Id, | |||||
StartTick = startOfMonth, | StartTick = startOfMonth, | ||||
EndTick = endWeek | EndTick = endWeek | ||||
}); | }); | ||||
@@ -192,7 +192,7 @@ public class VioPortraitSummary | |||||
{ | { | ||||
AlarmType = AlarmType.visual_fence.GetDisplay(), | AlarmType = AlarmType.visual_fence.GetDisplay(), | ||||
CameraIds = cameraIds, | CameraIds = cameraIds, | ||||
PersonId = seach.PersonId, | |||||
PersonId = seach.Id, | |||||
StartTick = startOfWeek, | StartTick = startOfWeek, | ||||
EndTick = endWeek | EndTick = endWeek | ||||
}); | }); | ||||
@@ -211,7 +211,7 @@ public class VioPortraitSummary | |||||
{ | { | ||||
AlarmType = AlarmType.visual_fence.GetDisplay(), | AlarmType = AlarmType.visual_fence.GetDisplay(), | ||||
CameraIds = cameraIds, | CameraIds = cameraIds, | ||||
PersonId = seach.PersonId, | |||||
PersonId = seach.Id, | |||||
StartTick = startOfLastWeek, | StartTick = startOfLastWeek, | ||||
EndTick = endOfLastWeek | EndTick = endOfLastWeek | ||||
}); | }); | ||||
@@ -229,7 +229,7 @@ public class VioPortraitSummary | |||||
{ | { | ||||
AlarmType = AlarmType.visual_fence.GetDisplay(), | AlarmType = AlarmType.visual_fence.GetDisplay(), | ||||
CameraIds = cameraIds, | CameraIds = cameraIds, | ||||
PersonId = seach.PersonId, | |||||
PersonId = seach.Id, | |||||
StartTick = startOfMonth, | StartTick = startOfMonth, | ||||
EndTick = endWeek | EndTick = endWeek | ||||
}); | }); | ||||
@@ -241,7 +241,7 @@ | |||||
</summary> | </summary> | ||||
<returns></returns> | <returns></returns> | ||||
</member> | </member> | ||||
<member name="M:SafeCampus.Web.Core.Controllers.Application.Business.ClassRoomCallApi.Delete(System.Int64)"> | |||||
<member name="M:SafeCampus.Web.Core.Controllers.Application.Business.ClassRoomCallApi.Delete(SafeCampus.Core.BaseIdListInput)"> | |||||
<summary> | <summary> | ||||
删除点名任务,删除关联点名数据 | 删除点名任务,删除关联点名数据 | ||||
</summary> | </summary> | ||||
@@ -513,7 +513,7 @@ | |||||
</member> | </member> | ||||
<member name="T:SafeCampus.Web.Core.Controllers.Application.Business.DfieldApi"> | <member name="T:SafeCampus.Web.Core.Controllers.Application.Business.DfieldApi"> | ||||
<summary> | <summary> | ||||
人员底库管理接口 | |||||
人员班级管理接口 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:SafeCampus.Web.Core.Controllers.Application.Business.DfieldApi.CreateDfieldA(SafeCampus.Web.Core.Controllers.Application.Business.ControllersNameInput)"> | <member name="M:SafeCampus.Web.Core.Controllers.Application.Business.DfieldApi.CreateDfieldA(SafeCampus.Web.Core.Controllers.Application.Business.ControllersNameInput)"> | ||||
@@ -855,7 +855,7 @@ | |||||
</member> | </member> | ||||
<member name="P:SafeCampus.Web.Core.Controllers.Application.Business.PersonUnBindDfieInput.PersonSetId"> | <member name="P:SafeCampus.Web.Core.Controllers.Application.Business.PersonUnBindDfieInput.PersonSetId"> | ||||
<summary> | <summary> | ||||
底库id | |||||
班级id | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.Web.Core.Controllers.Application.Business.ReturnTimeInput.FuncStart"> | <member name="P:SafeCampus.Web.Core.Controllers.Application.Business.ReturnTimeInput.FuncStart"> | ||||
@@ -1107,7 +1107,7 @@ | |||||
预警事件查询接口 | 预警事件查询接口 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:SafeCampus.Web.Core.Controllers.Application.Business.WarnInfoController.DeleteInfoD(System.Int64)"> | |||||
<member name="M:SafeCampus.Web.Core.Controllers.Application.Business.WarnInfoController.DeleteInfoD(SafeCampus.Core.BaseIdListInput)"> | |||||
<summary> | <summary> | ||||
删除预警信息 | 删除预警信息 | ||||
</summary> | </summary> | ||||
@@ -1301,7 +1301,7 @@ | |||||
搜索条件 | 搜索条件 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:SafeCampus.Web.Core.Controllers.Application.Violation.SummarySeach.PersonId"> | |||||
<member name="P:SafeCampus.Web.Core.Controllers.Application.Violation.SummarySeach.Id"> | |||||
<summary> | <summary> | ||||
人员id | 人员id | ||||
</summary> | </summary> | ||||
@@ -27,6 +27,7 @@ public class Startup : AppStartup | |||||
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();// 首字母小写(驼峰样式) | options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();// 首字母小写(驼峰样式) | ||||
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";// 时间格式化 | options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";// 时间格式化 | ||||
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;// 忽略循环引用 | options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;// 忽略循环引用 | ||||
options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;// 忽略所有 null 属性 | |||||
}).AddInjectWithUnifyResult<SafeCampusResultProvider>()//配置统一返回模型 | }).AddInjectWithUnifyResult<SafeCampusResultProvider>()//配置统一返回模型 | ||||
; | ; | ||||
@@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. | |||||
<Project> | <Project> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<_PublishTargetUrl>F:\Project\QJKJ\SafeCampus\SafeCampus.API\SafeCampus.Web.Entry\bin\Release\net6.0\publish\</_PublishTargetUrl> | <_PublishTargetUrl>F:\Project\QJKJ\SafeCampus\SafeCampus.API\SafeCampus.Web.Entry\bin\Release\net6.0\publish\</_PublishTargetUrl> | ||||
<History>True|2024-09-04T08:01:07.1761640Z;True|2024-09-04T15:47:33.3094448+08:00;True|2024-09-04T13:33:22.9396193+08:00;True|2024-08-30T13:27:03.2003529+08:00;True|2024-08-27T15:31:21.7026102+08:00;True|2024-08-20T11:12:26.7141701+08:00;True|2024-08-19T17:23:34.5703879+08:00;True|2024-08-19T15:55:28.3484786+08:00;True|2024-08-19T15:45:49.5623372+08:00;True|2024-08-19T14:56:17.7733738+08:00;True|2024-08-19T14:52:03.2782392+08:00;True|2024-08-19T14:10:57.7043528+08:00;True|2024-08-19T13:38:29.9236695+08:00;False|2024-08-19T13:29:18.8873264+08:00;True|2024-08-19T12:31:57.9280692+08:00;True|2024-08-19T11:50:36.7241244+08:00;True|2024-08-19T10:24:05.0018377+08:00;True|2024-08-19T10:23:30.0445364+08:00;True|2024-08-19T10:12:33.8316906+08:00;True|2024-08-19T10:10:48.0967630+08:00;True|2024-08-16T12:17:51.5743944+08:00;True|2024-08-16T11:36:15.1880346+08:00;True|2024-08-12T11:27:42.2864171+08:00;True|2024-08-09T14:54:42.9062124+08:00;True|2024-08-09T11:49:01.0339449+08:00;True|2024-08-09T11:43:21.9947939+08:00;True|2024-08-09T10:43:25.7641675+08:00;True|2024-08-08T15:23:17.0510180+08:00;True|2024-08-08T15:20:50.3450876+08:00;True|2024-08-08T11:06:43.0783261+08:00;True|2024-08-07T17:24:03.0780935+08:00;True|2024-08-07T17:20:50.6266614+08:00;True|2024-08-07T17:18:15.6367265+08:00;True|2024-08-06T17:31:40.3452266+08:00;True|2024-07-31T16:54:03.1890463+08:00;True|2024-07-30T17:11:33.2514194+08:00;True|2024-07-30T17:08:14.5888060+08:00;True|2024-07-30T09:56:08.6349163+08:00;True|2024-07-30T09:50:02.2368269+08:00;True|2024-07-29T16:20:12.3202393+08:00;True|2024-07-29T16:16:29.9634841+08:00;True|2024-07-29T16:09:51.7696392+08:00;True|2024-07-29T16:06:49.4145658+08:00;True|2024-07-29T15:58:50.6654249+08:00;True|2024-07-29T11:32:11.6206514+08:00;True|2024-07-29T11:26:26.1574563+08:00;True|2024-07-29T11:04:41.1896705+08:00;True|2024-07-29T10:38:38.4560275+08:00;True|2024-07-29T10:33:38.5288332+08:00;False|2024-07-29T10:33:21.0642261+08:00;False|2024-07-29T10:33:00.1005216+08:00;True|2024-07-29T09:54:59.2794860+08:00;True|2024-07-29T09:08:54.4899269+08:00;True|2024-07-26T18:02:13.5407348+08:00;True|2024-07-26T17:46:06.7922851+08:00;True|2024-07-26T15:50:48.6986834+08:00;True|2024-07-26T15:11:17.1696147+08:00;True|2024-07-26T13:58:49.6884964+08:00;True|2024-07-25T17:31:33.0050952+08:00;True|2024-07-25T17:09:12.7084910+08:00;True|2024-07-25T17:02:01.2617736+08:00;True|2024-07-25T16:59:51.6271873+08:00;True|2024-07-25T16:58:05.5249148+08:00;True|2024-07-25T14:14:10.2008367+08:00;False|2024-07-25T14:13:54.0300465+08:00;True|2024-07-25T14:08:57.0244482+08:00;True|2024-07-25T13:41:48.8201522+08:00;True|2024-07-25T10:41:30.7277553+08:00;True|2024-07-25T10:16:05.9105335+08:00;True|2024-07-24T15:31:54.7914854+08:00;True|2024-07-24T09:54:17.6182454+08:00;True|2024-07-23T17:01:18.1510211+08:00;True|2024-07-23T16:41:53.3366577+08:00;True|2024-07-23T16:07:25.4129335+08:00;True|2024-07-23T15:50:42.2437488+08:00;True|2024-07-23T15:19:00.1900116+08:00;True|2024-07-23T14:59:22.8551233+08:00;True|2024-07-23T14:19:55.1193373+08:00;True|2024-07-19T18:04:32.2703039+08:00;True|2024-07-19T15:56:25.4103701+08:00;True|2024-07-19T15:09:00.9662436+08:00;True|2024-07-19T15:05:35.7255851+08:00;True|2024-07-19T13:14:42.9559521+08:00;False|2024-07-19T11:37:52.4020673+08:00;True|2024-07-19T11:10:22.8661346+08:00;True|2024-07-19T11:00:00.8819251+08:00;True|2024-07-19T10:45:46.8271770+08:00;True|2024-07-19T10:45:03.8183458+08:00;True|2024-07-18T18:04:42.1000382+08:00;True|2024-07-18T18:01:51.3964409+08:00;True|2024-07-18T17:57:50.3509206+08:00;True|2024-07-18T16:32:46.2184830+08:00;True|2024-07-18T16:00:11.1381449+08:00;True|2024-07-18T15:11:52.6472758+08:00;True|2024-07-18T11:54:49.4848006+08:00;True|2024-07-18T09:25:58.7204846+08:00;True|2024-07-17T17:29:28.6175272+08:00;True|2024-07-17T17:10:54.5184246+08:00;True|2024-07-17T16:57:59.8174060+08:00;True|2024-07-17T16:18:13.8137834+08:00;</History> | |||||
<History>True|2024-09-23T06:58:29.0998917Z;True|2024-09-23T14:34:42.4664825+08:00;True|2024-09-23T14:34:14.9788969+08:00;True|2024-09-23T14:21:01.8969413+08:00;True|2024-09-23T14:17:25.6978104+08:00;True|2024-09-23T13:44:21.2948521+08:00;True|2024-09-23T13:42:29.2647186+08:00;True|2024-09-19T17:53:09.3428873+08:00;True|2024-09-19T17:47:47.8015573+08:00;True|2024-09-19T17:33:18.0038814+08:00;True|2024-09-19T17:13:16.6885326+08:00;True|2024-09-19T16:40:10.4911580+08:00;True|2024-09-19T15:32:43.5092007+08:00;True|2024-09-19T14:13:40.1278496+08:00;True|2024-09-19T11:00:03.7642790+08:00;True|2024-09-04T16:01:07.1761640+08:00;True|2024-09-04T15:47:33.3094448+08:00;True|2024-09-04T13:33:22.9396193+08:00;True|2024-08-30T13:27:03.2003529+08:00;True|2024-08-27T15:31:21.7026102+08:00;True|2024-08-20T11:12:26.7141701+08:00;True|2024-08-19T17:23:34.5703879+08:00;True|2024-08-19T15:55:28.3484786+08:00;True|2024-08-19T15:45:49.5623372+08:00;True|2024-08-19T14:56:17.7733738+08:00;True|2024-08-19T14:52:03.2782392+08:00;True|2024-08-19T14:10:57.7043528+08:00;True|2024-08-19T13:38:29.9236695+08:00;False|2024-08-19T13:29:18.8873264+08:00;True|2024-08-19T12:31:57.9280692+08:00;True|2024-08-19T11:50:36.7241244+08:00;True|2024-08-19T10:24:05.0018377+08:00;True|2024-08-19T10:23:30.0445364+08:00;True|2024-08-19T10:12:33.8316906+08:00;True|2024-08-19T10:10:48.0967630+08:00;True|2024-08-16T12:17:51.5743944+08:00;True|2024-08-16T11:36:15.1880346+08:00;True|2024-08-12T11:27:42.2864171+08:00;True|2024-08-09T14:54:42.9062124+08:00;True|2024-08-09T11:49:01.0339449+08:00;True|2024-08-09T11:43:21.9947939+08:00;True|2024-08-09T10:43:25.7641675+08:00;True|2024-08-08T15:23:17.0510180+08:00;True|2024-08-08T15:20:50.3450876+08:00;True|2024-08-08T11:06:43.0783261+08:00;True|2024-08-07T17:24:03.0780935+08:00;True|2024-08-07T17:20:50.6266614+08:00;True|2024-08-07T17:18:15.6367265+08:00;True|2024-08-06T17:31:40.3452266+08:00;True|2024-07-31T16:54:03.1890463+08:00;True|2024-07-30T17:11:33.2514194+08:00;True|2024-07-30T17:08:14.5888060+08:00;True|2024-07-30T09:56:08.6349163+08:00;True|2024-07-30T09:50:02.2368269+08:00;True|2024-07-29T16:20:12.3202393+08:00;True|2024-07-29T16:16:29.9634841+08:00;True|2024-07-29T16:09:51.7696392+08:00;True|2024-07-29T16:06:49.4145658+08:00;True|2024-07-29T15:58:50.6654249+08:00;True|2024-07-29T11:32:11.6206514+08:00;True|2024-07-29T11:26:26.1574563+08:00;True|2024-07-29T11:04:41.1896705+08:00;True|2024-07-29T10:38:38.4560275+08:00;True|2024-07-29T10:33:38.5288332+08:00;False|2024-07-29T10:33:21.0642261+08:00;False|2024-07-29T10:33:00.1005216+08:00;True|2024-07-29T09:54:59.2794860+08:00;True|2024-07-29T09:08:54.4899269+08:00;True|2024-07-26T18:02:13.5407348+08:00;True|2024-07-26T17:46:06.7922851+08:00;True|2024-07-26T15:50:48.6986834+08:00;True|2024-07-26T15:11:17.1696147+08:00;True|2024-07-26T13:58:49.6884964+08:00;True|2024-07-25T17:31:33.0050952+08:00;True|2024-07-25T17:09:12.7084910+08:00;True|2024-07-25T17:02:01.2617736+08:00;True|2024-07-25T16:59:51.6271873+08:00;True|2024-07-25T16:58:05.5249148+08:00;True|2024-07-25T14:14:10.2008367+08:00;False|2024-07-25T14:13:54.0300465+08:00;True|2024-07-25T14:08:57.0244482+08:00;True|2024-07-25T13:41:48.8201522+08:00;True|2024-07-25T10:41:30.7277553+08:00;True|2024-07-25T10:16:05.9105335+08:00;True|2024-07-24T15:31:54.7914854+08:00;True|2024-07-24T09:54:17.6182454+08:00;True|2024-07-23T17:01:18.1510211+08:00;True|2024-07-23T16:41:53.3366577+08:00;True|2024-07-23T16:07:25.4129335+08:00;True|2024-07-23T15:50:42.2437488+08:00;True|2024-07-23T15:19:00.1900116+08:00;True|2024-07-23T14:59:22.8551233+08:00;True|2024-07-23T14:19:55.1193373+08:00;True|2024-07-19T18:04:32.2703039+08:00;True|2024-07-19T15:56:25.4103701+08:00;True|2024-07-19T15:09:00.9662436+08:00;True|2024-07-19T15:05:35.7255851+08:00;True|2024-07-19T13:14:42.9559521+08:00;False|2024-07-19T11:37:52.4020673+08:00;True|2024-07-19T11:10:22.8661346+08:00;</History> | |||||
<LastFailureDetails /> | <LastFailureDetails /> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
</Project> | </Project> |
@@ -35,7 +35,7 @@ const attendanceRoolcallApi = { | |||||
}, | }, | ||||
/** 删除点名任务(删除关联点名数据) */ | /** 删除点名任务(删除关联点名数据) */ | ||||
delete(params: any) { | delete(params: any) { | ||||
return http.delete("delete", params); | |||||
return http.post("delete", params); | |||||
}, | }, | ||||
/** 删除点名任务(只可删除待处理的任务) */ | /** 删除点名任务(只可删除待处理的任务) */ | ||||
remove(params: any) { | remove(params: any) { | ||||
@@ -23,7 +23,7 @@ | |||||
<template #operation="scope"> | <template #operation="scope"> | ||||
<el-space> | <el-space> | ||||
<s-button link :opt="FormOptEnum.VIEW" @click="onView(scope.row)" /> | <s-button link :opt="FormOptEnum.VIEW" @click="onView(scope.row)" /> | ||||
<s-button link :opt="FormOptEnum.DELETE" @click="onDelete([scope.row.personId], `删除点名任务`)" /> | |||||
<s-button link :opt="FormOptEnum.DELETE" @click="onDelete([scope.row.id], `删除点名任务`)" /> | |||||
</el-space> | </el-space> | ||||
</template> | </template> | ||||
</ProTable> | </ProTable> | ||||
@@ -125,6 +125,18 @@ const columns: ColumnProps[] = [ | |||||
prop: "cameraName", | prop: "cameraName", | ||||
label: "摄像头名称" | label: "摄像头名称" | ||||
}, | }, | ||||
{ | |||||
prop: "depName", | |||||
label: "院系" | |||||
}, | |||||
{ | |||||
prop: "majorName", | |||||
label: "专业" | |||||
}, | |||||
{ | |||||
prop: "personSetName", | |||||
label: "班级" | |||||
}, | |||||
{ | { | ||||
prop: "continueTime", | prop: "continueTime", | ||||
label: "持续时间" | label: "持续时间" | ||||
@@ -171,7 +183,7 @@ const formRef = ref<InstanceType<typeof Form> | null>(null); | |||||
return | return | ||||
} | } | ||||
// 二次确认 => 请求api => 刷新表格 | // 二次确认 => 请求api => 刷新表格 | ||||
await useHandleData(attendanceRoolcallApi.delete, {id: ids.join(",") }, msg); | |||||
await useHandleData(attendanceRoolcallApi.delete, {ids: ids }, msg); | |||||
RefreshTable(); //刷新表格 | RefreshTable(); //刷新表格 | ||||
} | } | ||||
@@ -36,6 +36,7 @@ | |||||
value-format="YYYY-MM-DD" | value-format="YYYY-MM-DD" | ||||
type="date" | type="date" | ||||
placeholder="选择查询日期" | placeholder="选择查询日期" | ||||
:disabled-date="disabledDate" | |||||
@change="retrunTimeChange" | @change="retrunTimeChange" | ||||
> | > | ||||
</el-date-picker> | </el-date-picker> | ||||
@@ -115,6 +116,9 @@ const retrunTimeChange = () => { | |||||
proTable.value!.searchParam.ReturnTime = ReturnTime.value || ReturnTimeDefault; | proTable.value!.searchParam.ReturnTime = ReturnTime.value || ReturnTimeDefault; | ||||
proTable.value!.search(); | proTable.value!.search(); | ||||
}; | }; | ||||
const disabledDate = (time: Date) => { | |||||
return time.getTime() > Date.now(); | |||||
}; | |||||
// 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数) | // 获取 ProTable 元素,调用其获取刷新数据方法(还能获取到当前查询参数,方便导出携带参数) | ||||
// 表格配置项 | // 表格配置项 | ||||
const columns: ColumnProps[] = [ | const columns: ColumnProps[] = [ | ||||
@@ -31,36 +31,40 @@ | |||||
<CaretBottom v-if="cate == 2" color="#fff" width="11px" /> | <CaretBottom v-if="cate == 2" color="#fff" width="11px" /> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<ul v-if="cate == 1"> | |||||
<li | |||||
v-for="(item, index) in areaList" | |||||
:class="{ active: item.id == areaId }" | |||||
:key="index" | |||||
class="wrap1" | |||||
@click="areaItemClick(item)" | |||||
:title="item.name" | |||||
> | |||||
{{ item.name }} | |||||
</li> | |||||
<template v-if="!areaList.length"> | |||||
<li class="wrap1" style="border: none">暂无区域</li> | |||||
</template> | |||||
</ul> | |||||
<ul v-if="cate == 2"> | |||||
<li | |||||
v-for="(item, index) in deviceList" | |||||
:class="{ active: item.sensorId == sensorId }" | |||||
:key="index" | |||||
class="wrap1" | |||||
@click="itemClick(item)" | |||||
:title="item.sensorName" | |||||
> | |||||
{{ item.sensorName }} | |||||
</li> | |||||
<template v-if="!deviceList.length"> | |||||
<li class="wrap1" style="border: none">暂无设备</li> | |||||
</template> | |||||
</ul> | |||||
<div v-if="cate == 1" style="height: calc(100% - 46px); overflow-y: auto"> | |||||
<ul> | |||||
<li | |||||
v-for="(item, index) in areaList" | |||||
:class="{ active: item.id == areaId }" | |||||
:key="index" | |||||
class="wrap1" | |||||
@click="areaItemClick(item)" | |||||
:title="item.name + ' ( ' + item.cameraInfos.length + ' ) '" | |||||
> | |||||
{{ item.name }} ( {{ item.cameraInfos.length }} ) | |||||
</li> | |||||
<template v-if="!areaList.length"> | |||||
<li class="wrap1" style="border: none">暂无区域</li> | |||||
</template> | |||||
</ul> | |||||
</div> | |||||
<div v-if="cate == 2" style="height: calc(100% - 46px); overflow-y: auto"> | |||||
<ul> | |||||
<li | |||||
v-for="(item, index) in deviceList" | |||||
:class="{ active: item.sensorId == sensorId }" | |||||
:key="index" | |||||
class="wrap1" | |||||
@click="itemClick(item)" | |||||
:title="item.sensorName" | |||||
> | |||||
{{ item.sensorName }} | |||||
</li> | |||||
<template v-if="!deviceList.length"> | |||||
<li class="wrap1" style="border: none">暂无设备</li> | |||||
</template> | |||||
</ul> | |||||
</div> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</template> | </template> | ||||
@@ -7,6 +7,7 @@ | |||||
<div class="main-box"> | <div class="main-box"> | ||||
<!-- :request-api="userManageClothApi.getList" --> | <!-- :request-api="userManageClothApi.getList" --> | ||||
<TreeFilter | <TreeFilter | ||||
:key="treeKey" | |||||
ref="treeFilter" | ref="treeFilter" | ||||
label="clothSetName" | label="clothSetName" | ||||
id="clothSetId" | id="clothSetId" | ||||
@@ -87,6 +88,7 @@ const faceUrl = ref(''); | |||||
const visible = ref(false); //是否显示人员表单 | const visible = ref(false); //是否显示人员表单 | ||||
const proTable = ref<ProTableInstance>(); | const proTable = ref<ProTableInstance>(); | ||||
const treeFilter = ref<any>({}); | const treeFilter = ref<any>({}); | ||||
const treeKey = ref(1234); | |||||
const userStore = useUserStore(); | const userStore = useUserStore(); | ||||
const { accessToken } = userStore; | const { accessToken } = userStore; | ||||
const tableData = ref<any>([]) | const tableData = ref<any>([]) | ||||
@@ -161,6 +163,7 @@ const RefreshTable = () => { | |||||
} | } | ||||
// 刷新表格+树 | // 刷新表格+树 | ||||
const RefreshTree = async() => { | const RefreshTree = async() => { | ||||
treeKey.value = Math.random(); | |||||
await getTree(); //刷新树形筛选器 | await getTree(); //刷新树形筛选器 | ||||
await getList(clothSetId.value) | await getList(clothSetId.value) | ||||
} | } | ||||
@@ -185,7 +188,8 @@ const getList = (clothSetId:any)=>{ | |||||
const getTree =async ()=>{ | const getTree =async ()=>{ | ||||
const { data }:any = await userManageClothApi.getList({}); | const { data }:any = await userManageClothApi.getList({}); | ||||
treeData.value = data; | treeData.value = data; | ||||
if(!clothSetId.value ){ | |||||
// showTree.value = true | |||||
if(!clothSetId.value){ | |||||
clothSetId.value = data[0].clothSetId.toString() | clothSetId.value = data[0].clothSetId.toString() | ||||
} | } | ||||
@@ -68,6 +68,8 @@ function onOpen(props: FormProps.Base<SysUserPersonnel.SysUserPerInfo>) { | |||||
if (props.record.personId) { | if (props.record.personId) { | ||||
//如果传了id,就去请求api获取record | //如果传了id,就去请求api获取record | ||||
userManagePersonnelApi.detail({ id: props.record.personId }).then((res: any) => { | userManagePersonnelApi.detail({ id: props.record.personId }).then((res: any) => { | ||||
if (!res.data.majorId) res.data.majorId = ""; | |||||
if (!res.data.depId) res.data.depId = ""; | |||||
sysUserProps.record = res.data; | sysUserProps.record = res.data; | ||||
}); | }); | ||||
} | } | ||||
@@ -46,7 +46,7 @@ | |||||
</template> | </template> | ||||
</el-upload> | </el-upload> | ||||
</el-dropdown-item> | </el-dropdown-item> | ||||
<el-dropdown-item :command="command(scope.row, cmdEnum.UnderpantsUnBinding)"> | |||||
<el-dropdown-item v-if="scope.row.personSetId" :command="command(scope.row, cmdEnum.UnderpantsUnBinding)"> | |||||
{{ cmdEnum.UnderpantsUnBinding }} | {{ cmdEnum.UnderpantsUnBinding }} | ||||
</el-dropdown-item> | </el-dropdown-item> | ||||
</el-dropdown-menu> | </el-dropdown-menu> | ||||
@@ -93,25 +93,35 @@ const onTimeSubmit = ()=>{ | |||||
startTime: timeForm.dateArr[0], | startTime: timeForm.dateArr[0], | ||||
endTime: timeForm.dateArr[1], | endTime: timeForm.dateArr[1], | ||||
}).then((res:any) => { | }).then((res:any) => { | ||||
console.log(res,"....UTF-8''"); | |||||
const filename:any = ref() | |||||
filename.value = window.decodeURI(res.headers["content-disposition"].split("=")[2]); | |||||
filename.value = filename.value.slice(7,-1) | |||||
let blobUrl = window.URL.createObjectURL(res.data); | |||||
const a = document.createElement('a'); | |||||
a.style.display = 'none'; | |||||
a.setAttribute("target", "_blank"); | |||||
a.download = filename.value | |||||
a.href = blobUrl; | |||||
a.click(); | |||||
a.remove(); | |||||
ElMessage({ | |||||
message: '导出成功', | |||||
type: 'success' | |||||
}); | |||||
closeTime(); | |||||
}); | |||||
if(res.headers['content-disposition']){ | |||||
const filename:any = ref() | |||||
filename.value = window.decodeURI(res.headers["content-disposition"].split("=")[2]); | |||||
filename.value = filename.value.slice(7,-1) | |||||
let blobUrl = window.URL.createObjectURL(res.data); | |||||
const a = document.createElement('a'); | |||||
a.style.display = 'none'; | |||||
a.setAttribute("target", "_blank"); | |||||
a.download = filename.value | |||||
a.href = blobUrl; | |||||
a.click(); | |||||
a.remove(); | |||||
ElMessage({ | |||||
message: '导出成功', | |||||
type: 'success' | |||||
}); | |||||
closeTime(); | |||||
}else{ | |||||
const fileReader:any = new FileReader() | |||||
fileReader.readAsText(new Blob([res.data], { type: 'application/octet-stream' }), 'utf-8') | |||||
fileReader.onload = () => { | |||||
const result = JSON.parse(fileReader.result) | |||||
ElMessage({ | |||||
message: result.msg, | |||||
type: 'error' | |||||
}); | |||||
} | |||||
} | |||||
}) | |||||
} else { | } else { | ||||
return false; | return false; | ||||
@@ -21,9 +21,13 @@ | |||||
v-for="(item, index) in options" :key="index" :label="item.label" :name="item.value"> | v-for="(item, index) in options" :key="index" :label="item.label" :name="item.value"> | ||||
</u-checkbox> | </u-checkbox> | ||||
</u-checkbox-group> | </u-checkbox-group> | ||||
<view style="padding: 36rpx 50rpx"> | |||||
<view style="padding: 36rpx 50rpx;display:flex"> | |||||
<u-button @click="cancel" type="info" | |||||
customStyle="border-radius: 45rpx;height: 90rpx;font-weight: 700;font-size: 32rpx;color:#666;" | |||||
text="取消选择" v-if="value_"></u-button> | |||||
<view style="width: 36rpx;" v-if="value_"></view> | |||||
<u-button @click="cofirm" type="primary" | <u-button @click="cofirm" type="primary" | ||||
style="border-radius: 45rpx;height: 90rpx;font-weight: 700;font-size: 32rpx;" | |||||
customStyle="border-radius: 45rpx;height: 90rpx;font-weight: 700;font-size: 32rpx;" | |||||
text="确定"></u-button> | text="确定"></u-button> | ||||
</view> | </view> | ||||
</view> | </view> | ||||
@@ -135,6 +139,21 @@ | |||||
} | } | ||||
this.close() | this.close() | ||||
}, | }, | ||||
cancel(){ | |||||
if (!this.multiple) { | |||||
this.value_ = '' | |||||
this.$emit("input", this.value_) | |||||
this.$emit("change", this.value_) | |||||
let obj = this.options.find(e1 => e1.value == this.value_) | |||||
if (obj) { | |||||
this.$emit("update:title", this.title_) | |||||
} else { | |||||
this.$emit("update:title", '') | |||||
} | |||||
} else { | |||||
this.value_ = [] | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
</script> | </script> | ||||
@@ -162,6 +162,7 @@ | |||||
height: calc(100% - 880rpx); | height: calc(100% - 880rpx); | ||||
margin-top: 46rpx; | margin-top: 46rpx; | ||||
padding: 60rpx 60rpx 0 60rpx; | padding: 60rpx 60rpx 0 60rpx; | ||||
min-height: 450rpx; | |||||
.title { | .title { | ||||
color: #333; | color: #333; | ||||
@@ -15,6 +15,9 @@ | |||||
</view> | </view> | ||||
<view style="height:calc(100% - 200rpx);overflow: auto;"> | <view style="height:calc(100% - 200rpx);overflow: auto;"> | ||||
<view class="list"> | <view class="list"> | ||||
<view v-show="cateList.length&&!list.find(e=>cateList[cate].show(e))" style="color: rgb(96, 98, 102);margin-top:36rpx;font-size: 26rpx;text-align: center;"> | |||||
暂无数据 | |||||
</view> | |||||
<template v-for="(item, index) in list"> | <template v-for="(item, index) in list"> | ||||
<view class="item" @click="popupShow(item)" :key="index" v-show="cateList.length&&cateList[cate].show(item)"> | <view class="item" @click="popupShow(item)" :key="index" v-show="cateList.length&&cateList[cate].show(item)"> | ||||
<view class="right"> | <view class="right"> | ||||
@@ -45,8 +48,10 @@ | |||||
</view> | </view> | ||||
<u-popup :show="show" mode="center" :round="10"> | <u-popup :show="show" mode="center" :round="10"> | ||||
<view class="popupInfo"> | <view class="popupInfo"> | ||||
<image :src="popupInfo.faceUrl" mode="widthFix" style="width: 480rpx;border-radius:10rpx"> | |||||
</image> | |||||
<view style="width: 480rpx;overflow-y: auto;max-height: 660rpx;"> | |||||
<image :src="popupInfo.faceUrl" mode="widthFix" style="width: 480rpx;border-radius:10rpx;"> | |||||
</image> | |||||
</view> | |||||
<view class="top"> | <view class="top"> | ||||
<view class="status" :style="{backgroundColor:cate == 0?'#0FAF76':cate == 1?'#EF2D2D':'#F49D19' }"> | <view class="status" :style="{backgroundColor:cate == 0?'#0FAF76':cate == 1?'#EF2D2D':'#F49D19' }"> | ||||
{{cateList.find(e=>e.value == cate)?cateList.find(e=>e.value == cate).label:''}} | {{cateList.find(e=>e.value == cate)?cateList.find(e=>e.value == cate).label:''}} | ||||
@@ -2,7 +2,7 @@ | |||||
<view style="height: 100%;"> | <view style="height: 100%;"> | ||||
<view class="topBox"> | <view class="topBox"> | ||||
<SelectRadio v-model="search.CameraId" align="center" placeholder="请选择摄像头" @change="refresh" | <SelectRadio v-model="search.CameraId" align="center" placeholder="请选择摄像头" @change="refresh" | ||||
:options="allOptions.monitorList" /> | |||||
:options="[{value:'',label:'全部'},...allOptions.monitorList]" /> | |||||
</view> | </view> | ||||
<u-empty marginTop="100rpx" :show="list.length == 0&&status == 'nomore'" mode="list" text="暂无数据"></u-empty> | <u-empty marginTop="100rpx" :show="list.length == 0&&status == 'nomore'" mode="list" text="暂无数据"></u-empty> | ||||
<u-list @scrolltolower="scrolltolower" style="height: calc(100% - 150rpx);"> | <u-list @scrolltolower="scrolltolower" style="height: calc(100% - 150rpx);"> | ||||